diff --git a/composer.json b/composer.json deleted file mode 100644 index 797156678b..0000000000 --- a/composer.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "name": "easysoft/zentaopms", - "description": "Zentao is an agile(scrum) project management system/tool, Free Upgrade Forever!​", - "type": "project", - "license": "ZPL", - "require": { - "php": "~5.2||~7.0", - "ext-json" : "*", - "ext-mbstring" : "*", - "ext-curl" : "*" - } -} diff --git a/config/zentaopms.php b/config/zentaopms.php index 6a14237d24..a59c81cb38 100644 --- a/config/zentaopms.php +++ b/config/zentaopms.php @@ -379,6 +379,7 @@ $config->objectTables['kanbangroup'] = TABLE_KANBANGROUP; $config->objectTables['kanbancard'] = TABLE_KANBANCARD; $config->objectTables['sonarqube'] = TABLE_PIPELINE; $config->objectTables['gitea'] = TABLE_PIPELINE; +$config->objectTables['gogs'] = TABLE_PIPELINE; $config->objectTables['gitlab'] = TABLE_PIPELINE; $config->objectTables['jebkins'] = TABLE_PIPELINE; $config->objectTables['stage'] = TABLE_STAGE; @@ -387,7 +388,7 @@ $config->objectTables['repo'] = TABLE_REPO; $config->newFeatures = array('introduction', 'tutorial', 'youngBlueTheme', 'visions'); -$config->pipelineTypeList = array('gitlab', 'sonarqube', 'jenkins', 'gitea'); +$config->pipelineTypeList = array('gitlab', 'gogs', 'gitea', 'jenkins', 'sonarqube'); /* Program privs.*/ $config->programPriv = new stdclass(); diff --git a/db/update17.5.sql b/db/update17.5.sql new file mode 100644 index 0000000000..bd9371892f --- /dev/null +++ b/db/update17.5.sql @@ -0,0 +1,249 @@ +ALTER TABLE `zt_bug` MODIFY COLUMN `os` varchar(255) NOT NULL default ''; +ALTER TABLE `zt_bug` MODIFY COLUMN `browser` varchar(255) NOT NULL default ''; + +INSERT IGNORE INTO `zt_lang` (`lang`, `module`, `section`, `key`, `value`, `system`, `vision`) VALUES +('zh-cn', 'bug', 'browserList', 'all', '全部', '1', 'rnd'), +('zh-cn', 'bug', 'browserList', 'chrome', 'Chrome', '1', 'rnd'), +('zh-cn', 'bug', 'browserList', 'edge', 'Edge', '1', 'rnd'), +('zh-cn', 'bug', 'browserList', 'ie', 'IE系列', '1', 'rnd'), +('zh-cn', 'bug', 'browserList', 'ie11', 'IE11', '1', 'rnd'), +('zh-cn', 'bug', 'browserList', 'ie10', 'IE10', '1', 'rnd'), +('zh-cn', 'bug', 'browserList', 'ie9', 'IE9', '1', 'rnd'), +('zh-cn', 'bug', 'browserList', 'ie8', 'IE8', '1', 'rnd'), +('zh-cn', 'bug', 'browserList', 'ie7', 'IE7', '1', 'rnd'), +('zh-cn', 'bug', 'browserList', 'ie6', 'IE6', '1', 'rnd'), +('zh-cn', 'bug', 'browserList', 'firefox', 'firefox系列', '1', 'rnd'), +('zh-cn', 'bug', 'browserList', 'firefox4', 'firefox4', '1', 'rnd'), +('zh-cn', 'bug', 'browserList', 'firefox3', 'firefox3', '1', 'rnd'), +('zh-cn', 'bug', 'browserList', 'firefox2', 'firefox2', '1', 'rnd'), +('zh-cn', 'bug', 'browserList', 'opera', 'Opera系列', '1', 'rnd'), +('zh-cn', 'bug', 'browserList', 'opera11', 'opera11', '1', 'rnd'), +('zh-cn', 'bug', 'browserList', 'opera10', 'opera10', '1', 'rnd'), +('zh-cn', 'bug', 'browserList', 'opera9', 'opera9', '1', 'rnd'), +('zh-cn', 'bug', 'browserList', 'safari', 'safari', '1', 'rnd'), +('zh-cn', 'bug', 'browserList', '360', '360浏览器', '1', 'rnd'), +('zh-cn', 'bug', 'browserList', 'qq', 'QQ浏览器', '1', 'rnd'), +('zh-cn', 'bug', 'browserList', 'maxthon', '遨游', '1', 'rnd'), +('zh-cn', 'bug', 'browserList', 'uc', 'UC', '1', 'rnd'), +('zh-cn', 'bug', 'browserList', 'other', '其他', '1', 'rnd'), +('zh-tw', 'bug', 'browserList', 'all', '全部', '1', 'rnd'), +('zh-tw', 'bug', 'browserList', 'chrome', 'Chrome', '1', 'rnd'), +('zh-tw', 'bug', 'browserList', 'edge', 'Edge', '1', 'rnd'), +('zh-tw', 'bug', 'browserList', 'ie', 'IE系列', '1', 'rnd'), +('zh-tw', 'bug', 'browserList', 'ie11', 'IE11', '1', 'rnd'), +('zh-tw', 'bug', 'browserList', 'ie10', 'IE10', '1', 'rnd'), +('zh-tw', 'bug', 'browserList', 'ie9', 'IE9', '1', 'rnd'), +('zh-tw', 'bug', 'browserList', 'ie8', 'IE8', '1', 'rnd'), +('zh-tw', 'bug', 'browserList', 'ie7', 'IE7', '1', 'rnd'), +('zh-tw', 'bug', 'browserList', 'ie6', 'IE6', '1', 'rnd'), +('zh-tw', 'bug', 'browserList', 'firefox', 'firefox系列', '1', 'rnd'), +('zh-tw', 'bug', 'browserList', 'firefox4', 'firefox4', '1', 'rnd'), +('zh-tw', 'bug', 'browserList', 'firefox3', 'firefox3', '1', 'rnd'), +('zh-tw', 'bug', 'browserList', 'firefox2', 'firefox2', '1', 'rnd'), +('zh-tw', 'bug', 'browserList', 'opera', 'Opera系列', '1', 'rnd'), +('zh-tw', 'bug', 'browserList', 'opera11', 'opera11', '1', 'rnd'), +('zh-tw', 'bug', 'browserList', 'opera10', 'opera10', '1', 'rnd'), +('zh-tw', 'bug', 'browserList', 'opera9', 'opera9', '1', 'rnd'), +('zh-tw', 'bug', 'browserList', 'safari', 'safari', '1', 'rnd'), +('zh-tw', 'bug', 'browserList', '360', '360瀏覽器', '1', 'rnd'), +('zh-tw', 'bug', 'browserList', 'qq', 'QQ瀏覽器', '1', 'rnd'), +('zh-tw', 'bug', 'browserList', 'maxthon', '遨游', '1', 'rnd'), +('zh-tw', 'bug', 'browserList', 'uc', 'UC', '1', 'rnd'), +('zh-tw', 'bug', 'browserList', 'other', '其他', '1', 'rnd'), +('en', 'bug', 'browserList', 'all', 'All', '1', 'rnd'), +('en', 'bug', 'browserList', 'chrome', 'Chrome', '1', 'rnd'), +('en', 'bug', 'browserList', 'edge', 'Edge', '1', 'rnd'), +('en', 'bug', 'browserList', 'ie', 'IE series', '1', 'rnd'), +('en', 'bug', 'browserList', 'ie11', 'IE11', '1', 'rnd'), +('en', 'bug', 'browserList', 'ie10', 'IE10', '1', 'rnd'), +('en', 'bug', 'browserList', 'ie9', 'IE9', '1', 'rnd'), +('en', 'bug', 'browserList', 'ie8', 'IE8', '1', 'rnd'), +('en', 'bug', 'browserList', 'ie7', 'IE7', '1', 'rnd'), +('en', 'bug', 'browserList', 'ie6', 'IE6', '1', 'rnd'), +('en', 'bug', 'browserList', 'firefox', 'Firefox series', '1', 'rnd'), +('en', 'bug', 'browserList', 'firefox4', 'Firefox4', '1', 'rnd'), +('en', 'bug', 'browserList', 'firefox3', 'Firefox3', '1', 'rnd'), +('en', 'bug', 'browserList', 'firefox2', 'Firefox2', '1', 'rnd'), +('en', 'bug', 'browserList', 'opera', 'Opera series', '1', 'rnd'), +('en', 'bug', 'browserList', 'opera11', 'Opera11', '1', 'rnd'), +('en', 'bug', 'browserList', 'opera10', 'Opera10', '1', 'rnd'), +('en', 'bug', 'browserList', 'opera9', 'Opera9', '1', 'rnd'), +('en', 'bug', 'browserList', 'safari', 'Safari', '1', 'rnd'), +('en', 'bug', 'browserList', '360', '360', '1', 'rnd'), +('en', 'bug', 'browserList', 'qq', 'QQ', '1', 'rnd'), +('en', 'bug', 'browserList', 'maxthon', 'Maxthon', '1', 'rnd'), +('en', 'bug', 'browserList', 'uc', 'UC', '1', 'rnd'), +('en', 'bug', 'browserList', 'other', 'Others', '1', 'rnd'), +('fr', 'bug', 'browserList', 'all', 'Tous', '1', 'rnd'), +('fr', 'bug', 'browserList', 'chrome', 'Chrome', '1', 'rnd'), +('fr', 'bug', 'browserList', 'edge', 'Edge', '1', 'rnd'), +('fr', 'bug', 'browserList', 'ie', 'IE series', '1', 'rnd'), +('fr', 'bug', 'browserList', 'ie11', 'IE11', '1', 'rnd'), +('fr', 'bug', 'browserList', 'ie10', 'IE10', '1', 'rnd'), +('fr', 'bug', 'browserList', 'ie9', 'IE9', '1', 'rnd'), +('fr', 'bug', 'browserList', 'ie8', 'IE8', '1', 'rnd'), +('fr', 'bug', 'browserList', 'ie7', 'IE7', '1', 'rnd'), +('fr', 'bug', 'browserList', 'ie6', 'IE6', '1', 'rnd'), +('fr', 'bug', 'browserList', 'firefox', 'Firefox series', '1', 'rnd'), +('fr', 'bug', 'browserList', 'firefox4', 'Firefox4', '1', 'rnd'), +('fr', 'bug', 'browserList', 'firefox3', 'Firefox3', '1', 'rnd'), +('fr', 'bug', 'browserList', 'firefox2', 'Firefox2', '1', 'rnd'), +('fr', 'bug', 'browserList', 'opera', 'Opera series', '1', 'rnd'), +('fr', 'bug', 'browserList', 'opera11', 'Opera11', '1', 'rnd'), +('fr', 'bug', 'browserList', 'opera10', 'Opera10', '1', 'rnd'), +('fr', 'bug', 'browserList', 'opera9', 'Opera9', '1', 'rnd'), +('fr', 'bug', 'browserList', 'safari', 'Safari', '1', 'rnd'), +('fr', 'bug', 'browserList', '360', '360', '1', 'rnd'), +('fr', 'bug', 'browserList', 'qq', 'QQ', '1', 'rnd'), +('fr', 'bug', 'browserList', 'maxthon', 'Maxthon', '1', 'rnd'), +('fr', 'bug', 'browserList', 'uc', 'UC', '1', 'rnd'), +('fr', 'bug', 'browserList', 'other', 'Autres', '1', 'rnd'), +('de', 'bug', 'browserList', 'all', 'Alle', '1', 'rnd'), +('de', 'bug', 'browserList', 'chrome', 'Chrome', '1', 'rnd'), +('de', 'bug', 'browserList', 'edge', 'Edge', '1', 'rnd'), +('de', 'bug', 'browserList', 'ie', 'IE series', '1', 'rnd'), +('de', 'bug', 'browserList', 'ie11', 'IE11', '1', 'rnd'), +('de', 'bug', 'browserList', 'ie10', 'IE10', '1', 'rnd'), +('de', 'bug', 'browserList', 'ie9', 'IE9', '1', 'rnd'), +('de', 'bug', 'browserList', 'ie8', 'IE8', '1', 'rnd'), +('de', 'bug', 'browserList', 'ie7', 'IE7', '1', 'rnd'), +('de', 'bug', 'browserList', 'ie6', 'IE6', '1', 'rnd'), +('de', 'bug', 'browserList', 'firefox', 'Firefox series', '1', 'rnd'), +('de', 'bug', 'browserList', 'firefox4', 'Firefox4', '1', 'rnd'), +('de', 'bug', 'browserList', 'firefox3', 'Firefox3', '1', 'rnd'), +('de', 'bug', 'browserList', 'firefox2', 'Firefox2', '1', 'rnd'), +('de', 'bug', 'browserList', 'opera', 'Opera series', '1', 'rnd'), +('de', 'bug', 'browserList', 'opera11', 'Opera11', '1', 'rnd'), +('de', 'bug', 'browserList', 'opera10', 'Opera10', '1', 'rnd'), +('de', 'bug', 'browserList', 'opera9', 'Opera9', '1', 'rnd'), +('de', 'bug', 'browserList', 'safari', 'Safari', '1', 'rnd'), +('de', 'bug', 'browserList', '360', '360', '1', 'rnd'), +('de', 'bug', 'browserList', 'qq', 'QQ', '1', 'rnd'), +('de', 'bug', 'browserList', 'maxthon', 'Maxthon', '1', 'rnd'), +('de', 'bug', 'browserList', 'uc', 'UC', '1', 'rnd'), +('de', 'bug', 'browserList', 'other', 'Andere', '1', 'rnd'), +('zh-cn', 'bug', 'osList', 'all', '全部', '1', 'rnd'), +('zh-cn', 'bug', 'osList', 'windows', 'Windows', '1', 'rnd'), +('zh-cn', 'bug', 'osList', 'win11', 'Windows 11', '1', 'rnd'), +('zh-cn', 'bug', 'osList', 'win10', 'Windows 10', '1', 'rnd'), +('zh-cn', 'bug', 'osList', 'win8', 'Windows 8', '1', 'rnd'), +('zh-cn', 'bug', 'osList', 'win7', 'Windows 7', '1', 'rnd'), +('zh-cn', 'bug', 'osList', 'winxp', 'Windows XP', '1', 'rnd'), +('zh-cn', 'bug', 'osList', 'osx', 'Mac OS', '1', 'rnd'), +('zh-cn', 'bug', 'osList', 'android', 'Android', '1', 'rnd'), +('zh-cn', 'bug', 'osList', 'ios', 'IOS', '1', 'rnd'), +('zh-cn', 'bug', 'osList', 'linux', 'Linux', '1', 'rnd'), +('zh-cn', 'bug', 'osList', 'ubuntu', 'Ubuntu', '1', 'rnd'), +('zh-cn', 'bug', 'osList', 'chromeos', 'Chrome OS', '1', 'rnd'), +('zh-cn', 'bug', 'osList', 'fedora', 'Fedora', '1', 'rnd'), +('zh-cn', 'bug', 'osList', 'vista', 'Windows Vista', '1', 'rnd'), +('zh-cn', 'bug', 'osList', 'win2012', 'Windows 2012', '1', 'rnd'), +('zh-cn', 'bug', 'osList', 'win2008', 'Windows 2008', '1', 'rnd'), +('zh-cn', 'bug', 'osList', 'win2003', 'Windows 2003', '1', 'rnd'), +('zh-cn', 'bug', 'osList', 'win2000', 'Windows 2000', '1', 'rnd'), +('zh-cn', 'bug', 'osList', 'wp8', 'WP8', '1', 'rnd'), +('zh-cn', 'bug', 'osList', 'wp7', 'WP7', '1', 'rnd'), +('zh-cn', 'bug', 'osList', 'symbian', 'Symbian', '1', 'rnd'), +('zh-cn', 'bug', 'osList', 'freebsd', 'FreeBSD', '1', 'rnd'), +('zh-cn', 'bug', 'osList', 'unix', 'Unix', '1', 'rnd'), +('zh-cn', 'bug', 'osList', 'others', '其他', '1', 'rnd'), +('zh-tw', 'bug', 'osList', 'all', '全部', '1', 'rnd'), +('zh-tw', 'bug', 'osList', 'windows', 'Windows', '1', 'rnd'), +('zh-tw', 'bug', 'osList', 'win11', 'Windows 11', '1', 'rnd'), +('zh-tw', 'bug', 'osList', 'win10', 'Windows 10', '1', 'rnd'), +('zh-tw', 'bug', 'osList', 'win8', 'Windows 8', '1', 'rnd'), +('zh-tw', 'bug', 'osList', 'win7', 'Windows 7', '1', 'rnd'), +('zh-tw', 'bug', 'osList', 'winxp', 'Windows XP', '1', 'rnd'), +('zh-tw', 'bug', 'osList', 'osx', 'Mac OS', '1', 'rnd'), +('zh-tw', 'bug', 'osList', 'android', 'Android', '1', 'rnd'), +('zh-tw', 'bug', 'osList', 'ios', 'IOS', '1', 'rnd'), +('zh-tw', 'bug', 'osList', 'linux', 'Linux', '1', 'rnd'), +('zh-tw', 'bug', 'osList', 'ubuntu', 'Ubuntu', '1', 'rnd'), +('zh-tw', 'bug', 'osList', 'chromeos', 'Chrome OS', '1', 'rnd'), +('zh-tw', 'bug', 'osList', 'fedora', 'Fedora', '1', 'rnd'), +('zh-tw', 'bug', 'osList', 'vista', 'Windows Vista', '1', 'rnd'), +('zh-tw', 'bug', 'osList', 'win2012', 'Windows 2012', '1', 'rnd'), +('zh-tw', 'bug', 'osList', 'win2008', 'Windows 2008', '1', 'rnd'), +('zh-tw', 'bug', 'osList', 'win2003', 'Windows 2003', '1', 'rnd'), +('zh-tw', 'bug', 'osList', 'win2000', 'Windows 2000', '1', 'rnd'), +('zh-tw', 'bug', 'osList', 'wp8', 'WP8', '1', 'rnd'), +('zh-tw', 'bug', 'osList', 'wp7', 'WP7', '1', 'rnd'), +('zh-tw', 'bug', 'osList', 'symbian', 'Symbian', '1', 'rnd'), +('zh-tw', 'bug', 'osList', 'freebsd', 'FreeBSD', '1', 'rnd'), +('zh-tw', 'bug', 'osList', 'unix', 'Unix', '1', 'rnd'), +('zh-tw', 'bug', 'osList', 'others', '其他', '1', 'rnd'), +('en', 'bug', 'osList', 'all', 'All', '1', 'rnd'), +('en', 'bug', 'osList', 'windows', 'Windows', '1', 'rnd'), +('en', 'bug', 'osList', 'win11', 'Windows 11', '1', 'rnd'), +('en', 'bug', 'osList', 'win10', 'Windows 10', '1', 'rnd'), +('en', 'bug', 'osList', 'win8', 'Windows 8', '1', 'rnd'), +('en', 'bug', 'osList', 'win7', 'Windows 7', '1', 'rnd'), +('en', 'bug', 'osList', 'winxp', 'Windows XP', '1', 'rnd'), +('en', 'bug', 'osList', 'osx', 'Mac OS', '1', 'rnd'), +('en', 'bug', 'osList', 'android', 'Android', '1', 'rnd'), +('en', 'bug', 'osList', 'ios', 'IOS', '1', 'rnd'), +('en', 'bug', 'osList', 'linux', 'Linux', '1', 'rnd'), +('en', 'bug', 'osList', 'ubuntu', 'Ubuntu', '1', 'rnd'), +('en', 'bug', 'osList', 'chromeos', 'Chrome OS', '1', 'rnd'), +('en', 'bug', 'osList', 'fedora', 'Fedora', '1', 'rnd'), +('en', 'bug', 'osList', 'vista', 'Windows Vista', '1', 'rnd'), +('en', 'bug', 'osList', 'win2012', 'Windows 2012', '1', 'rnd'), +('en', 'bug', 'osList', 'win2008', 'Windows 2008', '1', 'rnd'), +('en', 'bug', 'osList', 'win2003', 'Windows 2003', '1', 'rnd'), +('en', 'bug', 'osList', 'win2000', 'Windows 2000', '1', 'rnd'), +('en', 'bug', 'osList', 'wp8', 'WP8', '1', 'rnd'), +('en', 'bug', 'osList', 'wp7', 'WP7', '1', 'rnd'), +('en', 'bug', 'osList', 'symbian', 'Symbian', '1', 'rnd'), +('en', 'bug', 'osList', 'freebsd', 'FreeBSD', '1', 'rnd'), +('en', 'bug', 'osList', 'unix', 'Unix', '1', 'rnd'), +('en', 'bug', 'osList', 'others', 'Others', '1', 'rnd'), +('fr', 'bug', 'osList', 'all', 'Tous', '1', 'rnd'), +('fr', 'bug', 'osList', 'windows', 'Windows', '1', 'rnd'), +('fr', 'bug', 'osList', 'win11', 'Windows 11', '1', 'rnd'), +('fr', 'bug', 'osList', 'win10', 'Windows 10', '1', 'rnd'), +('fr', 'bug', 'osList', 'win8', 'Windows 8', '1', 'rnd'), +('fr', 'bug', 'osList', 'win7', 'Windows 7', '1', 'rnd'), +('fr', 'bug', 'osList', 'winxp', 'Windows XP', '1', 'rnd'), +('fr', 'bug', 'osList', 'osx', 'Mac OS', '1', 'rnd'), +('fr', 'bug', 'osList', 'android', 'Android', '1', 'rnd'), +('fr', 'bug', 'osList', 'ios', 'IOS', '1', 'rnd'), +('fr', 'bug', 'osList', 'linux', 'Linux', '1', 'rnd'), +('fr', 'bug', 'osList', 'ubuntu', 'Ubuntu', '1', 'rnd'), +('fr', 'bug', 'osList', 'chromeos', 'Chrome OS', '1', 'rnd'), +('fr', 'bug', 'osList', 'fedora', 'Fedora', '1', 'rnd'), +('fr', 'bug', 'osList', 'vista', 'Windows Vista', '1', 'rnd'), +('fr', 'bug', 'osList', 'win2012', 'Windows 2012', '1', 'rnd'), +('fr', 'bug', 'osList', 'win2008', 'Windows 2008', '1', 'rnd'), +('fr', 'bug', 'osList', 'win2003', 'Windows 2003', '1', 'rnd'), +('fr', 'bug', 'osList', 'win2000', 'Windows 2000', '1', 'rnd'), +('fr', 'bug', 'osList', 'wp8', 'WP8', '1', 'rnd'), +('fr', 'bug', 'osList', 'wp7', 'WP7', '1', 'rnd'), +('fr', 'bug', 'osList', 'symbian', 'Symbian', '1', 'rnd'), +('fr', 'bug', 'osList', 'freebsd', 'FreeBSD', '1', 'rnd'), +('fr', 'bug', 'osList', 'unix', 'Unix', '1', 'rnd'), +('fr', 'bug', 'osList', 'others', 'Autres', '1', 'rnd'), +('de', 'bug', 'osList', 'all', 'Alle', '1', 'rnd'), +('de', 'bug', 'osList', 'windows', 'Windows', '1', 'rnd'), +('de', 'bug', 'osList', 'win11', 'Windows 11', '1', 'rnd'), +('de', 'bug', 'osList', 'win10', 'Windows 10', '1', 'rnd'), +('de', 'bug', 'osList', 'win8', 'Windows 8', '1', 'rnd'), +('de', 'bug', 'osList', 'win7', 'Windows 7', '1', 'rnd'), +('de', 'bug', 'osList', 'winxp', 'Windows XP', '1', 'rnd'), +('de', 'bug', 'osList', 'osx', 'Mac OS', '1', 'rnd'), +('de', 'bug', 'osList', 'android', 'Android', '1', 'rnd'), +('de', 'bug', 'osList', 'ios', 'IOS', '1', 'rnd'), +('de', 'bug', 'osList', 'linux', 'Linux', '1', 'rnd'), +('de', 'bug', 'osList', 'ubuntu', 'Ubuntu', '1', 'rnd'), +('de', 'bug', 'osList', 'chromeos', 'Chrome OS', '1', 'rnd'), +('de', 'bug', 'osList', 'fedora', 'Fedora', '1', 'rnd'), +('de', 'bug', 'osList', 'vista', 'Windows Vista', '1', 'rnd'), +('de', 'bug', 'osList', 'win2012', 'Windows 2012', '1', 'rnd'), +('de', 'bug', 'osList', 'win2008', 'Windows 2008', '1', 'rnd'), +('de', 'bug', 'osList', 'win2003', 'Windows 2003', '1', 'rnd'), +('de', 'bug', 'osList', 'win2000', 'Windows 2000', '1', 'rnd'), +('de', 'bug', 'osList', 'wp8', 'WP8', '1', 'rnd'), +('de', 'bug', 'osList', 'wp7', 'WP7', '1', 'rnd'), +('de', 'bug', 'osList', 'symbian', 'Symbian', '1', 'rnd'), +('de', 'bug', 'osList', 'freebsd', 'FreeBSD', '1', 'rnd'), +('de', 'bug', 'osList', 'unix', 'Unix', '1', 'rnd'), +('de', 'bug', 'osList', 'others', 'Andere', '1', 'rnd'); diff --git a/db/update17.6.sql b/db/update17.6.sql new file mode 100644 index 0000000000..26a955a070 --- /dev/null +++ b/db/update17.6.sql @@ -0,0 +1,2 @@ +ALTER TABLE `zt_job` ADD `lastSyncDate` datetime DEFAULT NULL AFTER `lastTag`; +INSERT INTO `zt_cron` (`m`, `h`, `dom`, `mon`, `dow`, `command`, `remark`, `type`, `buildin`, `status`, `lastTime`) VALUES ('*/5', '*', '*', '*', '*', 'moduleName=compile&methodName=syncCompile', '定时同步构建记录', 'zentao', 1, 'normal', '0000-00-00 00:00:00'); diff --git a/db/zentao.sql b/db/zentao.sql index ea3ef51ca0..dffcaf2104 100755 --- a/db/zentao.sql +++ b/db/zentao.sql @@ -262,8 +262,8 @@ CREATE TABLE IF NOT EXISTS `zt_bug` ( `severity` tinyint(4) NOT NULL default '0', `pri` tinyint(3) unsigned NOT NULL, `type` varchar(30) NOT NULL default '', - `os` varchar(30) NOT NULL default '', - `browser` varchar(30) NOT NULL default '', + `os` varchar(255) NOT NULL default '', + `browser` varchar(255) NOT NULL default '', `hardware` varchar(30) NOT NULL, `found` varchar(30) NOT NULL default '', `steps` mediumtext NOT NULL, diff --git a/extension/lite/block/ext/view/printassigntomeblock.lite.html.hook.php b/extension/lite/block/ext/view/printassigntomeblock.lite.html.hook.php index ddfa6fcaa1..e69de29bb2 100644 --- a/extension/lite/block/ext/view/printassigntomeblock.lite.html.hook.php +++ b/extension/lite/block/ext/view/printassigntomeblock.lite.html.hook.php @@ -1,3 +0,0 @@ - diff --git a/extension/lite/common/ext/lang/de/lite.php b/extension/lite/common/ext/lang/de/lite.php index 6146068c76..5096451099 100644 --- a/extension/lite/common/ext/lang/de/lite.php +++ b/extension/lite/common/ext/lang/de/lite.php @@ -51,6 +51,7 @@ else } $lang->task->common = 'Task'; +$lang->dashboard = isset($lang->dashboard->common) ? $lang->dashboard->common : $lang->dashboard; /* My menu. */ $lang->my->menu = new stdclass(); diff --git a/extension/lite/common/ext/lang/en/lite.php b/extension/lite/common/ext/lang/en/lite.php index 6146068c76..5096451099 100644 --- a/extension/lite/common/ext/lang/en/lite.php +++ b/extension/lite/common/ext/lang/en/lite.php @@ -51,6 +51,7 @@ else } $lang->task->common = 'Task'; +$lang->dashboard = isset($lang->dashboard->common) ? $lang->dashboard->common : $lang->dashboard; /* My menu. */ $lang->my->menu = new stdclass(); diff --git a/extension/lite/common/ext/lang/fr/lite.php b/extension/lite/common/ext/lang/fr/lite.php index 6146068c76..5096451099 100644 --- a/extension/lite/common/ext/lang/fr/lite.php +++ b/extension/lite/common/ext/lang/fr/lite.php @@ -51,6 +51,7 @@ else } $lang->task->common = 'Task'; +$lang->dashboard = isset($lang->dashboard->common) ? $lang->dashboard->common : $lang->dashboard; /* My menu. */ $lang->my->menu = new stdclass(); diff --git a/extension/lite/common/ext/lang/zh-cn/lite.php b/extension/lite/common/ext/lang/zh-cn/lite.php index 69a02f326e..c74deb3e3f 100644 --- a/extension/lite/common/ext/lang/zh-cn/lite.php +++ b/extension/lite/common/ext/lang/zh-cn/lite.php @@ -51,6 +51,7 @@ else } $lang->task->common = '任务'; +$lang->dashboard = isset($lang->dashboard->common) ? $lang->dashboard->common : $lang->dashboard; /* My menu. */ $lang->my->menu = new stdclass(); diff --git a/framework/base/helper.class.php b/framework/base/helper.class.php index c787cc08fe..b39d02977d 100644 --- a/framework/base/helper.class.php +++ b/framework/base/helper.class.php @@ -77,7 +77,12 @@ class baseHelper /* 处理$viewType和$vars。Set $viewType and $vars. */ if(empty($viewType)) $viewType = $app->getViewType(); - if(!is_array($vars)) parse_str($vars, $vars); + if(!is_array($vars)) + { + /* Prevent + from converting to spaces. */ + $vars = str_replace('+', '%2B', $vars); + parse_str($vars, $vars); + } /* 生成url链接的开始部分。Set the begin parts of the link. */ if($config->requestType == 'PATH_INFO') $link = $config->webRoot . $appName; diff --git a/lib/pclzip/pclzip.class.php b/lib/pclzip/pclzip.class.php index 8c8614982f..33f3b28ba1 100644 --- a/lib/pclzip/pclzip.class.php +++ b/lib/pclzip/pclzip.class.php @@ -29,7 +29,7 @@ if (!defined('PCLZIP_READ_BLOCK_SIZE')) { define( 'PCLZIP_READ_BLOCK_SIZE', 2048 ); } - + // ----- File list separator // In version 1.x of PclZip, the separator for file list is a space // (which is not a very smart choice, specifically for windows paths !). @@ -68,7 +68,7 @@ // ----- Optional threshold ratio for use of temporary files // Pclzip sense the size of the file to add/extract and decide to - // use or not temporary file. The algorythm is looking for + // use or not temporary file. The algorythm is looking for // memory_limit of PHP and apply a ratio. // threshold = memory_limit * ratio. // Recommended values are under 0.5. Default 0.47. @@ -152,7 +152,7 @@ define( 'PCLZIP_OPT_ADD_TEMP_FILE_ON', 77021 ); // alias define( 'PCLZIP_OPT_TEMP_FILE_OFF', 77022 ); define( 'PCLZIP_OPT_ADD_TEMP_FILE_OFF', 77022 ); // alias - + // ----- File description attributes define( 'PCLZIP_ATT_FILE_NAME', 79001 ); define( 'PCLZIP_ATT_FILE_NEW_SHORT_NAME', 79002 ); @@ -198,7 +198,7 @@ // ----- Internal error handling var $error_code = 1; var $error_string = ''; - + // ----- Current status of the magic_quotes_runtime // This value store the php configuration for magic_quotes // The class can then disable the magic_quotes and reset it after @@ -332,7 +332,7 @@ } } } - + // ----- Look for default option values $this->privOptionDefaultThreshold($v_options); @@ -341,16 +341,16 @@ $v_att_list = array(); $v_filedescr_list = array(); $p_result_list = array(); - + // ----- Look if the $p_filelist is really an array if (is_array($p_filelist)) { - + // ----- Look if the first element is also an array // This will mean that this is a file description entry if (isset($p_filelist[0]) && is_array($p_filelist[0])) { $v_att_list = $p_filelist; } - + // ----- The list is a list of string names else { $v_string_list = $p_filelist; @@ -368,7 +368,7 @@ PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type p_filelist"); return 0; } - + // ----- Reformat the string list if (sizeof($v_string_list) != 0) { foreach ($v_string_list as $v_string) { @@ -379,7 +379,7 @@ } } } - + // ----- For each file in the list check the attributes $v_supported_attributes = array ( PCLZIP_ATT_FILE_NAME => 'mandatory' @@ -528,16 +528,16 @@ $v_att_list = array(); $v_filedescr_list = array(); $p_result_list = array(); - + // ----- Look if the $p_filelist is really an array if (is_array($p_filelist)) { - + // ----- Look if the first element is also an array // This will mean that this is a file description entry if (isset($p_filelist[0]) && is_array($p_filelist[0])) { $v_att_list = $p_filelist; } - + // ----- The list is a list of string names else { $v_string_list = $p_filelist; @@ -555,14 +555,14 @@ PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Invalid variable type '".gettype($p_filelist)."' for p_filelist"); return 0; } - + // ----- Reformat the string list if (sizeof($v_string_list) != 0) { foreach ($v_string_list as $v_string) { $v_att_list[][PCLZIP_ATT_FILE_NAME] = $v_string; } } - + // ----- For each file in the list check the attributes $v_supported_attributes = array ( PCLZIP_ATT_FILE_NAME => 'mandatory' @@ -996,7 +996,7 @@ // Options : // PCLZIP_OPT_BY_INDEX : // PCLZIP_OPT_BY_NAME : - // PCLZIP_OPT_BY_EREG : + // PCLZIP_OPT_BY_EREG : // PCLZIP_OPT_BY_PREG : // Return Values : // 0 on failure, @@ -1064,7 +1064,7 @@ // -------------------------------------------------------------------------------- function deleteByIndex($p_index) { - + $p_list = $this->delete(PCLZIP_OPT_BY_INDEX, $p_index); // ----- Return @@ -1114,7 +1114,7 @@ if (($this->zip_fd = @fopen($this->zipname, 'rb')) == 0) { $this->privSwapBackMagicQuotes(); - + // ----- Error log PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive \''.$this->zipname.'\' in binary read mode'); @@ -1426,7 +1426,7 @@ function privParseOptions(&$p_options_list, $p_size, &$v_result_list, $v_requested_options=false) { $v_result=1; - + // ----- Read the options $i=0; while ($i<$p_size) { @@ -1466,13 +1466,13 @@ PclZip::privErrorLog(PCLZIP_ERR_MISSING_OPTION_VALUE, "Missing parameter value for option '".PclZipUtilOptionText($p_options_list[$i])."'"); return PclZip::errorCode(); } - + // ----- Check for incompatible options if (isset($v_result_list[PCLZIP_OPT_TEMP_FILE_OFF])) { PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Option '".PclZipUtilOptionText($p_options_list[$i])."' can not be used with option 'PCLZIP_OPT_TEMP_FILE_OFF'"); return PclZip::errorCode(); } - + // ----- Check the value $v_value = $p_options_list[$i+1]; if ((!is_integer($v_value)) || ($v_value<0)) { @@ -1491,7 +1491,7 @@ PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Option '".PclZipUtilOptionText($p_options_list[$i])."' can not be used with option 'PCLZIP_OPT_TEMP_FILE_OFF'"); return PclZip::errorCode(); } - + $v_result_list[$p_options_list[$i]] = true; break; @@ -1506,7 +1506,7 @@ PclZip::privErrorLog(PCLZIP_ERR_INVALID_PARAMETER, "Option '".PclZipUtilOptionText($p_options_list[$i])."' can not be used with option 'PCLZIP_OPT_TEMP_FILE_THRESHOLD'"); return PclZip::errorCode(); } - + $v_result_list[$p_options_list[$i]] = true; break; @@ -1655,7 +1655,7 @@ // ----- Return return PclZip::errorCode(); } - + // ----- Reduce the index list // each index item in the list must be a couple with a start and // an end value : [0,3], [5-5], [8-10], ... @@ -1666,10 +1666,10 @@ // ----- Explode the item $v_item_list = explode("-", $v_work_list[$j]); $v_size_item_list = sizeof($v_item_list); - + // ----- TBC : Here we might check that each item is a // real integer ... - + // ----- Look for single value if ($v_size_item_list == 1) { // ----- Set the option value @@ -1703,7 +1703,7 @@ } $v_sort_value = $v_result_list[$p_options_list[$i]][$j]['start']; } - + // ----- Sort the items if ($v_sort_flag) { // TBC : To Be Completed @@ -1806,10 +1806,10 @@ } } } - + // ----- Look for default values if (!isset($v_result_list[PCLZIP_OPT_TEMP_FILE_THRESHOLD])) { - + } // ----- Return @@ -1826,12 +1826,12 @@ function privOptionDefaultThreshold(&$p_options) { $v_result=1; - + if (isset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD]) || isset($p_options[PCLZIP_OPT_TEMP_FILE_OFF])) { return $v_result; } - + // ----- Get 'memory_limit' configuration value $v_memory_limit = ini_get('memory_limit'); $v_memory_limit = trim($v_memory_limit); @@ -1846,15 +1846,15 @@ $v_memory_limit = $v_memory_limit*1048576; if($last == 'k') $v_memory_limit = $v_memory_limit*1024; - + $p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] = floor($v_memory_limit*PCLZIP_TEMPORARY_FILE_RATIO); - + // ----- Sanity check : No threshold if value lower than 1M if ($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] < 1048576) { unset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD]); } - + // ----- Return return $v_result; } @@ -1871,10 +1871,10 @@ function privFileDescrParseAtt(&$p_file_list, &$p_filedescr, $v_options, $v_requested_options=false) { $v_result=1; - + // ----- For each file in the list check the attributes foreach ($p_file_list as $v_key => $v_value) { - + // ----- Check if the option is supported if (!isset($v_requested_options[$v_key])) { // ----- Error log @@ -1893,7 +1893,7 @@ } $p_filedescr['filename'] = PclZipUtilPathReduction($v_value); - + if ($p_filedescr['filename'] == '') { PclZip::privErrorLog(PCLZIP_ERR_INVALID_ATTRIBUTE_VALUE, "Invalid empty filename for attribute '".PclZipUtilOptionText($v_key)."'"); return PclZip::errorCode(); @@ -1974,10 +1974,10 @@ } } } - + // end foreach } - + // ----- Return return $v_result; } @@ -1990,7 +1990,7 @@ // or a string to be added as file. For any other type of files (link, other) // just ignore the item. // Then prepare the information that will be stored for that file. - // When its a folder, expand the folder with all the files that are in that + // When its a folder, expand the folder with all the files that are in that // folder (recursively). // Parameters : // Return Values : @@ -2000,20 +2000,20 @@ function privFileDescrExpand(&$p_filedescr_list, &$p_options) { $v_result=1; - + // ----- Create a result list $v_result_list = array(); - + // ----- Look each entry for ($i=0; $iprivCalculateStoredFilename($v_descr, $p_options); - + // ----- Add the descriptor in result list $v_result_list[sizeof($v_result_list)] = $v_descr; - + // ----- Look for folder if ($v_descr['type'] == 'folder') { // ----- List of items in folder @@ -2064,10 +2064,10 @@ if (($v_item_handler == '.') || ($v_item_handler == '..')) { continue; } - + // ----- Compose the full filename $v_dirlist_descr[$v_dirlist_nb]['filename'] = $v_descr['filename'].'/'.$v_item_handler; - + // ----- Look for different stored filename // Because the name of the folder was changed, the name of the // files/sub-folders also change @@ -2080,34 +2080,34 @@ $v_dirlist_descr[$v_dirlist_nb]['new_full_name'] = $v_item_handler; } } - + $v_dirlist_nb++; } - + @closedir($v_folder_handler); } else { // TBC : unable to open folder in read mode } - + // ----- Expand each element of the list if ($v_dirlist_nb != 0) { // ----- Expand if (($v_result = $this->privFileDescrExpand($v_dirlist_descr, $p_options)) != 1) { return $v_result; } - + // ----- Concat the resulting list $v_result_list = array_merge($v_result_list, $v_dirlist_descr); } else { } - + // ----- Free local array unset($v_dirlist_descr); } } - + // ----- Get the result list $p_filedescr_list = $v_result_list; @@ -2126,7 +2126,7 @@ { $v_result=1; $v_list_detail = array(); - + // ----- Magic quotes trick $this->privDisableMagicQuotes(); @@ -2456,7 +2456,7 @@ // Function : privAddFileList() // Description : // Parameters : - // $p_filedescr_list : An array containing the file description + // $p_filedescr_list : An array containing the file description // or directory names to add in the zip // $p_result_list : list of added files with their properties (specially the status field) // Return Values : @@ -2474,7 +2474,7 @@ // ----- Format the filename $p_filedescr_list[$j]['filename'] = PclZipUtilTranslateWinPath($p_filedescr_list[$j]['filename'], false); - + // ----- Skip empty file names // TBC : Can this be possible ? not checked in DescrParseAtt ? @@ -2526,7 +2526,7 @@ function privAddFile($p_filedescr, &$p_header, &$p_options) { $v_result=1; - + // ----- Working variable $p_filename = $p_filedescr['filename']; @@ -2538,8 +2538,8 @@ // ----- Return return PclZip::errorCode(); } - - // ----- Look for a stored different filename + + // ----- Look for a stored different filename /* TBC : Removed if (isset($p_filedescr['stored_filename'])) { $v_stored_filename = $p_filedescr['stored_filename']; @@ -2564,7 +2564,7 @@ $p_header['offset'] = 0; $p_header['filename'] = $p_filename; // TBC : Removed $p_header['stored_filename'] = $v_stored_filename; - $p_header['stored_filename'] = $p_filedescr['stored_filename']; + $p_header['stored_filename'] = strpos(helper::getOS(), 'Windows') !== false ? mb_convert_encoding($p_filedescr['stored_filename'],'GB2312','UTF-8') : $p_filedescr['stored_filename']; $p_header['extra'] = ''; $p_header['status'] = 'ok'; $p_header['index'] = -1; @@ -2574,20 +2574,20 @@ $p_header['external'] = 0x00000000; $p_header['size'] = filesize($p_filename); } - + // ----- Look for regular folder else if ($p_filedescr['type']=='folder') { $p_header['external'] = 0x00000010; $p_header['mtime'] = filemtime($p_filename); $p_header['size'] = filesize($p_filename); } - + // ----- Look for virtual file else if ($p_filedescr['type'] == 'virtual_file') { $p_header['external'] = 0x00000000; $p_header['size'] = strlen($p_filedescr['content']); } - + // ----- Look for filetime if (isset($p_filedescr['mtime'])) { @@ -2639,7 +2639,7 @@ if ($p_header['stored_filename'] == "") { $p_header['status'] = "filtered"; } - + // ----- Check the path length if (strlen($p_header['stored_filename']) > 0xFF) { $p_header['status'] = 'filename_too_long'; @@ -2651,7 +2651,7 @@ // ----- Look for a file if ($p_filedescr['type'] == 'file') { // ----- Look for using temporary file to zip - if ( (!isset($p_options[PCLZIP_OPT_TEMP_FILE_OFF])) + if ( (!isset($p_options[PCLZIP_OPT_TEMP_FILE_OFF])) && (isset($p_options[PCLZIP_OPT_TEMP_FILE_ON]) || (isset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD]) && ($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] <= $p_header['size'])) ) ) { @@ -2660,7 +2660,7 @@ return $v_result; } } - + // ----- Use "in memory" zip algo else { @@ -2678,14 +2678,14 @@ // ----- Calculate the CRC $p_header['crc'] = @crc32($v_content); - + // ----- Look for no compression if ($p_options[PCLZIP_OPT_NO_COMPRESSION]) { // ----- Set header parameters $p_header['compressed_size'] = $p_header['size']; $p_header['compression'] = 0; } - + // ----- Look for normal compression else { // ----- Compress the content @@ -2695,7 +2695,7 @@ $p_header['compressed_size'] = strlen($v_content); $p_header['compression'] = 8; } - + // ----- Call the header generation if (($v_result = $this->privWriteFileHeader($p_header)) != 1) { @fclose($v_file); @@ -2711,19 +2711,19 @@ // ----- Look for a virtual file (a file from string) else if ($p_filedescr['type'] == 'virtual_file') { - + $v_content = $p_filedescr['content']; // ----- Calculate the CRC $p_header['crc'] = @crc32($v_content); - + // ----- Look for no compression if ($p_options[PCLZIP_OPT_NO_COMPRESSION]) { // ----- Set header parameters $p_header['compressed_size'] = $p_header['size']; $p_header['compression'] = 0; } - + // ----- Look for normal compression else { // ----- Compress the content @@ -2733,7 +2733,7 @@ $p_header['compressed_size'] = strlen($v_content); $p_header['compression'] = 8; } - + // ----- Call the header generation if (($v_result = $this->privWriteFileHeader($p_header)) != 1) { @fclose($v_file); @@ -2799,7 +2799,7 @@ function privAddFileUsingTempFile($p_filedescr, &$p_header, &$p_options) { $v_result=PCLZIP_ERR_NO_ERROR; - + // ----- Working variable $p_filename = $p_filedescr['filename']; @@ -2894,7 +2894,7 @@ // ----- Unlink the temporary file @unlink($v_gzip_temp_name); - + // ----- Return return $v_result; } @@ -2911,7 +2911,7 @@ function privCalculateStoredFilename(&$p_filedescr, &$p_options) { $v_result=1; - + // ----- Working variables $p_filename = $p_filedescr['filename']; if (isset($p_options[PCLZIP_OPT_ADD_PATH])) { @@ -2939,7 +2939,7 @@ // ----- Remove drive letter if any $v_stored_filename = PclZipUtilTranslateWinPath($p_filedescr['new_full_name']); } - + // ----- Look for path and/or short name change else { @@ -2969,7 +2969,7 @@ if ( (substr($p_filename, 0, 2) == "./") || (substr($p_remove_dir, 0, 2) == "./")) { - + if ( (substr($p_filename, 0, 2) == "./") && (substr($p_remove_dir, 0, 2) != "./")) { $p_remove_dir = "./".$p_remove_dir; @@ -2992,10 +2992,10 @@ } } } - + // ----- Remove drive letter if any $v_stored_filename = PclZipUtilTranslateWinPath($v_stored_filename); - + // ----- Look for path to add if ($p_add_dir != "") { if (substr($p_add_dir, -1) == "/") @@ -3008,7 +3008,7 @@ // ----- Filename (reduce the path of stored name) $v_stored_filename = PclZipUtilPathReduction($v_stored_filename); $p_filedescr['stored_filename'] = $v_stored_filename; - + // ----- Return return $v_result; } @@ -3159,7 +3159,7 @@ { // ----- Magic quotes trick $this->privSwapBackMagicQuotes(); - + // ----- Error log PclZip::privErrorLog(PCLZIP_ERR_READ_OPEN_FAIL, 'Unable to open archive \''.$this->zipname.'\' in binary read mode'); @@ -3390,7 +3390,7 @@ // ----- Look for extract by ereg rule // ereg() is deprecated with PHP 5.3 - /* + /* else if ( (isset($p_options[PCLZIP_OPT_BY_EREG])) && ($p_options[PCLZIP_OPT_BY_EREG] != "")) { @@ -3412,7 +3412,7 @@ // ----- Look for extract by index rule else if ( (isset($p_options[PCLZIP_OPT_BY_INDEX])) && ($p_options[PCLZIP_OPT_BY_INDEX] != 0)) { - + // ----- Look if the index is in the list for ($j=$j_start; ($jprivSwapBackMagicQuotes(); - + PclZip::privErrorLog(PCLZIP_ERR_UNSUPPORTED_COMPRESSION, "Filename '".$v_header['stored_filename']."' is " ."compressed by an unsupported compression " @@ -3454,7 +3454,7 @@ return PclZip::errorCode(); } } - + // ----- Check encrypted files if (($v_extract) && (($v_header['flag'] & 1) == 1)) { $v_header['status'] = 'unsupported_encryption'; @@ -3486,7 +3486,7 @@ $v_extract = false; } - + // ----- Look for real extraction if ($v_extract) { @@ -3535,7 +3535,7 @@ // ----- Next extracted file $v_nb_extracted++; - + // ----- Look for user callback abort if ($v_result1 == 2) { break; @@ -3671,12 +3671,12 @@ if ($p_path != '') { $p_entry['filename'] = $p_path."/".$p_entry['filename']; } - + // ----- Check a base_dir_restriction if (isset($p_options[PCLZIP_OPT_EXTRACT_DIR_RESTRICTION])) { $v_inclusion = PclZipUtilPathInclusion($p_options[PCLZIP_OPT_EXTRACT_DIR_RESTRICTION], - $p_entry['filename']); + $p_entry['filename']); if ($v_inclusion == 0) { PclZip::privErrorLog(PCLZIP_ERR_DIRECTORY_RESTRICTION, @@ -3704,7 +3704,7 @@ $p_entry['status'] = "skipped"; $v_result = 1; } - + // ----- Look for abort result if ($v_result == 2) { // ----- This status is internal and will be changed in 'skipped' @@ -3731,7 +3731,7 @@ // ----- Change the file status $p_entry['status'] = "already_a_directory"; - + // ----- Look for PCLZIP_OPT_STOP_ON_ERROR // For historical reason first PclZip implementation does not stop // when this kind of error occurs. @@ -3804,10 +3804,10 @@ $v_dir_to_check = dirname($p_entry['filename']); if (($v_result = $this->privDirCheck($v_dir_to_check, (($p_entry['external']&0x00000010)==0x00000010))) != 1) { - + // ----- Change the file status $p_entry['status'] = "path_creation_fail"; - + // ----- Return //return $v_result; $v_result = 1; @@ -3846,7 +3846,7 @@ $v_binary_data = pack('a'.$v_read_size, $v_buffer); @fwrite($v_dest_file, $v_binary_data, $v_read_size); */ - @fwrite($v_dest_file, $v_buffer, $v_read_size); + @fwrite($v_dest_file, $v_buffer, $v_read_size); $v_size -= $v_read_size; } @@ -3855,7 +3855,7 @@ // ----- Change the file mtime touch($p_entry['filename'], $p_entry['mtime']); - + } else { @@ -3868,7 +3868,7 @@ // ----- Look for using temporary file to unzip - if ( (!isset($p_options[PCLZIP_OPT_TEMP_FILE_OFF])) + if ( (!isset($p_options[PCLZIP_OPT_TEMP_FILE_OFF])) && (isset($p_options[PCLZIP_OPT_TEMP_FILE_ON]) || (isset($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD]) && ($p_options[PCLZIP_OPT_TEMP_FILE_THRESHOLD] <= $p_entry['size'])) ) ) { @@ -3877,42 +3877,42 @@ return $v_result; } } - + // ----- Look for extract in memory else { - + // ----- Read the compressed file in a buffer (one shot) $v_buffer = @fread($this->zip_fd, $p_entry['compressed_size']); - + // ----- Decompress the file $v_file_content = @gzinflate($v_buffer); unset($v_buffer); if ($v_file_content === FALSE) { - + // ----- Change the file status // TBC $p_entry['status'] = "error"; - + return $v_result; } - + // ----- Opening destination file if (($v_dest_file = @fopen($p_entry['filename'], 'wb')) == 0) { - + // ----- Change the file status $p_entry['status'] = "write_error"; - + return $v_result; } - + // ----- Write the uncompressed data @fwrite($v_dest_file, $v_file_content, $p_entry['size']); unset($v_file_content); - + // ----- Closing the destination file @fclose($v_dest_file); - + } // ----- Change the file mtime @@ -3933,7 +3933,7 @@ if ($p_entry['status'] == "aborted") { $p_entry['status'] = "skipped"; } - + // ----- Look for post-extract callback elseif (isset($p_options[PCLZIP_CB_POST_EXTRACT])) { @@ -3967,7 +3967,7 @@ function privExtractFileUsingTempFile(&$p_entry, &$p_options) { $v_result=1; - + // ----- Creates a temporary file $v_gzip_temp_name = PCLZIP_TEMPORARY_DIR.uniqid('pclzip-').'.gz'; if (($v_dest_file = @fopen($v_gzip_temp_name, "wb")) == 0) { @@ -4028,7 +4028,7 @@ // ----- Delete the temporary file @unlink($v_gzip_temp_name); - + // ----- Return return $v_result; } @@ -4106,7 +4106,7 @@ // ----- Read the compressed file in a buffer (one shot) $v_buffer = @fread($this->zip_fd, $p_entry['compressed_size']); - + // ----- Decompress the file $v_file_content = gzinflate($v_buffer); unset($v_buffer); @@ -4187,7 +4187,7 @@ $p_entry['status'] = "skipped"; $v_result = 1; } - + // ----- Look for abort result if ($v_result == 2) { // ----- This status is internal and will be changed in 'skipped' @@ -4209,41 +4209,41 @@ // ----- Look for not compressed file // if ($p_entry['compressed_size'] == $p_entry['size']) if ($p_entry['compression'] == 0) { - + // ----- Reading the file $p_string = @fread($this->zip_fd, $p_entry['compressed_size']); } else { - + // ----- Reading the file $v_data = @fread($this->zip_fd, $p_entry['compressed_size']); - + // ----- Decompress the file if (($p_string = @gzinflate($v_data)) === FALSE) { // TBC } } - + // ----- Trace } else { // TBC : error : can not extract a folder in a string } - + } // ----- Change abort status if ($p_entry['status'] == "aborted") { $p_entry['status'] = "skipped"; } - + // ----- Look for post-extract callback elseif (isset($p_options[PCLZIP_CB_POST_EXTRACT])) { // ----- Generate a local information $v_local_header = array(); $this->privConvertHeader2FileInfo($p_entry, $v_local_header); - + // ----- Swap the content to header $v_local_header['content'] = $p_string; $p_string = ''; @@ -4504,7 +4504,7 @@ } if ($p_local_header['filename_len'] != $p_central_header['filename_len']) { } - + // ----- Look for flag bit 3 if (($p_local_header['flag'] & 8) == 8) { $p_local_header['size'] = $p_central_header['size']; @@ -4590,9 +4590,9 @@ // ----- Add the byte //$v_bytes = ($v_bytes << 8) | Ord($v_byte); - // Note we mask the old value down such that once shifted we can never end up with more than a 32bit number - // Otherwise on systems where we have 64bit integers the check below for the magic number will fail. - $v_bytes = ( ($v_bytes & 0xFFFFFF) << 8) | Ord($v_byte); + // Note we mask the old value down such that once shifted we can never end up with more than a 32bit number + // Otherwise on systems where we have 64bit integers the check below for the magic number will fail. + $v_bytes = ( ($v_bytes & 0xFFFFFF) << 8) | Ord($v_byte); // ----- Compare the bytes if ($v_bytes == 0x504b0506) @@ -4870,7 +4870,7 @@ // ----- Return return $v_result; } - + // ----- Check that local file header is same as central file header if ($this->privCheckFileHeaders($v_local_header, $v_header_list[$i]) != 1) { @@ -4954,11 +4954,11 @@ // TBC : I should test the result ... //@rename($v_zip_temp_name, $this->zipname); PclZipUtilRename($v_zip_temp_name, $this->zipname); - + // ----- Destroy the temporary archive unset($v_temp_zip); } - + // ----- Remove every files : reset the file else if ($v_central_dir['entries'] != 0) { $this->privCloseFd(); @@ -5445,7 +5445,7 @@ } } } - + // ----- Look for skip if ($v_skip > 0) { while ($v_skip > 0) { @@ -5478,7 +5478,7 @@ function PclZipUtilPathInclusion($p_dir, $p_path) { $v_result = 1; - + // ----- Look for path beginning by ./ if ( ($p_dir == '.') || ((strlen($p_dir) >=2) && (substr($p_dir, 0, 2) == './'))) { @@ -5646,7 +5646,7 @@ // -------------------------------------------------------------------------------- function PclZipUtilOptionText($p_option) { - + $v_list = get_defined_constants(); for (reset($v_list); $v_key = key($v_list); next($v_list)) { $v_prefix = substr($v_key, 0, 10); @@ -5657,7 +5657,7 @@ return $v_key; } } - + $v_result = 'Unknown'; return $v_result; diff --git a/lib/scm/gitea.class.php b/lib/scm/gitea.class.php index 3e8709bd70..6541ded16a 100644 --- a/lib/scm/gitea.class.php +++ b/lib/scm/gitea.class.php @@ -3,6 +3,7 @@ class Gitea { public $client; public $root; + public $repo; /** * Construct @@ -28,8 +29,11 @@ class Gitea $project = $app->control->loadModel('gitea')->apiGetSingleProject($repo->serviceHost, $repo->serviceProject); if(isset($project->tokenCloneUrl)) { - $cmd = 'git clone --progress -v "' . $project->tokenCloneUrl . '" "' . $this->root . '"'; + $cmd = 'git clone --progress -v "' . $project->tokenCloneUrl . '" "' . $this->root . '" > "' . $app->getTmpRoot() . "log/clone.progress." . strtolower($repo->SCM) . ".{$repo->name}.log\" 2>&1 &"; + if(PHP_OS == 'WINNT') $cmd = "start /b $cmd"; exec($cmd); + + return $app->control->locate($app->control->createLink('repo', 'showSyncCommit', "repoID={$repo->id}")); } } @@ -40,6 +44,7 @@ class Gitea if(isset($branches[$branch])) $branch = "origin/$branch"; } $this->branch = $branch; + $this->repo = $repo; chdir($this->root); exec("{$this->client} config core.quotepath false"); @@ -159,7 +164,7 @@ class Gitea { $localBranch = trim($localBranch); if(substr($localBranch, 0, 19) == 'remotes/origin/HEAD') continue; - if(substr($localBranch, 0, 1) == '*') $localBranch = substr($localBranch, 1); + if(substr($localBranch, 0, 1) == '*') continue; if(substr($localBranch, 0, 15) == 'remotes/origin/') $localBranch = substr($localBranch, 15); $localBranch = trim($localBranch); @@ -551,9 +556,15 @@ class Gitea { if(!scm::checkRevision($revision)) return array(); - if($revision == 'HEAD' and $branch) $revision = $branch; - $revision = is_numeric($revision) ? "--skip=$revision $branch" : $revision; - $count = $count == 0 ? '' : "-n $count"; + if($revision == 'HEAD' and $branch) + { + $revision = $branch; + } + elseif(is_numeric($revision)) + { + $revision = "--skip=$revision $branch"; + } + $count = $count == 0 ? '' : "-n $count"; chdir($this->root); if($branch) @@ -598,11 +609,11 @@ class Gitea list($action, $path) = $file; $parsedFile = new stdclass(); - $parsedFile->revision = $hash; - $parsedFile->path = '/' . trim($path); - $parsedFile->type = 'file'; - $parsedFile->action = $action; - $logs['files'][$hash][] = $parsedFile; + $parsedFile->revision = $hash; + $parsedFile->path = '/' . trim($path); + $parsedFile->type = 'file'; + $parsedFile->action = $action; + $logs['files'][$hash][] = $parsedFile; } } return $logs; @@ -690,4 +701,20 @@ class Gitea return $parsedLogs; } + + /** + * Get download url. + * + * @param string $branch + * @param string $savePath + * @param string $ext + * @access public + * @return string + */ + public function getDownloadUrl($branch = 'master', $savePath = '', $ext = 'zip') + { + global $app; + $api = $app->control->loadModel('gitea')->getApiRoot($this->repo->serviceHost); + return sprintf($api, "/repos/{$this->repo->serviceProject}/archive/{$branch}.zip"); + } } diff --git a/lib/scm/gitlab.class.php b/lib/scm/gitlab.class.php index a27cb2259d..730156ae46 100644 --- a/lib/scm/gitlab.class.php +++ b/lib/scm/gitlab.class.php @@ -840,11 +840,12 @@ class gitlab * Get download url. * * @param string $branch + * @param string $savePath * @param string $ext * @access public * @return string */ - public function getDownloadUrl($branch = 'master', $ext = 'zip') + public function getDownloadUrl($branch = 'master', $savePath = '', $ext = 'zip') { $params = (array) $params; $params['private_token'] = $this->token; diff --git a/lib/scm/gitrepo.class.php b/lib/scm/gitrepo.class.php index aaafee2639..335768ffb5 100644 --- a/lib/scm/gitrepo.class.php +++ b/lib/scm/gitrepo.class.php @@ -3,6 +3,7 @@ class GitRepo { public $client; public $root; + public $repo; /** * Construct @@ -30,6 +31,7 @@ class GitRepo if(isset($branches[$branch])) $branch = "origin/$branch"; } $this->branch = $branch; + $this->repo = $repo; chdir($this->root); exec("{$this->client} config core.quotepath false"); @@ -540,9 +542,16 @@ class GitRepo { if(!scm::checkRevision($revision)) return array(); - if($revision == 'HEAD' and $branch) $revision = $branch; - $revision = is_numeric($revision) ? "--skip=$revision $branch" : $revision; - $count = $count == 0 ? '' : "-n $count"; + if($revision == 'HEAD' and $branch) + { + $revision = $branch; + } + elseif(is_numeric($revision)) + { + $revision = "--skip=$revision $branch"; + } + $count = $count == 0 ? '' : "-n $count"; + chdir($this->root); if($branch) execCmd(escapeCmd("$this->client checkout $branch"), 'array'); @@ -603,7 +612,8 @@ class GitRepo { $url = new stdclass(); $remote = execCmd(escapeCmd("$this->client remote -v"), 'array'); - $pregHttp = '/http(s)?:\/\/(www\.)?[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+(:\d+)*(\/\w+)*\.git/'; + if(strpos($remote[0], 'oauth2:')) $remote[0] = preg_replace('/oauth2.*@/', '', $remote[0]); + $pregHttp = '/http(s)?:\/\/(www\.)?[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+(:\d+)*(\/\w+)*(\.git)?/'; $pregSSH = '/ssh:\/\/git@[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+(:\d+)*(\/\w+)*\.git/'; if(preg_match($pregHttp, $remote[0], $matches)) $url->http = $matches[0]; @@ -675,4 +685,31 @@ class GitRepo return $parsedLogs; } + + /** + * Get download url. + * + * @param string $branch + * @param string $savePath + * @param string $ext + * @access public + * @return string + */ + public function getDownloadUrl($branch = 'master', $savePath = '', $ext = 'zip') + { + global $app, $config; + $gitDir = scandir($this->root); + $files = ''; + foreach($gitDir as $path) + { + if(!in_array($path, array('.', '..', '.git'))) $files .= $this->root . DS . "$path,"; + } + + $app->loadClass('pclzip', true); + $fileName = $savePath . DS . "{$this->repo->name}_$branch.zip"; + $zip = new pclzip($fileName); + $zip->create($files, PCLZIP_OPT_REMOVE_PATH, $this->root); + + return $config->webRoot . $app->getAppName() . 'data' . DS . 'repo' . DS . "{$this->repo->name}_$branch.zip"; + } } diff --git a/lib/scm/gogs.class.php b/lib/scm/gogs.class.php new file mode 100644 index 0000000000..5deff82719 --- /dev/null +++ b/lib/scm/gogs.class.php @@ -0,0 +1,755 @@ +client = $client; + $this->root = rtrim($root, DIRECTORY_SEPARATOR); + if(!realpath($this->root) and !empty($repo)) + { + global $app; + $project = $app->control->loadModel('gogs')->apiGetSingleProject($repo->serviceHost, $repo->serviceProject); + if(isset($project->tokenCloneUrl)) + { + $cmd = 'git clone --progress -v "' . $project->tokenCloneUrl . '" "' . $this->root . '" > "' . $app->getTmpRoot() . "log/clone.progress." . strtolower($repo->SCM) . ".{$repo->name}.log\" 2>&1 &"; + if(PHP_OS == 'WINNT') $cmd = "start /b $cmd"; + exec($cmd); + + return $app->control->locate($app->control->createLink('repo', 'showSyncCommit', "repoID={$repo->id}")); + } + } + + $branch = isset($_COOKIE['repoBranch']) ? $_COOKIE['repoBranch'] : ''; + if($branch) + { + $branches = $this->branch(); + if(isset($branches[$branch])) $branch = "origin/$branch"; + } + $this->branch = $branch; + $this->repo = $repo; + + chdir($this->root); + exec("{$this->client} config core.quotepath false"); + } + + /** + * List files. + * + * @param string $path + * @param string $revision + * @access public + * @return array + */ + public function ls($path, $revision = 'HEAD') + { + if(!scm::checkRevision($revision)) return array(); + + $path = ltrim($path, DIRECTORY_SEPARATOR); + $sub = ''; + chdir($this->root); + if(!empty($path)) $sub = ":$path"; + if(!empty($this->branch))$revision = $this->branch; + execCmd(escapeCmd("$this->client pull")); + $cmd = escapeCmd("$this->client ls-tree -l $revision$sub"); + $list = execCmd($cmd . ' 2>&1', 'array', $result); + if($result) return array(); + + $infos = array(); + foreach($list as $entry) + { + list($mod, $kind, $revision, $size, $name) = preg_split('/[\t ]+/', $entry); + + /* Get commit info. */ + $pathName = ltrim($path . DIRECTORY_SEPARATOR . $name, DIRECTORY_SEPARATOR); + $cmd = escapeCmd("$this->client log -1 $this->branch -- $pathName"); + $commit = execCmd($cmd, 'array'); + $logs = $this->parseLog($commit); + + if($size > 1024 * 1024) + { + $size = round($size / (1024 * 1024), 2) . 'MB'; + } + else if($size > 1024) + { + $size = round($size / 1024, 2) . 'KB'; + } + else + { + $size .= 'Bytes'; + } + + $info = new stdClass(); + $info->name = $name; + $info->kind = $kind == 'tree' ? 'dir' : 'file'; + $info->revision = $logs ? $logs[0]->revision : $revision; + $info->size = $size; + $info->account = $logs ? $logs[0]->committer : ''; + $info->date = $logs ? $logs[0]->time : ''; + $info->comment = $logs ? $logs[0]->comment : ''; + $infos[] = $info; + unset($info); + } + + /* Sort by kind */ + foreach($infos as $key => $info) $kinds[$key] = $info->kind; + if($infos) array_multisort($kinds, SORT_ASC, $infos); + + return $infos; + } + + /** + * Get tags + * + * @param string $path + * @param string $revision + * @access public + * @return array + */ + public function tags($path, $revision = 'HEAD') + { + if(!scm::checkRevision($revision)) return array(); + + chdir($this->root); + $cmd = escapeCmd("$this->client tag --sort=taggerdate"); + $list = execCmd($cmd . ' 2>&1', 'array', $result); + if($result) return array(); + + foreach($list as $key => $tag) + { + if(!$tag) unset($list[$key]); + } + + return $list; + } + + /** + * Get branch. + * + * @access public + * @return array + */ + public function branch() + { + chdir($this->root); + + /* Get local branch. */ + $cmd = escapeCmd("$this->client branch -a"); + $list = execCmd($cmd . ' 2>&1', 'array', $result); + if($result) return array(); + + /* Get default branch. */ + $defaultBranch = execCmd("$this->client symbolic-ref refs/remotes/origin/HEAD | sed 's@^refs/remotes/origin/@@'"); + $defaultBranch = trim($defaultBranch); + + $branches = array(); + foreach($list as $localBranch) + { + $localBranch = trim($localBranch); + if(substr($localBranch, 0, 19) == 'remotes/origin/HEAD') continue; + if(substr($localBranch, 0, 1) == '*') continue; + if(substr($localBranch, 0, 15) == 'remotes/origin/') $localBranch = substr($localBranch, 15); + + $localBranch = trim($localBranch); + if(empty($localBranch))continue; + if($localBranch != $defaultBranch) $branches[$localBranch] = $localBranch; + } + + asort($branches); + if($defaultBranch) $branches = array($defaultBranch => $defaultBranch) + $branches; + + return $branches; + } + + /** + * Get last log. + * + * @param string $path + * @param int $count + * @access public + * @return array + */ + public function getLastLog($path, $count = 10) + { + $path = ltrim($path, DIRECTORY_SEPARATOR); + $revision = $this->branch ? $this->branch : 'HEAD'; + + chdir($this->root); + $list = execCmd(escapeCmd("$this->client log -10 $revision -- $path"), 'array'); + $logs = $this->parseLog($list); + + return $logs; + } + + /** + * Get logs + * + * @param string $path + * @param string $fromRevision + * @param string $toRevision + * @param int $count + * @access public + * @return array + */ + public function log($path, $fromRevision = 0, $toRevision = 'HEAD', $count = 0) + { + if(!scm::checkRevision($fromRevision)) return array(); + if(!scm::checkRevision($toRevision)) return array(); + + $path = ltrim($path, DIRECTORY_SEPARATOR); + $count = $count == 0 ? '' : "-n $count"; + /* compatible with svn. */ + if($fromRevision == 'HEAD' and $this->branch) $fromRevision = $this->branch; + if($toRevision == 'HEAD' and $this->branch) $toRevision = $this->branch; + if($fromRevision === $toRevision) + { + $logs = array(); + chdir($this->root); + + $list = execCmd(escapeCmd("$this->client log --stat=1024 --name-status --stat-name-width=1000 -1 $fromRevision -- $path"), 'array'); + $logs = $this->parseLog($list); + return $logs; + } + + if(!$fromRevision) + { + $revisions = " $toRevision"; + } + else + { + $revisions = "$fromRevision..$toRevision"; + } + chdir($this->root); + $list = execCmd(escapeCmd("$this->client log --stat=1024 --name-status --stat-name-width=1000 $count $revisions -- $path"), 'array'); + $logs = $this->parseLog($list); + + return $logs; + } + + /** + * Blame file + * + * @param string $path + * @param string $revision + * @access public + * @return array + */ + public function blame($path, $revision) + { + if(!scm::checkRevision($revision)) return array(); + + $path = ltrim($path, DIRECTORY_SEPARATOR); + chdir($this->root); + $list = execCmd(escapeCmd("$this->client blame -l $revision -- $path"), 'array'); + + $blames = array(); + $revLine = 0; + $revision = ''; + foreach($list as $line) + { + if(empty($line)) continue; + if($line[0] == '^') $line = substr($line, 1); + preg_match('/^([0-9a-f]{39,40})\s.*\((\S+)\s+([\d-]+)\s(.*)\s(\d+)\)(.*)$/U', $line, $matches); + + if(isset($matches[1]) and $matches[1] != $revision) + { + $blame = array(); + $blame['revision'] = $matches[1]; + $blame['committer'] = $matches[2]; + $blame['time'] = $matches[3]; + $blame['line'] = $matches[5]; + $blame['lines'] = 1; + $blame['content'] = strpos($matches[6], ' ') === false ? $matches[6] : substr($matches[6], 1); + + $revision = $matches[1]; + $revLine = $matches[5]; + $blames[$revLine] = $blame; + } + elseif(isset($matches[5])) + { + $blame = array(); + $blame['line'] = $matches[5]; + $blame['content'] = strpos($matches[6], ' ') === false ? $matches[6] : substr($matches[6], 1); + + $blames[$matches[5]] = $blame; + $blames[$revLine]['lines'] ++; + } + } + return $blames; + } + + /** + * Diff file. + * + * @param string $path + * @param string $fromRevision + * @param string $toRevision + * @param string $extra + * @access public + * @return array + */ + public function diff($path, $fromRevision, $toRevision, $extra = '') + { + if(!scm::checkRevision($fromRevision) and $extra != 'isBranchOrTag') return array(); + if(!scm::checkRevision($toRevision) and $extra != 'isBranchOrTag') return array(); + + $path = ltrim($path, DIRECTORY_SEPARATOR); + chdir($this->root); + if($toRevision == 'HEAD' and $this->branch) $toRevision = $this->branch; + if($fromRevision == '^') $fromRevision = $toRevision . '^'; + if(strpos($fromRevision, '^') !== false) + { + $list = execCmd(escapeCmd("$this->client log -2 $toRevision --pretty=format:%H -- $path"), 'array'); + if(isset($list[1])) $fromRevision = $list[1]; + } + $lines = execCmd(escapeCmd("$this->client diff $fromRevision $toRevision -- $path"), 'array'); + return $lines; + } + + /** + * Cat file. + * + * @param string $entry + * @param string $revision + * @access public + * @return string + */ + public function cat($entry, $revision = 'HEAD') + { + if(!scm::checkRevision($revision)) return false; + + chdir($this->root); + if($revision == 'HEAD' and $this->branch) $revision = $this->branch; + $cmd = escapeCmd("$this->client show $revision:$entry"); + $content = execCmd($cmd); + if(is_array($content)) $content = implode("\n", $content); + return $content; + } + + /** + * Get info. + * + * @param string $entry + * @param string $revision + * @access public + * @return object + */ + public function info($entry, $revision = 'HEAD') + { + if(!scm::checkRevision($revision)) return false; + + chdir($this->root); + if($revision == 'HEAD' and $this->branch) $revision = $this->branch; + $path = ltrim($entry, DIRECTORY_SEPARATOR); + $cmd = escapeCmd("$this->client ls-tree $revision -- $path"); + $result = execCmd($cmd); + $kind = ''; + if($result) + { + $results = explode("\n", trim($result)); + if(count($results) >= 2) + { + $kind = 'dir'; + } + else + { + list($mode, $type) = explode(' ', $results[0]); + $kind = $type == 'tree' ? 'dir' : 'file'; + } + } + + $list = execCmd(escapeCmd("$this->client log -1 $revision --pretty=format:%H -- $path"), 'array'); + $revision = $list[0]; + $info = new stdclass(); + $info->kind = $kind; + $info->path = $entry; + $info->revision = $revision; + $info->root = $this->root; + return $info; + } + + /** + * Exec git cmd. + * + * @param string $cmd + * @access public + * @return array + */ + public function exec($cmd) + { + chdir($this->root); + return execCmd(escapeCmd("$this->client $cmd"), 'array'); + } + + /** + * Parse diff. + * + * @param array $lines + * @access public + * @return array + */ + public function parseDiff($lines) + { + if(empty($lines)) return array(); + $diffs = array(); + $num = count($lines); + $endLine = end($lines); + if(strpos($endLine, '\ No newline at end of file') === 0) $num -= 1; + + $newFile = false; + $allFiles = array(); + for($i = 0; $i < $num; $i ++) + { + $diffFile = new stdclass(); + if(strpos($lines[$i], "diff --git ") === 0) + { + $fileInfo = explode(' ',$lines[$i]); + $fileName = substr($fileInfo[2], strpos($fileInfo[2], '/') + 1); + + /* Prevent duplicate display of files. */ + if(in_array($fileName, $allFiles)) continue; + $allFiles[] = $fileName; + + $diffFile->fileName = $fileName; + for($i++; $i < $num; $i ++) + { + $diff = new stdclass(); + /* Fix bug #1757. */ + if($lines[$i] == '+++ /dev/null') $newFile = true; + if(strpos($lines[$i], '+++', 0) !== false) continue; + if(strpos($lines[$i], '---', 0) !== false) continue; + if(strpos($lines[$i], '======', 0) !== false) continue; + if(preg_match('/^@@ -(\\d+)(,(\\d+))?\\s+\\+(\\d+)(,(\\d+))?\\s+@@/A', $lines[$i])) + { + $startLines = trim(str_replace(array('@', '+', '-'), '', $lines[$i])); + list($oldStartLine, $newStartLine) = explode(' ', $startLines); + list($diff->oldStartLine) = explode(',', $oldStartLine); + list($diff->newStartLine) = explode(',', $newStartLine); + $oldCurrentLine = $diff->oldStartLine; + $newCurrentLine = $diff->newStartLine; + if($newFile) + { + $oldCurrentLine = $diff->newStartLine; + $newCurrentLine = $diff->oldStartLine; + } + $newLines = array(); + for($i++; $i < $num; $i ++) + { + if(preg_match('/^@@ -(\\d+)(,(\\d+))?\\s+\\+(\\d+)(,(\\d+))?\\s+@@/A', $lines[$i])) + { + $i --; + break; + } + if(strpos($lines[$i], "diff --git ") === 0) break; + + $line = $lines[$i]; + if(strpos($line, '\ No newline at end of file') === 0)continue; + $sign = empty($line) ? '' : $line[0]; + if($sign == '-' and $newFile) $sign = '+'; + $type = $sign != '-' ? $sign == '+' ? 'new' : 'all' : 'old'; + if($sign == '-' || $sign == '+') + { + $line = substr_replace($line, ' ', 1, 0); + if($newFile) $line = preg_replace('/^\-/', '+', $line); + } + + $newLine = new stdclass(); + $newLine->type = $type; + $newLine->oldlc = $type != 'new' ? $oldCurrentLine : ''; + $newLine->newlc = $type != 'old' ? $newCurrentLine : ''; + $newLine->line = htmlSpecialString($line); + + if($type != 'new') $oldCurrentLine++; + if($type != 'old') $newCurrentLine++; + + $newLines[] = $newLine; + } + + $diff->lines = $newLines; + $diffFile->contents[] = $diff; + } + + if(isset($lines[$i]) and strpos($lines[$i], "diff --git ") === 0) + { + $i --; + $newFile = false; + break; + } + } + $diffs[] = $diffFile; + } + } + return $diffs; + } + + /** + * Get commit count. + * + * @param int $commits + * @param string $lastVersion + * @access public + * @return int + */ + public function getCommitCount($commits = 0, $lastVersion = '') + { + if(!scm::checkRevision($lastVersion)) return false; + + chdir($this->root); + $revision = $this->branch ? $this->branch : 'HEAD'; + return execCmd(escapeCmd("$this->client rev-list --count $revision -- ./"), 'string'); + } + + /** + * Get first revision. + * + * @access public + * @return string + */ + public function getFirstRevision() + { + chdir($this->root); + $list = execCmd(escapeCmd("$this->client rev-list --reverse HEAD -- ./"), 'array'); + return $list[0]; + } + + /** + * Get latest revision + * + * @access public + * @return string + */ + public function getLatestRevision() + { + chdir($this->root); + $revision = $this->branch ? $this->branch : 'HEAD'; + $list = execCmd(escapeCmd("$this->client rev-list -1 $revision -- ./"), 'array'); + return $list[0]; + } + + /** + * Get commits. + * + * @param string $rversion + * @param int $count + * @param string $branch + * @access public + * @return array + */ + public function getCommits($revision = '', $count = 0, $branch = '') + { + if(!scm::checkRevision($revision)) return array(); + + if($revision == 'HEAD' and $branch) + { + $revision = $branch; + } + elseif(is_numeric($revision)) + { + $revision = "--skip=$revision $branch"; + } + $count = $count == 0 ? '' : "-n $count"; + + chdir($this->root); + if($branch) + { + execCmd(escapeCmd("$this->client checkout $branch")); + execCmd(escapeCmd("$this->client pull")); + } + + $list = execCmd(escapeCmd("$this->client log $count $revision -- ./"), 'array'); + $commits = $this->parseLog($list); + + $logs = array(); + foreach($commits as $commit) + { + $hash = $commit->revision; + $log = new stdClass(); + $log->committer = $commit->committer; + $log->revision = $commit->revision; + $log->comment = $commit->comment; + $log->time = $commit->time; + $logs['commits'][$hash] = $log; + $logs['files'][$hash] = array(); + } + if(empty($logs)) return $logs; + + $hash = ''; + $files = execCmd(escapeCmd("$this->client whatchanged $count $revision --pretty=format:%an@_@%cd@_@%H@_@%s -- ./"), 'array'); + foreach($files as $commit) + { + $commit = trim($commit); + if(empty($commit)) continue; + $parsedCommit = explode('@_@', $commit); + if(count($parsedCommit) == 4) + { + list($account, $date, $hash, $comment) = $parsedCommit; + } + else + { + $file = explode(' ', $commit); + $file = explode("\t", end($file)); + if(!isset($file[1])) $file[1] = ''; + list($action, $path) = $file; + + $parsedFile = new stdclass(); + $parsedFile->revision = $hash; + $parsedFile->path = '/' . trim($path); + $parsedFile->type = 'file'; + $parsedFile->action = $action; + $logs['files'][$hash][] = $parsedFile; + } + } + return $logs; + } + + /** + * Get commits by MR branches. + * + * @param string $sourceBranch + * @param string $targetBranch + * @access public + * @return array + */ + public function getMRCommits($sourceBranch, $targetBranch) + { + execCmd(escapeCmd("$this->client checkout $sourceBranch")); + execCmd(escapeCmd("$this->client pull")); + execCmd(escapeCmd("$this->client checkout $targetBranch")); + execCmd(escapeCmd("$this->client pull")); + + $commits = execCmd(escapeCmd("$this->client log origin/$sourceBranch ^origin/$targetBranch"), 'array'); + $commits = $this->parseLog($commits); + foreach($commits as $commit) $commit->id = $commit->revision; + return $commits; + } + + /** + * Get clone url. + * + * @access public + * @return string + */ + public function getCloneUrl() + { + $url = new stdclass(); + $remote = execCmd(escapeCmd("$this->client remote -v"), 'array'); + $pregHttp = '/http(s)?:\/\/(www\.)?[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+(:\d+)*(\/\w+)*\.git/'; + $pregSSH = '/ssh:\/\/git@[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(\.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+(:\d+)*(\/\w+)*\.git/'; + + if(preg_match($pregHttp, $remote[0], $matches)) $url->http = $matches[0]; + if(preg_match($pregSSH, $remote[0], $matches)) $url->ssh = $matches[0]; + + return $url; + } + + /** + * Parse log. + * + * @param array $logs + * @access public + * @return array + */ + public function parseLog($logs) + { + $parsedLogs = array(); + $i = 0; + foreach($logs as $line) + { + if(strpos($line, 'commit ') === 0) + { + if(isset($log)) + { + $log->comment = trim($comment); + $log->change = $changes; + $parsedLogs[$i] = $log; + $i++; + } + + $log = new stdclass(); + $comment = ''; + $changes = array(); + + $log->revision = trim(preg_replace('/^commit/', '', $line)); + } + elseif(strpos($line, 'Author:') === 0) + { + $account = preg_replace('/^Author:/', '', $line); + $log->committer = trim(preg_replace('/<[a-zA-Z0-9_\-\.]+@[a-zA-Z0-9_\-\.]+>/', '', $account)); + } + elseif(strpos($line, 'Date:') === 0) + { + $date = trim(preg_replace('/^Date:/', '', $line)); + $log->time = date('Y-m-d H:i:s', strtotime($date)); + } + elseif(preg_match('/^\s{2,}/', $line)) + { + $comment .= $line; + } + elseif(strpos($line, "\t") !== false) + { + list($action, $entry) = explode("\t", $line); + $entry = '/' . trim($entry); + $pathInfo = array(); + $pathInfo['action'] = $action; + $pathInfo['kind'] = 'file'; + $changes[$entry] = $pathInfo; + } + } + + if(isset($log)) + { + $log->comment = trim($comment); + $log->change = $changes; + $parsedLogs[$i] = $log; + } + + return $parsedLogs; + } + + /** + * Get download url. + * + * @param string $branch + * @param string $savePath + * @param string $ext + * @access public + * @return string + */ + public function getDownloadUrl($branch = 'master', $savePath = '', $ext = 'zip') + { + execCmd(escapeCmd("$this->client checkout $branch")); + execCmd(escapeCmd("$this->client pull")); + + global $app, $config; + $gitDir = scandir($this->root); + $files = ''; + foreach($gitDir as $path) + { + if(!in_array($path, array('.', '..', '.git'))) $files .= $this->root . DS . "$path,"; + } + + $app->loadClass('pclzip', true); + $fileName = $savePath . DS . "{$this->repo->name}_$branch.zip"; + $zip = new pclzip($fileName); + $zip->create($files, PCLZIP_OPT_REMOVE_PATH, $this->root); + + return $config->webRoot . $app->getAppName() . 'data' . DS . 'repo' . DS . "{$this->repo->name}_$branch.zip"; + } +} diff --git a/lib/scm/scm.class.php b/lib/scm/scm.class.php index 950c6b740a..11c481e695 100644 --- a/lib/scm/scm.class.php +++ b/lib/scm/scm.class.php @@ -220,6 +220,19 @@ class scm return $this->engine->getCommits($version, $count, $branch); } + /** + * Get commits by MR branches. + * + * @param string $sourceBranch + * @param string $targetBranch + * @access public + * @return array + */ + public function getMRCommits($sourceBranch, $targetBranch) + { + return $this->engine->getMRCommits($sourceBranch, $targetBranch); + } + /** * Get clone url. * @@ -249,13 +262,14 @@ class scm * Get download url. * * @param string $branch + * @param string $savePath * @param string $ext * @access public * @return string */ - public function getDownloadUrl($branch = '', $ext = 'zip') + public function getDownloadUrl($branch = '', $savePath = '', $ext = 'zip') { - return $this->engine->getDownloadUrl($branch, $ext); + return $this->engine->getDownloadUrl($branch, $savePath, $ext); } } diff --git a/lib/scm/subversion.class.php b/lib/scm/subversion.class.php index 120e5d4a88..092fdfa7e6 100644 --- a/lib/scm/subversion.class.php +++ b/lib/scm/subversion.class.php @@ -9,6 +9,7 @@ class Subversion public $remote; public $encoding; public $svnVersion; + public $repo; /** * Construct @@ -29,6 +30,7 @@ class Subversion $this->account = $account; $this->password = $password; $this->encoding = $encoding; + $this->repo = $repo; $this->ssh = (stripos($this->root, 'svn') === 0 or stripos($this->root, 'https') === 0) ? true : false; $this->remote = !(stripos($this->root, 'file') === 0); $this->client = $this->remote ? $client . " --username @account@ --password @password@" : $client; @@ -682,4 +684,32 @@ class Subversion return end($versionOutput); } + + /** + * Get download url. + * + * @param string $branch + * @param string $savePath + * @param string $ext + * @access public + * @return string + */ + public function getDownloadUrl($branch = '', $savePath = '', $ext = 'zip') + { + global $app, $config; + + /* Get repo name. */ + $pathList = explode('/', trim($this->root, '/')); + $repoDir = $savePath . DS . end($pathList); + execCmd($this->replaceAuth(escapeCmd("$this->client export $this->root $repoDir"))); + + $fileName = $savePath . DS . "{$this->repo->name}.zip"; + $app->loadClass('pclzip', true); + $zip = new pclzip($fileName); + $zip->create($repoDir, PCLZIP_OPT_REMOVE_PATH, $repoDir); + + $zfile = $app->loadClass('zfile'); + $zfile->removeDir($repoDir); + return $config->webRoot . $app->getAppName() . 'data' . DS . 'repo' . DS . $this->repo->name . '.zip'; + } } diff --git a/lib/sqlparser/vendor/autoload.php b/lib/sqlparser/vendor/autoload.php new file mode 100644 index 0000000000..574e09e334 --- /dev/null +++ b/lib/sqlparser/vendor/autoload.php @@ -0,0 +1,7 @@ +realpath = realpath($opened_path) ?: $opened_path; + $opened_path = $this->realpath; + $this->handle = fopen($this->realpath, $mode); + $this->position = 0; + + return (bool) $this->handle; + } + + public function stream_read($count) + { + $data = fread($this->handle, $count); + + if ($this->position === 0) { + $data = preg_replace('{^#!.*\r?\n}', '', $data); + } + + $this->position += strlen($data); + + return $data; + } + + public function stream_cast($castAs) + { + return $this->handle; + } + + public function stream_close() + { + fclose($this->handle); + } + + public function stream_lock($operation) + { + return $operation ? flock($this->handle, $operation) : true; + } + + public function stream_seek($offset, $whence) + { + if (0 === fseek($this->handle, $offset, $whence)) { + $this->position = ftell($this->handle); + return true; + } + + return false; + } + + public function stream_tell() + { + return $this->position; + } + + public function stream_eof() + { + return feof($this->handle); + } + + public function stream_stat() + { + return array(); + } + + public function stream_set_option($option, $arg1, $arg2) + { + return true; + } + + public function url_stat($path, $flags) + { + $path = substr($path, 17); + if (file_exists($path)) { + return stat($path); + } + + return false; + } + } + } + + if (function_exists('stream_wrapper_register') && stream_wrapper_register('phpvfscomposer', 'Composer\BinProxyWrapper')) { + include("phpvfscomposer://" . __DIR__ . '/..'.'/phpmyadmin/sql-parser/bin/highlight-query'); + exit(0); + } +} + +include __DIR__ . '/..'.'/phpmyadmin/sql-parser/bin/highlight-query'; diff --git a/lib/sqlparser/vendor/bin/highlight-query.bat b/lib/sqlparser/vendor/bin/highlight-query.bat new file mode 100644 index 0000000000..792685adf6 --- /dev/null +++ b/lib/sqlparser/vendor/bin/highlight-query.bat @@ -0,0 +1,5 @@ +@ECHO OFF +setlocal DISABLEDELAYEDEXPANSION +SET BIN_TARGET=%~dp0/highlight-query +SET COMPOSER_RUNTIME_BIN_DIR=%~dp0 +php "%BIN_TARGET%" %* diff --git a/lib/sqlparser/vendor/bin/lint-query b/lib/sqlparser/vendor/bin/lint-query new file mode 100644 index 0000000000..1899debe97 --- /dev/null +++ b/lib/sqlparser/vendor/bin/lint-query @@ -0,0 +1,117 @@ +#!/usr/bin/env php +realpath = realpath($opened_path) ?: $opened_path; + $opened_path = $this->realpath; + $this->handle = fopen($this->realpath, $mode); + $this->position = 0; + + return (bool) $this->handle; + } + + public function stream_read($count) + { + $data = fread($this->handle, $count); + + if ($this->position === 0) { + $data = preg_replace('{^#!.*\r?\n}', '', $data); + } + + $this->position += strlen($data); + + return $data; + } + + public function stream_cast($castAs) + { + return $this->handle; + } + + public function stream_close() + { + fclose($this->handle); + } + + public function stream_lock($operation) + { + return $operation ? flock($this->handle, $operation) : true; + } + + public function stream_seek($offset, $whence) + { + if (0 === fseek($this->handle, $offset, $whence)) { + $this->position = ftell($this->handle); + return true; + } + + return false; + } + + public function stream_tell() + { + return $this->position; + } + + public function stream_eof() + { + return feof($this->handle); + } + + public function stream_stat() + { + return array(); + } + + public function stream_set_option($option, $arg1, $arg2) + { + return true; + } + + public function url_stat($path, $flags) + { + $path = substr($path, 17); + if (file_exists($path)) { + return stat($path); + } + + return false; + } + } + } + + if (function_exists('stream_wrapper_register') && stream_wrapper_register('phpvfscomposer', 'Composer\BinProxyWrapper')) { + include("phpvfscomposer://" . __DIR__ . '/..'.'/phpmyadmin/sql-parser/bin/lint-query'); + exit(0); + } +} + +include __DIR__ . '/..'.'/phpmyadmin/sql-parser/bin/lint-query'; diff --git a/lib/sqlparser/vendor/bin/lint-query.bat b/lib/sqlparser/vendor/bin/lint-query.bat new file mode 100644 index 0000000000..35fd2fdec1 --- /dev/null +++ b/lib/sqlparser/vendor/bin/lint-query.bat @@ -0,0 +1,5 @@ +@ECHO OFF +setlocal DISABLEDELAYEDEXPANSION +SET BIN_TARGET=%~dp0/lint-query +SET COMPOSER_RUNTIME_BIN_DIR=%~dp0 +php "%BIN_TARGET%" %* diff --git a/lib/sqlparser/vendor/bin/tokenize-query b/lib/sqlparser/vendor/bin/tokenize-query new file mode 100644 index 0000000000..f831afbfb4 --- /dev/null +++ b/lib/sqlparser/vendor/bin/tokenize-query @@ -0,0 +1,117 @@ +#!/usr/bin/env php +realpath = realpath($opened_path) ?: $opened_path; + $opened_path = $this->realpath; + $this->handle = fopen($this->realpath, $mode); + $this->position = 0; + + return (bool) $this->handle; + } + + public function stream_read($count) + { + $data = fread($this->handle, $count); + + if ($this->position === 0) { + $data = preg_replace('{^#!.*\r?\n}', '', $data); + } + + $this->position += strlen($data); + + return $data; + } + + public function stream_cast($castAs) + { + return $this->handle; + } + + public function stream_close() + { + fclose($this->handle); + } + + public function stream_lock($operation) + { + return $operation ? flock($this->handle, $operation) : true; + } + + public function stream_seek($offset, $whence) + { + if (0 === fseek($this->handle, $offset, $whence)) { + $this->position = ftell($this->handle); + return true; + } + + return false; + } + + public function stream_tell() + { + return $this->position; + } + + public function stream_eof() + { + return feof($this->handle); + } + + public function stream_stat() + { + return array(); + } + + public function stream_set_option($option, $arg1, $arg2) + { + return true; + } + + public function url_stat($path, $flags) + { + $path = substr($path, 17); + if (file_exists($path)) { + return stat($path); + } + + return false; + } + } + } + + if (function_exists('stream_wrapper_register') && stream_wrapper_register('phpvfscomposer', 'Composer\BinProxyWrapper')) { + include("phpvfscomposer://" . __DIR__ . '/..'.'/phpmyadmin/sql-parser/bin/tokenize-query'); + exit(0); + } +} + +include __DIR__ . '/..'.'/phpmyadmin/sql-parser/bin/tokenize-query'; diff --git a/lib/sqlparser/vendor/bin/tokenize-query.bat b/lib/sqlparser/vendor/bin/tokenize-query.bat new file mode 100644 index 0000000000..df002fc2e1 --- /dev/null +++ b/lib/sqlparser/vendor/bin/tokenize-query.bat @@ -0,0 +1,5 @@ +@ECHO OFF +setlocal DISABLEDELAYEDEXPANSION +SET BIN_TARGET=%~dp0/tokenize-query +SET COMPOSER_RUNTIME_BIN_DIR=%~dp0 +php "%BIN_TARGET%" %* diff --git a/lib/sqlparser/vendor/composer/ClassLoader.php b/lib/sqlparser/vendor/composer/ClassLoader.php new file mode 100644 index 0000000000..afef3fa2ad --- /dev/null +++ b/lib/sqlparser/vendor/composer/ClassLoader.php @@ -0,0 +1,572 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer\Autoload; + +/** + * ClassLoader implements a PSR-0, PSR-4 and classmap class loader. + * + * $loader = new \Composer\Autoload\ClassLoader(); + * + * // register classes with namespaces + * $loader->add('Symfony\Component', __DIR__.'/component'); + * $loader->add('Symfony', __DIR__.'/framework'); + * + * // activate the autoloader + * $loader->register(); + * + * // to enable searching the include path (eg. for PEAR packages) + * $loader->setUseIncludePath(true); + * + * In this example, if you try to use a class in the Symfony\Component + * namespace or one of its children (Symfony\Component\Console for instance), + * the autoloader will first look for the class under the component/ + * directory, and it will then fallback to the framework/ directory if not + * found before giving up. + * + * This class is loosely based on the Symfony UniversalClassLoader. + * + * @author Fabien Potencier + * @author Jordi Boggiano + * @see https://www.php-fig.org/psr/psr-0/ + * @see https://www.php-fig.org/psr/psr-4/ + */ +class ClassLoader +{ + /** @var ?string */ + private $vendorDir; + + // PSR-4 + /** + * @var array[] + * @psalm-var array> + */ + private $prefixLengthsPsr4 = array(); + /** + * @var array[] + * @psalm-var array> + */ + private $prefixDirsPsr4 = array(); + /** + * @var array[] + * @psalm-var array + */ + private $fallbackDirsPsr4 = array(); + + // PSR-0 + /** + * @var array[] + * @psalm-var array> + */ + private $prefixesPsr0 = array(); + /** + * @var array[] + * @psalm-var array + */ + private $fallbackDirsPsr0 = array(); + + /** @var bool */ + private $useIncludePath = false; + + /** + * @var string[] + * @psalm-var array + */ + private $classMap = array(); + + /** @var bool */ + private $classMapAuthoritative = false; + + /** + * @var bool[] + * @psalm-var array + */ + private $missingClasses = array(); + + /** @var ?string */ + private $apcuPrefix; + + /** + * @var self[] + */ + private static $registeredLoaders = array(); + + /** + * @param ?string $vendorDir + */ + public function __construct($vendorDir = null) + { + $this->vendorDir = $vendorDir; + } + + /** + * @return string[] + */ + public function getPrefixes() + { + if (!empty($this->prefixesPsr0)) { + return call_user_func_array('array_merge', array_values($this->prefixesPsr0)); + } + + return array(); + } + + /** + * @return array[] + * @psalm-return array> + */ + public function getPrefixesPsr4() + { + return $this->prefixDirsPsr4; + } + + /** + * @return array[] + * @psalm-return array + */ + public function getFallbackDirs() + { + return $this->fallbackDirsPsr0; + } + + /** + * @return array[] + * @psalm-return array + */ + public function getFallbackDirsPsr4() + { + return $this->fallbackDirsPsr4; + } + + /** + * @return string[] Array of classname => path + * @psalm-return array + */ + public function getClassMap() + { + return $this->classMap; + } + + /** + * @param string[] $classMap Class to filename map + * @psalm-param array $classMap + * + * @return void + */ + public function addClassMap(array $classMap) + { + if ($this->classMap) { + $this->classMap = array_merge($this->classMap, $classMap); + } else { + $this->classMap = $classMap; + } + } + + /** + * Registers a set of PSR-0 directories for a given prefix, either + * appending or prepending to the ones previously set for this prefix. + * + * @param string $prefix The prefix + * @param string[]|string $paths The PSR-0 root directories + * @param bool $prepend Whether to prepend the directories + * + * @return void + */ + public function add($prefix, $paths, $prepend = false) + { + if (!$prefix) { + if ($prepend) { + $this->fallbackDirsPsr0 = array_merge( + (array) $paths, + $this->fallbackDirsPsr0 + ); + } else { + $this->fallbackDirsPsr0 = array_merge( + $this->fallbackDirsPsr0, + (array) $paths + ); + } + + return; + } + + $first = $prefix[0]; + if (!isset($this->prefixesPsr0[$first][$prefix])) { + $this->prefixesPsr0[$first][$prefix] = (array) $paths; + + return; + } + if ($prepend) { + $this->prefixesPsr0[$first][$prefix] = array_merge( + (array) $paths, + $this->prefixesPsr0[$first][$prefix] + ); + } else { + $this->prefixesPsr0[$first][$prefix] = array_merge( + $this->prefixesPsr0[$first][$prefix], + (array) $paths + ); + } + } + + /** + * Registers a set of PSR-4 directories for a given namespace, either + * appending or prepending to the ones previously set for this namespace. + * + * @param string $prefix The prefix/namespace, with trailing '\\' + * @param string[]|string $paths The PSR-4 base directories + * @param bool $prepend Whether to prepend the directories + * + * @throws \InvalidArgumentException + * + * @return void + */ + public function addPsr4($prefix, $paths, $prepend = false) + { + if (!$prefix) { + // Register directories for the root namespace. + if ($prepend) { + $this->fallbackDirsPsr4 = array_merge( + (array) $paths, + $this->fallbackDirsPsr4 + ); + } else { + $this->fallbackDirsPsr4 = array_merge( + $this->fallbackDirsPsr4, + (array) $paths + ); + } + } elseif (!isset($this->prefixDirsPsr4[$prefix])) { + // Register directories for a new namespace. + $length = strlen($prefix); + if ('\\' !== $prefix[$length - 1]) { + throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); + } + $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; + $this->prefixDirsPsr4[$prefix] = (array) $paths; + } elseif ($prepend) { + // Prepend directories for an already registered namespace. + $this->prefixDirsPsr4[$prefix] = array_merge( + (array) $paths, + $this->prefixDirsPsr4[$prefix] + ); + } else { + // Append directories for an already registered namespace. + $this->prefixDirsPsr4[$prefix] = array_merge( + $this->prefixDirsPsr4[$prefix], + (array) $paths + ); + } + } + + /** + * Registers a set of PSR-0 directories for a given prefix, + * replacing any others previously set for this prefix. + * + * @param string $prefix The prefix + * @param string[]|string $paths The PSR-0 base directories + * + * @return void + */ + public function set($prefix, $paths) + { + if (!$prefix) { + $this->fallbackDirsPsr0 = (array) $paths; + } else { + $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths; + } + } + + /** + * Registers a set of PSR-4 directories for a given namespace, + * replacing any others previously set for this namespace. + * + * @param string $prefix The prefix/namespace, with trailing '\\' + * @param string[]|string $paths The PSR-4 base directories + * + * @throws \InvalidArgumentException + * + * @return void + */ + public function setPsr4($prefix, $paths) + { + if (!$prefix) { + $this->fallbackDirsPsr4 = (array) $paths; + } else { + $length = strlen($prefix); + if ('\\' !== $prefix[$length - 1]) { + throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); + } + $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; + $this->prefixDirsPsr4[$prefix] = (array) $paths; + } + } + + /** + * Turns on searching the include path for class files. + * + * @param bool $useIncludePath + * + * @return void + */ + public function setUseIncludePath($useIncludePath) + { + $this->useIncludePath = $useIncludePath; + } + + /** + * Can be used to check if the autoloader uses the include path to check + * for classes. + * + * @return bool + */ + public function getUseIncludePath() + { + return $this->useIncludePath; + } + + /** + * Turns off searching the prefix and fallback directories for classes + * that have not been registered with the class map. + * + * @param bool $classMapAuthoritative + * + * @return void + */ + public function setClassMapAuthoritative($classMapAuthoritative) + { + $this->classMapAuthoritative = $classMapAuthoritative; + } + + /** + * Should class lookup fail if not found in the current class map? + * + * @return bool + */ + public function isClassMapAuthoritative() + { + return $this->classMapAuthoritative; + } + + /** + * APCu prefix to use to cache found/not-found classes, if the extension is enabled. + * + * @param string|null $apcuPrefix + * + * @return void + */ + public function setApcuPrefix($apcuPrefix) + { + $this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null; + } + + /** + * The APCu prefix in use, or null if APCu caching is not enabled. + * + * @return string|null + */ + public function getApcuPrefix() + { + return $this->apcuPrefix; + } + + /** + * Registers this instance as an autoloader. + * + * @param bool $prepend Whether to prepend the autoloader or not + * + * @return void + */ + public function register($prepend = false) + { + spl_autoload_register(array($this, 'loadClass'), true, $prepend); + + if (null === $this->vendorDir) { + return; + } + + if ($prepend) { + self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders; + } else { + unset(self::$registeredLoaders[$this->vendorDir]); + self::$registeredLoaders[$this->vendorDir] = $this; + } + } + + /** + * Unregisters this instance as an autoloader. + * + * @return void + */ + public function unregister() + { + spl_autoload_unregister(array($this, 'loadClass')); + + if (null !== $this->vendorDir) { + unset(self::$registeredLoaders[$this->vendorDir]); + } + } + + /** + * Loads the given class or interface. + * + * @param string $class The name of the class + * @return true|null True if loaded, null otherwise + */ + public function loadClass($class) + { + if ($file = $this->findFile($class)) { + includeFile($file); + + return true; + } + + return null; + } + + /** + * Finds the path to the file where the class is defined. + * + * @param string $class The name of the class + * + * @return string|false The path if found, false otherwise + */ + public function findFile($class) + { + // class map lookup + if (isset($this->classMap[$class])) { + return $this->classMap[$class]; + } + if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) { + return false; + } + if (null !== $this->apcuPrefix) { + $file = apcu_fetch($this->apcuPrefix.$class, $hit); + if ($hit) { + return $file; + } + } + + $file = $this->findFileWithExtension($class, '.php'); + + // Search for Hack files if we are running on HHVM + if (false === $file && defined('HHVM_VERSION')) { + $file = $this->findFileWithExtension($class, '.hh'); + } + + if (null !== $this->apcuPrefix) { + apcu_add($this->apcuPrefix.$class, $file); + } + + if (false === $file) { + // Remember that this class does not exist. + $this->missingClasses[$class] = true; + } + + return $file; + } + + /** + * Returns the currently registered loaders indexed by their corresponding vendor directories. + * + * @return self[] + */ + public static function getRegisteredLoaders() + { + return self::$registeredLoaders; + } + + /** + * @param string $class + * @param string $ext + * @return string|false + */ + private function findFileWithExtension($class, $ext) + { + // PSR-4 lookup + $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext; + + $first = $class[0]; + if (isset($this->prefixLengthsPsr4[$first])) { + $subPath = $class; + while (false !== $lastPos = strrpos($subPath, '\\')) { + $subPath = substr($subPath, 0, $lastPos); + $search = $subPath . '\\'; + if (isset($this->prefixDirsPsr4[$search])) { + $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1); + foreach ($this->prefixDirsPsr4[$search] as $dir) { + if (file_exists($file = $dir . $pathEnd)) { + return $file; + } + } + } + } + } + + // PSR-4 fallback dirs + foreach ($this->fallbackDirsPsr4 as $dir) { + if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) { + return $file; + } + } + + // PSR-0 lookup + if (false !== $pos = strrpos($class, '\\')) { + // namespaced class name + $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1) + . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR); + } else { + // PEAR-like class name + $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext; + } + + if (isset($this->prefixesPsr0[$first])) { + foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) { + if (0 === strpos($class, $prefix)) { + foreach ($dirs as $dir) { + if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { + return $file; + } + } + } + } + } + + // PSR-0 fallback dirs + foreach ($this->fallbackDirsPsr0 as $dir) { + if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { + return $file; + } + } + + // PSR-0 include paths. + if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) { + return $file; + } + + return false; + } +} + +/** + * Scope isolated include. + * + * Prevents access to $this/self from included files. + * + * @param string $file + * @return void + * @private + */ +function includeFile($file) +{ + include $file; +} diff --git a/lib/sqlparser/vendor/composer/InstalledVersions.php b/lib/sqlparser/vendor/composer/InstalledVersions.php new file mode 100644 index 0000000000..d50e0c9fcc --- /dev/null +++ b/lib/sqlparser/vendor/composer/InstalledVersions.php @@ -0,0 +1,350 @@ + + * Jordi Boggiano + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Composer; + +use Composer\Autoload\ClassLoader; +use Composer\Semver\VersionParser; + +/** + * This class is copied in every Composer installed project and available to all + * + * See also https://getcomposer.org/doc/07-runtime.md#installed-versions + * + * To require its presence, you can require `composer-runtime-api ^2.0` + */ +class InstalledVersions +{ + /** + * @var mixed[]|null + * @psalm-var array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array}|array{}|null + */ + private static $installed; + + /** + * @var bool|null + */ + private static $canGetVendors; + + /** + * @var array[] + * @psalm-var array}> + */ + private static $installedByVendor = array(); + + /** + * Returns a list of all package names which are present, either by being installed, replaced or provided + * + * @return string[] + * @psalm-return list + */ + public static function getInstalledPackages() + { + $packages = array(); + foreach (self::getInstalled() as $installed) { + $packages[] = array_keys($installed['versions']); + } + + if (1 === \count($packages)) { + return $packages[0]; + } + + return array_keys(array_flip(\call_user_func_array('array_merge', $packages))); + } + + /** + * Returns a list of all package names with a specific type e.g. 'library' + * + * @param string $type + * @return string[] + * @psalm-return list + */ + public static function getInstalledPackagesByType($type) + { + $packagesByType = array(); + + foreach (self::getInstalled() as $installed) { + foreach ($installed['versions'] as $name => $package) { + if (isset($package['type']) && $package['type'] === $type) { + $packagesByType[] = $name; + } + } + } + + return $packagesByType; + } + + /** + * Checks whether the given package is installed + * + * This also returns true if the package name is provided or replaced by another package + * + * @param string $packageName + * @param bool $includeDevRequirements + * @return bool + */ + public static function isInstalled($packageName, $includeDevRequirements = true) + { + foreach (self::getInstalled() as $installed) { + if (isset($installed['versions'][$packageName])) { + return $includeDevRequirements || empty($installed['versions'][$packageName]['dev_requirement']); + } + } + + return false; + } + + /** + * Checks whether the given package satisfies a version constraint + * + * e.g. If you want to know whether version 2.3+ of package foo/bar is installed, you would call: + * + * Composer\InstalledVersions::satisfies(new VersionParser, 'foo/bar', '^2.3') + * + * @param VersionParser $parser Install composer/semver to have access to this class and functionality + * @param string $packageName + * @param string|null $constraint A version constraint to check for, if you pass one you have to make sure composer/semver is required by your package + * @return bool + */ + public static function satisfies(VersionParser $parser, $packageName, $constraint) + { + $constraint = $parser->parseConstraints($constraint); + $provided = $parser->parseConstraints(self::getVersionRanges($packageName)); + + return $provided->matches($constraint); + } + + /** + * Returns a version constraint representing all the range(s) which are installed for a given package + * + * It is easier to use this via isInstalled() with the $constraint argument if you need to check + * whether a given version of a package is installed, and not just whether it exists + * + * @param string $packageName + * @return string Version constraint usable with composer/semver + */ + public static function getVersionRanges($packageName) + { + foreach (self::getInstalled() as $installed) { + if (!isset($installed['versions'][$packageName])) { + continue; + } + + $ranges = array(); + if (isset($installed['versions'][$packageName]['pretty_version'])) { + $ranges[] = $installed['versions'][$packageName]['pretty_version']; + } + if (array_key_exists('aliases', $installed['versions'][$packageName])) { + $ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']); + } + if (array_key_exists('replaced', $installed['versions'][$packageName])) { + $ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']); + } + if (array_key_exists('provided', $installed['versions'][$packageName])) { + $ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']); + } + + return implode(' || ', $ranges); + } + + throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); + } + + /** + * @param string $packageName + * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present + */ + public static function getVersion($packageName) + { + foreach (self::getInstalled() as $installed) { + if (!isset($installed['versions'][$packageName])) { + continue; + } + + if (!isset($installed['versions'][$packageName]['version'])) { + return null; + } + + return $installed['versions'][$packageName]['version']; + } + + throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); + } + + /** + * @param string $packageName + * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present + */ + public static function getPrettyVersion($packageName) + { + foreach (self::getInstalled() as $installed) { + if (!isset($installed['versions'][$packageName])) { + continue; + } + + if (!isset($installed['versions'][$packageName]['pretty_version'])) { + return null; + } + + return $installed['versions'][$packageName]['pretty_version']; + } + + throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); + } + + /** + * @param string $packageName + * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as reference + */ + public static function getReference($packageName) + { + foreach (self::getInstalled() as $installed) { + if (!isset($installed['versions'][$packageName])) { + continue; + } + + if (!isset($installed['versions'][$packageName]['reference'])) { + return null; + } + + return $installed['versions'][$packageName]['reference']; + } + + throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); + } + + /** + * @param string $packageName + * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as install path. Packages of type metapackages also have a null install path. + */ + public static function getInstallPath($packageName) + { + foreach (self::getInstalled() as $installed) { + if (!isset($installed['versions'][$packageName])) { + continue; + } + + return isset($installed['versions'][$packageName]['install_path']) ? $installed['versions'][$packageName]['install_path'] : null; + } + + throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); + } + + /** + * @return array + * @psalm-return array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string} + */ + public static function getRootPackage() + { + $installed = self::getInstalled(); + + return $installed[0]['root']; + } + + /** + * Returns the raw installed.php data for custom implementations + * + * @deprecated Use getAllRawData() instead which returns all datasets for all autoloaders present in the process. getRawData only returns the first dataset loaded, which may not be what you expect. + * @return array[] + * @psalm-return array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array} + */ + public static function getRawData() + { + @trigger_error('getRawData only returns the first dataset loaded, which may not be what you expect. Use getAllRawData() instead which returns all datasets for all autoloaders present in the process.', E_USER_DEPRECATED); + + if (null === self::$installed) { + // only require the installed.php file if this file is loaded from its dumped location, + // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937 + if (substr(__DIR__, -8, 1) !== 'C') { + self::$installed = include __DIR__ . '/installed.php'; + } else { + self::$installed = array(); + } + } + + return self::$installed; + } + + /** + * Returns the raw data of all installed.php which are currently loaded for custom implementations + * + * @return array[] + * @psalm-return list}> + */ + public static function getAllRawData() + { + return self::getInstalled(); + } + + /** + * Lets you reload the static array from another file + * + * This is only useful for complex integrations in which a project needs to use + * this class but then also needs to execute another project's autoloader in process, + * and wants to ensure both projects have access to their version of installed.php. + * + * A typical case would be PHPUnit, where it would need to make sure it reads all + * the data it needs from this class, then call reload() with + * `require $CWD/vendor/composer/installed.php` (or similar) as input to make sure + * the project in which it runs can then also use this class safely, without + * interference between PHPUnit's dependencies and the project's dependencies. + * + * @param array[] $data A vendor/composer/installed.php data set + * @return void + * + * @psalm-param array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[], dev: bool, install_path: string, type: string}, versions: array} $data + */ + public static function reload($data) + { + self::$installed = $data; + self::$installedByVendor = array(); + } + + /** + * @return array[] + * @psalm-return list}> + */ + private static function getInstalled() + { + if (null === self::$canGetVendors) { + self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders'); + } + + $installed = array(); + + if (self::$canGetVendors) { + foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) { + if (isset(self::$installedByVendor[$vendorDir])) { + $installed[] = self::$installedByVendor[$vendorDir]; + } elseif (is_file($vendorDir.'/composer/installed.php')) { + $installed[] = self::$installedByVendor[$vendorDir] = require $vendorDir.'/composer/installed.php'; + if (null === self::$installed && strtr($vendorDir.'/composer', '\\', '/') === strtr(__DIR__, '\\', '/')) { + self::$installed = $installed[count($installed) - 1]; + } + } + } + } + + if (null === self::$installed) { + // only require the installed.php file if this file is loaded from its dumped location, + // and not from its source location in the composer/composer package, see https://github.com/composer/composer/issues/9937 + if (substr(__DIR__, -8, 1) !== 'C') { + self::$installed = require __DIR__ . '/installed.php'; + } else { + self::$installed = array(); + } + } + $installed[] = self::$installed; + + return $installed; + } +} diff --git a/lib/sqlparser/vendor/composer/LICENSE b/lib/sqlparser/vendor/composer/LICENSE new file mode 100644 index 0000000000..f27399a042 --- /dev/null +++ b/lib/sqlparser/vendor/composer/LICENSE @@ -0,0 +1,21 @@ + +Copyright (c) Nils Adermann, Jordi Boggiano + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is furnished +to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + diff --git a/lib/sqlparser/vendor/composer/autoload_classmap.php b/lib/sqlparser/vendor/composer/autoload_classmap.php new file mode 100644 index 0000000000..b26f1b13b1 --- /dev/null +++ b/lib/sqlparser/vendor/composer/autoload_classmap.php @@ -0,0 +1,10 @@ + $vendorDir . '/composer/InstalledVersions.php', +); diff --git a/lib/sqlparser/vendor/composer/autoload_files.php b/lib/sqlparser/vendor/composer/autoload_files.php new file mode 100644 index 0000000000..315ab83bcd --- /dev/null +++ b/lib/sqlparser/vendor/composer/autoload_files.php @@ -0,0 +1,10 @@ + $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php', +); diff --git a/lib/sqlparser/vendor/composer/autoload_namespaces.php b/lib/sqlparser/vendor/composer/autoload_namespaces.php new file mode 100644 index 0000000000..b7fc0125db --- /dev/null +++ b/lib/sqlparser/vendor/composer/autoload_namespaces.php @@ -0,0 +1,9 @@ + array($vendorDir . '/symfony/polyfill-mbstring'), + 'PhpMyAdmin\\SqlParser\\' => array($vendorDir . '/phpmyadmin/sql-parser/src'), +); diff --git a/lib/sqlparser/vendor/composer/autoload_real.php b/lib/sqlparser/vendor/composer/autoload_real.php new file mode 100644 index 0000000000..cb907c2e31 --- /dev/null +++ b/lib/sqlparser/vendor/composer/autoload_real.php @@ -0,0 +1,80 @@ += 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded()); + if ($useStaticLoader) { + require __DIR__ . '/autoload_static.php'; + + call_user_func(\Composer\Autoload\ComposerStaticInitea8a35d9469bbaa4fe54772aaf0cb8ae::getInitializer($loader)); + } else { + $map = require __DIR__ . '/autoload_namespaces.php'; + foreach ($map as $namespace => $path) { + $loader->set($namespace, $path); + } + + $map = require __DIR__ . '/autoload_psr4.php'; + foreach ($map as $namespace => $path) { + $loader->setPsr4($namespace, $path); + } + + $classMap = require __DIR__ . '/autoload_classmap.php'; + if ($classMap) { + $loader->addClassMap($classMap); + } + } + + $loader->register(true); + + if ($useStaticLoader) { + $includeFiles = Composer\Autoload\ComposerStaticInitea8a35d9469bbaa4fe54772aaf0cb8ae::$files; + } else { + $includeFiles = require __DIR__ . '/autoload_files.php'; + } + foreach ($includeFiles as $fileIdentifier => $file) { + composerRequireea8a35d9469bbaa4fe54772aaf0cb8ae($fileIdentifier, $file); + } + + return $loader; + } +} + +/** + * @param string $fileIdentifier + * @param string $file + * @return void + */ +function composerRequireea8a35d9469bbaa4fe54772aaf0cb8ae($fileIdentifier, $file) +{ + if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { + $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true; + + require $file; + } +} diff --git a/lib/sqlparser/vendor/composer/autoload_static.php b/lib/sqlparser/vendor/composer/autoload_static.php new file mode 100644 index 0000000000..590d537a8c --- /dev/null +++ b/lib/sqlparser/vendor/composer/autoload_static.php @@ -0,0 +1,48 @@ + __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php', + ); + + public static $prefixLengthsPsr4 = array ( + 'S' => + array ( + 'Symfony\\Polyfill\\Mbstring\\' => 26, + ), + 'P' => + array ( + 'PhpMyAdmin\\SqlParser\\' => 21, + ), + ); + + public static $prefixDirsPsr4 = array ( + 'Symfony\\Polyfill\\Mbstring\\' => + array ( + 0 => __DIR__ . '/..' . '/symfony/polyfill-mbstring', + ), + 'PhpMyAdmin\\SqlParser\\' => + array ( + 0 => __DIR__ . '/..' . '/phpmyadmin/sql-parser/src', + ), + ); + + public static $classMap = array ( + 'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php', + ); + + public static function getInitializer(ClassLoader $loader) + { + return \Closure::bind(function () use ($loader) { + $loader->prefixLengthsPsr4 = ComposerStaticInitea8a35d9469bbaa4fe54772aaf0cb8ae::$prefixLengthsPsr4; + $loader->prefixDirsPsr4 = ComposerStaticInitea8a35d9469bbaa4fe54772aaf0cb8ae::$prefixDirsPsr4; + $loader->classMap = ComposerStaticInitea8a35d9469bbaa4fe54772aaf0cb8ae::$classMap; + + }, null, ClassLoader::class); + } +} diff --git a/lib/sqlparser/vendor/composer/installed.json b/lib/sqlparser/vendor/composer/installed.json new file mode 100644 index 0000000000..7c5b5e296b --- /dev/null +++ b/lib/sqlparser/vendor/composer/installed.json @@ -0,0 +1,168 @@ +{ + "packages": [ + { + "name": "phpmyadmin/sql-parser", + "version": "5.5.0", + "version_normalized": "5.5.0.0", + "source": { + "type": "git", + "url": "https://github.com/phpmyadmin/sql-parser.git", + "reference": "8ab99cd0007d880f49f5aa1807033dbfa21b1cb5" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/phpmyadmin/sql-parser/zipball/8ab99cd0007d880f49f5aa1807033dbfa21b1cb5", + "reference": "8ab99cd0007d880f49f5aa1807033dbfa21b1cb5", + "shasum": "" + }, + "require": { + "php": "^7.1 || ^8.0", + "symfony/polyfill-mbstring": "^1.3" + }, + "conflict": { + "phpmyadmin/motranslator": "<3.0" + }, + "require-dev": { + "phpmyadmin/coding-standard": "^3.0", + "phpmyadmin/motranslator": "^4.0 || ^5.0", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.2", + "phpstan/phpstan-phpunit": "^1.0", + "phpunit/php-code-coverage": "*", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "psalm/plugin-phpunit": "^0.16.1", + "vimeo/psalm": "^4.11", + "zumba/json-serializer": "^3.0" + }, + "suggest": { + "ext-mbstring": "For best performance", + "phpmyadmin/motranslator": "Translate messages to your favorite locale" + }, + "time": "2021-12-09T04:31:52+00:00", + "bin": [ + "bin/highlight-query", + "bin/lint-query", + "bin/tokenize-query" + ], + "type": "library", + "installation-source": "dist", + "autoload": { + "psr-4": { + "PhpMyAdmin\\SqlParser\\": "src" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "GPL-2.0-or-later" + ], + "authors": [ + { + "name": "The phpMyAdmin Team", + "email": "developers@phpmyadmin.net", + "homepage": "https://www.phpmyadmin.net/team/" + } + ], + "description": "A validating SQL lexer and parser with a focus on MySQL dialect.", + "homepage": "https://github.com/phpmyadmin/sql-parser", + "keywords": [ + "analysis", + "lexer", + "parser", + "sql" + ], + "support": { + "issues": "https://github.com/phpmyadmin/sql-parser/issues", + "source": "https://github.com/phpmyadmin/sql-parser" + }, + "install-path": "../phpmyadmin/sql-parser" + }, + { + "name": "symfony/polyfill-mbstring", + "version": "v1.26.0", + "version_normalized": "1.26.0.0", + "source": { + "type": "git", + "url": "https://github.com/symfony/polyfill-mbstring.git", + "reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/symfony/polyfill-mbstring/zipball/9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e", + "reference": "9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e", + "shasum": "" + }, + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-mbstring": "*" + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "time": "2022-05-24T11:49:31+00:00", + "type": "library", + "extra": { + "branch-alias": { + "dev-main": "1.26-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + }, + "installation-source": "dist", + "autoload": { + "files": [ + "bootstrap.php" + ], + "psr-4": { + "Symfony\\Polyfill\\Mbstring\\": "" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "description": "Symfony polyfill for the Mbstring extension", + "homepage": "https://symfony.com", + "keywords": [ + "compatibility", + "mbstring", + "polyfill", + "portable", + "shim" + ], + "support": { + "source": "https://github.com/symfony/polyfill-mbstring/tree/v1.26.0" + }, + "funding": [ + { + "url": "https://symfony.com/sponsor", + "type": "custom" + }, + { + "url": "https://github.com/fabpot", + "type": "github" + }, + { + "url": "https://tidelift.com/funding/github/packagist/symfony/symfony", + "type": "tidelift" + } + ], + "install-path": "../symfony/polyfill-mbstring" + } + ], + "dev": true, + "dev-package-names": [] +} diff --git a/lib/sqlparser/vendor/composer/installed.php b/lib/sqlparser/vendor/composer/installed.php new file mode 100644 index 0000000000..f069b58858 --- /dev/null +++ b/lib/sqlparser/vendor/composer/installed.php @@ -0,0 +1,41 @@ + array( + 'pretty_version' => '1.0.0+no-version-set', + 'version' => '1.0.0.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../../', + 'aliases' => array(), + 'reference' => NULL, + 'name' => '__root__', + 'dev' => true, + ), + 'versions' => array( + '__root__' => array( + 'pretty_version' => '1.0.0+no-version-set', + 'version' => '1.0.0.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../../', + 'aliases' => array(), + 'reference' => NULL, + 'dev_requirement' => false, + ), + 'phpmyadmin/sql-parser' => array( + 'pretty_version' => '5.5.0', + 'version' => '5.5.0.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../phpmyadmin/sql-parser', + 'aliases' => array(), + 'reference' => '8ab99cd0007d880f49f5aa1807033dbfa21b1cb5', + 'dev_requirement' => false, + ), + 'symfony/polyfill-mbstring' => array( + 'pretty_version' => 'v1.26.0', + 'version' => '1.26.0.0', + 'type' => 'library', + 'install_path' => __DIR__ . '/../symfony/polyfill-mbstring', + 'aliases' => array(), + 'reference' => '9344f9cb97f3b19424af1a21a3b0e75b0a7d8d7e', + 'dev_requirement' => false, + ), + ), +); diff --git a/lib/sqlparser/vendor/composer/platform_check.php b/lib/sqlparser/vendor/composer/platform_check.php new file mode 100644 index 0000000000..6d3407dbb6 --- /dev/null +++ b/lib/sqlparser/vendor/composer/platform_check.php @@ -0,0 +1,26 @@ += 70100)) { + $issues[] = 'Your Composer dependencies require a PHP version ">= 7.1.0". You are running ' . PHP_VERSION . '.'; +} + +if ($issues) { + if (!headers_sent()) { + header('HTTP/1.1 500 Internal Server Error'); + } + if (!ini_get('display_errors')) { + if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') { + fwrite(STDERR, 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . implode(PHP_EOL, $issues) . PHP_EOL.PHP_EOL); + } elseif (!headers_sent()) { + echo 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . str_replace('You are running '.PHP_VERSION.'.', '', implode(PHP_EOL, $issues)) . PHP_EOL.PHP_EOL; + } + } + trigger_error( + 'Composer detected issues in your platform: ' . implode(' ', $issues), + E_USER_ERROR + ); +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/CHANGELOG.md b/lib/sqlparser/vendor/phpmyadmin/sql-parser/CHANGELOG.md new file mode 100644 index 0000000000..293780b4ab --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/CHANGELOG.md @@ -0,0 +1,489 @@ +# Change Log + +## [5.5.0] - 2021-12-08 + +* Add WITH support (#165, #331) +* Fixed BufferedQuery when it has an odd number of backslashes in the end (#340) +* Fixed the issue that ignored the body tokens when creating views with union (#343) +* Fixed parser errors on "ALTER TABLE" statements to add columns with SET type (#168) +* Fixed PHP 8.1 fatal errors on classes that "implements ArrayAccess" +* Add new contexts for MariaDB 10.4, 10.5, 10.6 (#328) +* Fixed parser errors for "ALTER USER" with options (#342) +* Fixed handling of the procedures and functions's options where part of the body (#339) +* Fix PHP notice "Undefined index: name in src/Components/Key.php#206" for table keys using expressions (#347) +* Added support for MySQL 8.0 table structure KEY expressions (#347) +* Added support for KEY order (ASC/DESC) (#296) +* Added missing KEY options for MySQL and MariaDB (#348) +* Added support for ENFORCED and NOT ENFORCED on table create queries (#341) +* Performance improvement to use less the "ord()" function (#352) +* Added support for OVER() with an alias (AS) (#197) + +## [5.4.2] - 2021-02-05 + +* Added check for quoted symbol to avoid parser error in case of keyword (#317) +* Allow PHP 8 + +## [5.4.1] - 2020-10-15 + +* Fix array_key_exists warning when parsing a "DEFAULT FALSE" token (#299) + +## [5.4.0] - 2020-10-08 + +* EXISTS is also a function. (#297) +* Fix lexer to not allow numbers with letters (#300) +* Add support for INVISIBLE keyword (#292) +* Fix the "$" might be a character used in a name (#301) +* Fix use stream_select instead of non-blocking STDIN (#309) +* Add select validation to a create view statement (#310) + +## [5.3.1] - 2020-03-20 + +* Revert some changes with the understanding of ANSI_QUOTES mode and identifiers +* Suggest motranslator 5.0 in README + +## [5.3.0] - 2020-03-20 + +* Stop instanciating an object to check its class name. (#290) +* Replace sscanf by equivalent native PHP functions because sscanf can be disabled for security reasons. (#270) +* Allow phpunit 9 +* Allow phpmyadmin/motranslator 5.0 +* Fix for php error when "INSERT INTO x SET a = 1" is "INSERT INTO x SET = 1" (#295) +* Fixed lexer fails to detect "*" as a wildcard (#288) +* Fixed ANSI_QUOTES support (#284) +* Fixed parser mistakes with comments (#156) + +## [5.2.0] - 2020-01-07 + +* Fix ALTER TABLE ... PRIMARY/UNIQUE KEY results in error (#267) +* Prevent overwrite of offset in Limit clause by parenthesis (#275) +* Allow SCHEMA to be used in CREATE Database statement (#231) +* Add missing options in SET statement (#255) +* Add support for DROP USER statement (#259) +* Fix php error "undefined index" when replacing a non existing clause (#249) + +## [5.1.0] - 2019-11-12 + +* Fix for PHP deprecations messages about implode for php 7.4+ (#258) +* Parse CHECK keyword on table definition (#264) +* Parse truncate statement (#221) +* Fix wrong parsing of partitions (#265) + +## [5.0.0] - 2019-05-09 + +* Drop support for PHP 5.3, PHP 5.4, PHP 5.5, PHP 5.6, PHP 7.0 and HHVM +* Enable strict mode on PHP files +* Fix redundant whitespaces in build() outputs (#228) +* Fix incorrect error on DEFAULT keyword in ALTER operation (#229) +* Fix incorrect outputs from Query::getClause (#233) +* Add support for reading an SQL file from stdin +* Fix for missing tokenize-query in Composer's vendor/bin/ directory +* Fix for PHP warnings with an incomplete CASE expression (#241) +* Fix for error message with multiple CALL statements (#223) +* Recognize the question mark character as a parameter (#242) + +## [4.7.3] - 2021-12-08 + +- Fixed BufferedQuery when it has an odd number of backslashes in the end (#340) +- Fixed the issue that ignored the body tokens when creating views with union (#343) +- Fixed parser errors on "ALTER TABLE" statements to add columns with SET type (#168) +- Fixed parser errors for "ALTER USER" with options (#342) +- Fixed handling of the procedures and functions's options where part of the body (#339) +- Fix PHP notice "Undefined index: name in src/Components/Key.php#206" for table keys using functions (#347) +- Fix MySQL 8.0 table structure KEY expression not recognized (#347) +- Fix KEY order (ASC/DESC) not part of the KEY definition (#296) +- Fix missing KEY options for MySQL and MariaDB (#348) +- Fix validation error when using ENFORCED option (#341) + +## [4.7.2] - 2021-02-05 + +- Added check for quoted symbol to avoid parser error in case of keyword (#317) +- Adjust PHP version constraint to not support PHP 8.0 on the 4.7 series (5.x series supports it) + +## [4.7.1] - 2020-10-15 + +* Fix array_key_exists warning when parsing a "DEFAULT FALSE" token (#299) + +## [4.7.0] - 2020-10-08 + +* EXISTS is also a function. (#297) +* Fix lexer to not allow numbers with letters (#300) +* Add support for INVISIBLE keyword (#292) +* Fix the "$" might be a character used in a name (#301) +* Fix use stream_select instead of non-blocking STDIN (#309) +* Add select validation to a create view statement (#310) + +## [4.6.1] - 2020-03-20 + +* Revert some changes with the understanding of ANSI_QUOTES mode and identifiers +* Suggest motranslator 4.0 in README + +## [4.6.0] - 2020-03-20 + +* Stop instanciating an object to check its class name. (#290) +* Replace sscanf by equivalent native PHP functions because sscanf can be disabled for security reasons. (#270) +* Allow phpunit 7 +* Fix for php error when "INSERT INTO x SET a = 1" is "INSERT INTO x SET = 1" (#295) +* Fixed lexer fails to detect "*" as a wildcard (#288) +* Fixed ANSI_QUOTES support (#284) +* Fixed parser mistakes with comments (#156) + +## [4.5.0] - 2020-01-07 + +* Fix ALTER TABLE ... PRIMARY/UNIQUE KEY results in error (#267) +* Prevent overwrite of offset in Limit clause by parenthesis (#275) +* Allow SCHEMA to be used in CREATE Database statement (#231) +* Add missing options in SET statement (#255) +* Add support for DROP USER statement (#259) +* Fix php error "undefined index" when replacing a non existing clause (#249) + +## [4.4.0] - 2019-11-12 + +* Fix for PHP deprecations messages about implode for php 7.4+ (#258) +* Parse CHECK keyword on table definition (#264) +* Parse truncate statement (#221) +* Fix wrong parsing of partitions (#265) + +## [4.3.2] - 2019-06-03 + +Backport fixes from 5.0.0 to QA branch: + +* Fix redundant whitespaces in build() outputs (#228) +* Fix incorrect error on DEFAULT keyword in ALTER operation (#229) +* Fix incorrect outputs from Query::getClause (#233) +* Add support for reading an SQL file from stdin +* Fix for missing tokenize-query in Composer's vendor/bin/ directory +* Fix for PHP warnings with an incomplete CASE expression (#241) +* Fix for error message with multiple CALL statements (#223) +* Recognize the question mark character as a parameter (#242) + +## [4.3.1] - 2019-01-05 + +* Fixed incorrect error thrown on DEFAULT keyword in ALTER statement (#218) + +## [4.3.0] - 2018-12-25 + +* Add support for aliases on CASE expressions (#162 and #192) +* Add support for INDEX hints in SELECT statement (#199) +* Add support for LOCK and UNLOCK TABLES statement (#180) +* Add detection of extraneous comma in UPDATE statement (#160) +* Add detection of a missing comma between two ALTER operations (#189) +* Add missing support for STRAIGHT_JOIN (#196) +* Add support for end options in SET statement (#190) +* Fix building of RENAME statements (#201) +* Add support for PURGE statements (#207) +* Add support for COLLATE keyword (#190) + +## [4.2.5] - 2018-10-31 + +* Fix issue with CREATE OR REPLACE VIEW. + +## [4.2.4] - 2017-12-06 + +* Fix parsing of CREATE TABLE with per field COLLATE. +* Improved Context::loadClosest to better deal with corner cases. +* Localization updates. + +## [4.2.3] - 2017-10-10 + +* Make mbstring extension optional (though Symfony polyfill). +* Fixed build CREATE TABLE query with PARTITIONS having ENGINE but not VALUES. + +## [4.2.2] - 2017-09-28 + +* Added support for binding parameters. + +## [4.2.1] - 2017-09-08 + +* Fixed minor bug in Query::getFlags. +* Localization updates. + +## [4.2.0] - 2017-08-30 + +* Initial support for MariaDB SQL contexts. +* Add support for MariaDB 10.3 INTERSECT and EXCEPT. + +## [4.1.10] - 2017-08-21 + +* Use custom LoaderException for context loading errors. + +## [4.1.9] - 2017-07-12 + +* Various code cleanups. +* Improved error handling of several invalid statements. + +## [4.1.8] - 2017-07-09 + +* Fixed parsing SQL comment at the end of query. +* Improved handing of non utf-8 strings. +* Added query flag for SET queries. + +## [4.1.7] - 2017-06-06 + +* Fixed setting combination SQL Modes. + +## [4.1.6] - 2017-06-01 + +* Fixed building query with GROUP BY clause. + +## [4.1.5] - 2017-05-15 + +* Fixed invalid lexing of queries with : in strings. +* Properly handle maximal length of delimiter. + +## [4.1.4] - 2017-05-05 + +* Fixed wrong extract of string tokens with escaped characters. +* Properly handle lowercase begin statement. + +## [4.1.3] - 2017-04-06 + +* Added support for DELETE ... JOIN clauses. +* Changed BufferedQuery to include comments in output. +* Fixed parsing of inline comments. + +## [4.1.2] - 2017-02-20 + +* Coding style improvements. +* Chinese localization. +* Improved order validatin for JOIN clauses. +* Improved pretty printing of JOIN clauses. +* Added support for LOAD DATA statements. + +## [4.1.1] - 2017-02-07 + +* Localization using phpmyadmin/motranslator is now optional. +* Improved testsuite. +* Better handling of non upper cased not reserved keywords. +* Minor performance and coding style improvements. + +## [4.1.0] - 2017-01-23 + +* Use phpmyadmin/motranslator to localize messages. + +## [4.0.1] - 2017-01-23 + +* Fixed CLI wrappers for new API. +* Fixed README for new API. + +## [4.0.0] - 2017-01-23 + +* Added PhpMyAdmin namespace prefix to follow PSR-4. + +## [3.4.17] - 2017-01-20 + +* Coding style fixes. +* Fixed indentation in HTML formatting. +* Fixed parsing of unterminated variables. +* Improved comments lexing. + +## [3.4.16] - 2017-01-06 + +* Coding style fixes. +* Properly handle operators AND, NOT, OR, XOR, DIV, MOD + +## [3.4.15] - 2017-01-02 + +* Fix return value of Formatter.toString() when type is text +* Fix parsing of FIELDS and LINES options in SELECT..INTO +* PHP 7.2 compatibility. +* Better parameter passing to query formatter. + +## [3.4.14] - 2016-11-30 + +* Improved parsing of UNION queries. +* Recognize BINARY function. + +## [3.4.13] - 2016-11-15 + +* Fix broken incorrect clause order detection for Joins. +* Add parsing of end options in Select statements. + +## [3.4.12] - 2016-11-09 + +* Added verification order of SELECT statement clauses. + +## [3.4.11] - 2016-10-25 + +* Fixed parsing of ON UPDATE option in field definition of TIMESTAMP type with precision +* Fixed parsing of NATURAL JOIN, CROSS JOIN and related joins. +* Fixed parsing of BEGIN/END labels. + +## [3.4.10] - 2016-10-03 + +* Fixed API regression on DELETE statement + +## [3.4.9] - 2016-10-03 + +* Added support for CASE expressions +* Support for parsing and building DELETE statement +* Support for parsing subqueries in FROM clause + +## [3.4.8] - 2016-09-22 + +* No change release to sync GitHub releases with Packagist + +## [3.4.7] - 2016-09-20 + +* Fix parsing of DEFINER without backquotes +* Fixed escaping HTML entities in HTML formatter +* Fixed escaping of control chars in CLI formatter + +## [3.4.6] - 2016-09-13 + +* Fix parsing of REPLACE INTO ... +* Fix parsing of INSERT ... ON DUPLICATE KEY UPDATE ... +* Extended testsuite +* Re-enabled PHP 5.3 support + +## [3.4.5] - 2016-09-13 + +* Fix parsing of INSERT...SELECT and INSERT...SET syntax +* Fix parsing of CREATE TABLE ... PARTITION +* Fix parsing of SET CHARACTER SET, CHARSET, NAMES +* Add Support for 'CREATE TABLE `table_copy` LIKE `table` + +## [3.4.4] - 2016-04-26 + +* Add support for FULL OUTER JOIN + +## [3.4.3] - 2016-04-19 + +* Fix parsing of query with \ + +## [3.4.2] - 2016-04-07 + +* Recognize UNION DISTINCT +* Recognize REGEXP and RLIKE operators + +## [3.4.1] - 2016-04-06 + +* Add FULLTEXT and SPATIAL keywords +* Properly parse CREATE TABLE [AS] SELECT +* Fix parsing of table with DEFAULT and COMMENT + +## [3.4.0] - 2016-02-23 + +* Fix parsing DEFAULT value on CREATE +* Fix parsing of ALTER VIEW + +## [3.3.1] - 2016-02-12 + +* Condition: Allow keyword `INTERVAL`. + +## [3.3.0] - 2016-02-12 + +* Expression: Refactored parsing options. + +## [3.2.0] - 2016-02-11 + +* Context: Added custom mode that avoids escaping when possible. + +## [3.1.0] - 2016-02-10 + +* ArrayObj: Handle more complex expressions in arrays. +* BufferedQuery: Backslashes in comments escaped characters in comments. +* Condition: Allow `IF` in conditions. +* Context: Add `;` as operator. +* Context: Updated contexts to contain `BIT` data type. +* CreateStatement: The `DEFAULT` option may be an expression. +* DescribeStatement: Added `DESC` as alias for `DESCRIBE`. +* Expression: Rewrote expression parsing. +* Misc: Added PHPUnit's Code Coverage 3.0 as a dependency. +* Misc: Added support for PHP 5.4 back. +* Misc: Removed dependency to Ctype. +* Misc: Repository transferred from @udan11 to @phpMyAdmin. +* Misc: Updated `.gitignore` to ignore `composer.lock`. +* Misc: Updated Composer and Travis configuration for PHP 7 and PHPUnit 5. +* Tools: Documented tags in `ContextGenerator`. + +## [3.0.8] - 2015-12-18 + +* Allow `NULL` in expressions. +* Downgraded PHPUnit to 4.8. Removed old PHP versions. +* Updated PHPUnit to 5.1 and fixed some of the tests. +* Added `UNION ALL` as a type of `UNION`. +* Expressions are permitted in `SET` operations. +* Added `STRAIGHT_JOIN` as a known type of join. +* Added missing definitions for `MATCH` and `AGAINST`. +* Added missing statement (`FLUSH` and `DEALLOCATE`). + +## [3.0.7] - 2015-11-12 + +* Expressions may begin with a function that is also a reserved keyword (e.g. `IF`). + +## [3.0.6] - 2015-11-12 + +* Fixed a bug where formatter split the function name and the parameters list. + +## [3.0.5] - 2015-11-08 + +* Add GRANT as known statement. +* Use JOIN expressions for flag detection. +* Fix the order of clauses in SELECT statements involving UNIONs. +* Added dummy parsers for CREATE USER and SET PASSWORD statements. +* Accept NOT operator in conditions. +* Fixed DELIMITER statements in BufferedQuery. +* Added INSERT statement builder. + +## [3.0.4] - 2015-10-21 + +* Fix error message in `SqlParser\Components\OptionsArray`. + +## [3.0.3] - 2015-10-10 + +* Avoid building a field multiple times if clause has synonyms. + +## [3.0.2] - 2015-10-10 + +* Add EXISTS as an acceptable keyword in conditions. + +## [3.0.1] - 2015-10-06 + +* Handle backslashes separately for `SqlParser\Utils\BufferedQuery`. Fixes a bug where backslashes in combination with strings weren't handled properly. + +## [3.0.0] - 2015-10-02 + +__Breaking changes:__ + +* `SqlParser\Components\Reference::$table` is now an instance of `SqlParser\Components\Expression` to support references from other tables. + +## [2.1.3] - 2015-10-02 + +* Add definitions for all JOIN clauses. + +## [2.1.2] - 2015-10-02 + +* Properly parse options when the value of the option is '='. + +## [2.1.1] - 2015-09-30 + +* Only RANGE and LIST type partitions support VALUES. + +## [2.1.0] - 2015-09-30 + +* Added utilities for handling tokens and tokens list. + +## [2.0.3] - 2015-09-30 + +* Added missing NOT IN operator. This caused troubles when parsing conditions that contained the `NOT IN` operator. + +## [2.0.2] - 2015-09-30 + +* Added support for `OUTER` as an optional keyword in joins. + +## [2.0.1] - 2015-09-30 + +* Fixed a bug related to (sub)partitions options not being included in the built component. Also, the option `ENGINE` was unrecognized. + +## [2.0.0] - 2015-09-25 + +* Better parsing for CREATE TABLE statements (related to breaking change 1). +* Added support for JSON data type. +* Refactoring and minor documentation improvements. + +__Breaking changes:__ +* `SqlParser\Components\Key::$columns` is now an array of arrays. Each array must contain a `name` key which represents the name of the column and an optional `length` key which represents the length of the column. + +## [1.0.0] - 2015-08-20 + +* First release of this library. diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/CONTRIBUTING.md b/lib/sqlparser/vendor/phpmyadmin/sql-parser/CONTRIBUTING.md new file mode 100644 index 0000000000..f89dacb302 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/CONTRIBUTING.md @@ -0,0 +1,53 @@ +# Contributing to SQL Parser + +## Reporting issues + +Our issue tracker is hosted at GitHub: + +https://github.com/phpmyadmin/sql-parser/issues + +Please search for existing issues before reporting new ones. + +## Working with Git checkout + +The dependencies are managed by Composer, to get them all installed (or update +on consequent runs) do: + +``` +composer update +``` + +## Submitting patches + +Please submit your patches using GitHub pull requests, this allows us to review +them and to run automated tests on the code. + +## Coding standards + +We do follow PSR-1 and PSR-2 coding standards. + +You can use phpcbf to fix the code to match our expectations: + +``` +./vendor/bin/phpcbf +``` + +## Testsuite + +Our code comes with quite comprehensive testsuite, it is automatically executed +on every commit and pull request, you can also run it locally: + +``` +./vendor/bin/phpunit +``` + +The testsuite relies on fixtures of parser states, in case you need to +regenerate some of these there are helper scripts in tools directory: + +``` +# Remove file you want to regenerate +rm tests/data/parser/parse.out + +# Run the generator located in the tools directory +./tools/run_generators.sh +``` diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/LICENSE.txt b/lib/sqlparser/vendor/phpmyadmin/sql-parser/LICENSE.txt new file mode 100644 index 0000000000..d159169d10 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/LICENSE.txt @@ -0,0 +1,339 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Lesser General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/README.md b/lib/sqlparser/vendor/phpmyadmin/sql-parser/README.md new file mode 100644 index 0000000000..ddf162763e --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/README.md @@ -0,0 +1,137 @@ +# SQL Parser + +A validating SQL lexer and parser with a focus on MySQL dialect. + +## Code status + +![Tests](https://github.com/phpmyadmin/sql-parser/workflows/Run%20tests/badge.svg?branch=master) +[![Code Coverage](https://scrutinizer-ci.com/g/phpmyadmin/sql-parser/badges/coverage.png?b=master)](https://scrutinizer-ci.com/g/phpmyadmin/sql-parser/?branch=master) +[![codecov.io](https://codecov.io/github/phpmyadmin/sql-parser/coverage.svg?branch=master)](https://codecov.io/github/phpmyadmin/sql-parser?branch=master) +[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/phpmyadmin/sql-parser/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/phpmyadmin/sql-parser/?branch=master) +[![Translation status](https://hosted.weblate.org/widgets/phpmyadmin/-/svg-badge.svg)](https://hosted.weblate.org/engage/phpmyadmin/?utm_source=widget) +[![Packagist](https://img.shields.io/packagist/dt/phpmyadmin/sql-parser.svg)](https://packagist.org/packages/phpmyadmin/sql-parser) +[![Open Source Helpers](https://www.codetriage.com/phpmyadmin/sql-parser/badges/users.svg)](https://www.codetriage.com/phpmyadmin/sql-parser) +[![Type coverage](https://shepherd.dev/github/phpmyadmin/sql-parser/coverage.svg)](https://shepherd.dev/github/phpmyadmin/sql-parser) +[![Infection MSI](https://badge.stryker-mutator.io/github.com/phpmyadmin/sql-parser/master)](https://infection.github.io) + +## Installation + +Please use [Composer][1] to install: + +```sh +composer require phpmyadmin/sql-parser +``` + +## Documentation + +The API documentation is available at +. + +## Usage + +### Command line utilities + +Command line utility to syntax highlight SQL query: + +```sh +./vendor/bin/highlight-query --query "SELECT 1" +``` + +Command line utility to lint SQL query: + +```sh +./vendor/bin/lint-query --query "SELECT 1" +``` + +Command line utility to tokenize SQL query: + +```sh +./vendor/bin/tokenize-query --query "SELECT 1" +``` + +All commands are able to parse input from stdin (standard in), such as: + +```sh +echo "SELECT 1" | ./vendor/bin/highlight-query +cat example.sql | ./vendor/bin/lint-query +``` + +### Formatting SQL query + +```php +echo PhpMyAdmin\SqlParser\Utils\Formatter::format($query, ['type' => 'html']); +``` + +### Discoverying query type + +```php +use PhpMyAdmin\SqlParser\Parser; +use PhpMyAdmin\SqlParser\Utils\Query; + +$query = 'OPTIMIZE TABLE tbl'; +$parser = new Parser($query); +$flags = Query::getFlags($parser->statements[0]); + +echo $flags['querytype']; +``` + +### Parsing and building SQL query + +```php +require __DIR__ . '/vendor/autoload.php'; + +$query1 = 'select * from a'; +$parser = new PhpMyAdmin\SqlParser\Parser($query1); + +// inspect query +var_dump($parser->statements[0]); // outputs object(PhpMyAdmin\SqlParser\Statements\SelectStatement) + +// modify query by replacing table a with table b +$table2 = new \PhpMyAdmin\SqlParser\Components\Expression('', 'b', '', ''); +$parser->statements[0]->from[0] = $table2; + +// build query again from an array of object(PhpMyAdmin\SqlParser\Statements\SelectStatement) to a string +$statement = $parser->statements[0]; +$query2 = $statement->build(); +var_dump($query2); // outputs string(19) 'SELECT * FROM `b` ' + +// Change SQL mode +PhpMyAdmin\SqlParser\Context::setMode('ANSI_QUOTES'); + +// build the query again using different quotes +$query2 = $statement->build(); +var_dump($query2); // outputs string(19) 'SELECT * FROM "b" ' +``` + +## Localization + +You can localize error messages installing `phpmyadmin/motranslator` version `5.0` or newer: + +```sh +composer require phpmyadmin/motranslator:^5.0 +``` + +The locale is automatically detected from your environment, you can also set a different locale + +**From cli**: + +```sh +LC_ALL=pl ./vendor/bin/lint-query --query "SELECT 1" +``` + +**From php**: + +```php +require __DIR__ . '/vendor/autoload.php'; + +$GLOBALS['lang'] = 'pl'; + +$query1 = 'select * from a'; +$parser = new PhpMyAdmin\SqlParser\Parser($query1); +``` + +## More information + +This library was originally created during the Google Summer of Code 2015 and has been used by phpMyAdmin since version 4.5. + +[1]:https://getcomposer.org/ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/bin/highlight-query b/lib/sqlparser/vendor/phpmyadmin/sql-parser/bin/highlight-query new file mode 100644 index 0000000000..53d380f2be --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/bin/highlight-query @@ -0,0 +1,30 @@ +#!/usr/bin/env php +runHighlight()); diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/bin/lint-query b/lib/sqlparser/vendor/phpmyadmin/sql-parser/bin/lint-query new file mode 100644 index 0000000000..1fe12f2fb1 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/bin/lint-query @@ -0,0 +1,30 @@ +#!/usr/bin/env php +runLint()); diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/bin/tokenize-query b/lib/sqlparser/vendor/phpmyadmin/sql-parser/bin/tokenize-query new file mode 100644 index 0000000000..e1a55f6b0e --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/bin/tokenize-query @@ -0,0 +1,30 @@ +#!/usr/bin/env php +runTokenize()); diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/composer.json b/lib/sqlparser/vendor/phpmyadmin/sql-parser/composer.json new file mode 100644 index 0000000000..303c3d3aee --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/composer.json @@ -0,0 +1,59 @@ +{ + "name": "phpmyadmin/sql-parser", + "description": "A validating SQL lexer and parser with a focus on MySQL dialect.", + "license": "GPL-2.0-or-later", + "keywords": ["sql", "lexer", "parser", "analysis"], + "homepage": "https://github.com/phpmyadmin/sql-parser", + "authors": [ + { + "name": "The phpMyAdmin Team", + "email": "developers@phpmyadmin.net", + "homepage": "https://www.phpmyadmin.net/team/" + } + ], + "support": { + "issues": "https://github.com/phpmyadmin/sql-parser/issues", + "source": "https://github.com/phpmyadmin/sql-parser" + }, + "require": { + "php": "^7.1 || ^8.0", + "symfony/polyfill-mbstring": "^1.3" + }, + "require-dev": { + "phpmyadmin/coding-standard": "^3.0", + "phpmyadmin/motranslator": "^4.0 || ^5.0", + "phpstan/extension-installer": "^1.1", + "phpstan/phpstan": "^1.2", + "phpstan/phpstan-phpunit": "^1.0", + "phpunit/php-code-coverage": "*", + "phpunit/phpunit": "^7.5 || ^8.5 || ^9.5", + "psalm/plugin-phpunit": "^0.16.1", + "vimeo/psalm": "^4.11", + "zumba/json-serializer": "^3.0" + }, + "conflict": { + "phpmyadmin/motranslator": "<3.0" + }, + "suggest": { + "ext-mbstring": "For best performance", + "phpmyadmin/motranslator": "Translate messages to your favorite locale" + }, + "bin": [ + "bin/highlight-query", + "bin/lint-query", + "bin/tokenize-query" + ], + "autoload": { + "psr-4": { + "PhpMyAdmin\\SqlParser\\": "src" + } + }, + "autoload-dev": { + "psr-4": { + "PhpMyAdmin\\SqlParser\\Tests\\": "tests" + } + }, + "config":{ + "sort-packages": true + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/af/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/af/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..b32ace3179 Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/af/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/af/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/af/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..29f9233df5 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/af/LC_MESSAGES/sqlparser.po @@ -0,0 +1,286 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2015-10-15 11:30+0200\n" +"Last-Translator: Michal Čihař \n" +"Language-Team: Afrikaans \n" +"Language: af\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 2.5-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "" + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "" + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "" + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "" + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "" + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "" + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "" + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "" + +#: src/Components/CaseExpression.php:225 +msgid "Potential duplicate alias of CASE expression." +msgstr "" + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "" + +#: src/Components/CaseExpression.php:262 +#, fuzzy +#| msgid "With selected:" +msgid "An alias was expected after AS." +msgstr "Met gekose:" + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" + +#: src/Components/CreateDefinition.php:266 +#, fuzzy +#| msgid "With selected:" +msgid "A symbol name was expected!" +msgstr "Met gekose:" + +#: src/Components/CreateDefinition.php:301 +#, fuzzy +#| msgid "With selected:" +msgid "A comma or a closing bracket was expected." +msgstr "Met gekose:" + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "" + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "" + +#: src/Components/ExpressionArray.php:101 +#, fuzzy +#| msgid "With selected:" +msgid "An expression was expected." +msgstr "Met gekose:" + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +#, fuzzy +#| msgid "With selected:" +msgid "An alias was expected." +msgstr "Met gekose:" + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "" + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "" + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "" + +#: src/Components/LockExpression.php:91 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of LOCK expression." +msgstr "By Begin van Tabel" + +#: src/Components/LockExpression.php:199 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of Lock expression." +msgstr "By Begin van Tabel" + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "" + +#: src/Components/RenameOperation.php:105 +msgid "The old name of the table was expected." +msgstr "" + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "" + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "" + +#: src/Components/RenameOperation.php:151 +#, fuzzy +#| msgid "The row has been deleted." +msgid "A rename operation was expected." +msgstr "Die ry is verwyder" + +#: src/Components/SetOperation.php:121 +#, fuzzy +#| msgid "as regular expression" +msgid "Missing expression." +msgstr "as 'n regular expression" + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "" + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "" + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "" + +#: src/Lexer.php:909 +#, fuzzy, php-format +msgid "Ending quote %1$s was expected." +msgstr "Tabel %s is verwyder" + +#: src/Lexer.php:955 +msgid "Variable name was expected." +msgstr "" + +#: src/Parser.php:451 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected beginning of statement." +msgstr "By Begin van Tabel" + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "" + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "" + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "" + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "" + +#: src/Statement.php:407 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Keyword at end of statement." +msgstr "By Begin van Tabel" + +#: src/Statement.php:551 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected ordering of clauses." +msgstr "By Begin van Tabel" + +#: src/Statements/CreateStatement.php:492 +msgid "The name of the entity was expected." +msgstr "" + +#: src/Statements/CreateStatement.php:542 +#, fuzzy +#| msgid "With selected:" +msgid "A table name was expected." +msgstr "Met gekose:" + +#: src/Statements/CreateStatement.php:550 +#, fuzzy +#| msgid "The row has been deleted." +msgid "At least one column definition was expected." +msgstr "Die ry is verwyder" + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "" + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "" + +#: src/Statements/LockStatement.php:116 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of LOCK statement." +msgstr "By Begin van Tabel" + +#: src/Statements/PurgeStatement.php:136 +msgid "Unexpected keyword" +msgstr "" + +#, fuzzy +#~| msgid "Error" +#~ msgid "error #1" +#~ msgstr "Fout" + +#, fuzzy +#~| msgid "Query" +#~ msgid "strict error" +#~ msgstr "Navraag dmv Voorbeeld" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ar/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ar/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..d2ed58a162 Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ar/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ar/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ar/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..90445b6187 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ar/LC_MESSAGES/sqlparser.po @@ -0,0 +1,255 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2020-08-07 09:32+0000\n" +"Last-Translator: tamer dab \n" +"Language-Team: Arabic \n" +"Language: ar\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 " +"&& n%100<=10 ? 3 : n%100>=11 ? 4 : 5;\n" +"X-Generator: Weblate 4.2-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "لم تنفذ بعد." + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "تم العثور على بيان جديد، ولكن لا يوجد محدد بينه وبين سابقه ." + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "فاصلة مفقودة قبل بدء عملية تغيير جديدة." + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "عملية تغيير غير معروفة." + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "تم توقع قيم %1$d ، ولكن تم العثور على %2$d." + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "من المتوقع وجود قوس فتح متبوعا بمجموعة من القيم." + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "من المتوقع وجود قوس مفتوح." + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "كلمة رئيسية غير متوقعة." + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "نهاية غير متوقعة من التعبير" + +#: src/Components/CaseExpression.php:225 +msgid "Potential duplicate alias of CASE expression." +msgstr "من المحتمل وجود مُسَمَّى إضافي متكرر لعبارة CASE." + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "يتوقع وضع مُسَمَّى إضافي بعد AS لكن تم وضع " + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "اسم مستعار موجود مسبقا ." + +#: src/Components/CaseExpression.php:262 +msgid "An alias was expected after AS." +msgstr "كان من المتوقع اسم مستعار بعد AS." + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" +"كان من المتوقع وجود اسم رمز! لا يمكن استخدام كلمة رئيسية محجوزة كاسم عمود " +"بدون علامات اقتباس." + +#: src/Components/CreateDefinition.php:266 +msgid "A symbol name was expected!" +msgstr "كان من المتوقع اسم رمز!" + +#: src/Components/CreateDefinition.php:301 +msgid "A comma or a closing bracket was expected." +msgstr "من المتوقع وجود فاصلة أو قوس إغلاق." + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "من المتوقع وجود قوس مغلق." + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "نوع بيانات غير معروف." + +#: src/Components/ExpressionArray.php:101 +msgid "An expression was expected." +msgstr "متوقع وجود تعبير ." + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +msgid "An alias was expected." +msgstr "كان من المتوقع وجود اسم مستعار." + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "نقطة غير متوقعة." + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "رمز غير متوقع." + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "متوقع حدوث تعويض ." + +#: src/Components/LockExpression.php:91 +msgid "Unexpected end of LOCK expression." +msgstr "نهاية غير متوقعة لعبارة LOCK ." + +#: src/Components/LockExpression.php:199 +msgid "Unexpected end of Lock expression." +msgstr "نهاية غير متوقعة لتعبير Lock." + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "يتعارض هذا الخيار مع“%1$s“ ." + +#: src/Components/RenameOperation.php:105 +msgid "The old name of the table was expected." +msgstr "متوفع وجود اسم الجدول القديم ." + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "متوقع وجود الكلمة الرئيسية \"TO\"." + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "متوقع وجود الاسم الجديد للجدول ." + +#: src/Components/RenameOperation.php:151 +msgid "A rename operation was expected." +msgstr "نتوقع منك اعادة تسمية ." + +#: src/Components/SetOperation.php:121 +msgid "Missing expression." +msgstr "تعبير مفقود ." + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "حرف غير متوقع ." + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "المسافات البيضاء المتوقعة قبل المحدد." + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "المحدد المتوقع." + +#: src/Lexer.php:909 +#, php-format +msgid "Ending quote %1$s was expected." +msgstr "نتوقع إنهاء الاقتباس %1$s ." + +#: src/Lexer.php:955 +msgid "Variable name was expected." +msgstr "متوقع منك اسم متغير ." + +#: src/Parser.php:451 +msgid "Unexpected beginning of statement." +msgstr "بداية غير متوقعة للبيان." + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "نوع بيان غير معروف." + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "لم يتم بدء أي معاملة من قبل." + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "تم تحليل هذا النوع من العبارات سابقا." + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "كلمة محجوزة غير معروفة." + +#: src/Statement.php:407 +msgid "Keyword at end of statement." +msgstr "الكلمة المفتاحية في نهاية البيان." + +#: src/Statement.php:551 +msgid "Unexpected ordering of clauses." +msgstr "ترتيب غير متوقع للبنود." + +#: src/Statements/CreateStatement.php:492 +msgid "The name of the entity was expected." +msgstr "نتوفع منك ادراج اسم الكيان ." + +#: src/Statements/CreateStatement.php:542 +msgid "A table name was expected." +msgstr "نتوقع تسمية الجدول ." + +#: src/Statements/CreateStatement.php:550 +msgid "At least one column definition was expected." +msgstr "نتوقع منك تعريف عمود علي الاقل ." + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "كانت الكلمة الرئيسية \"رجوع\" متوقعة." + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "هذا النوع من الشرط غير صالح في الاستعلامات متعددة الجداول." + +#: src/Statements/LockStatement.php:116 +msgid "Unexpected end of LOCK statement." +msgstr "نهاية غير متوقعة لبيان LOCK." + +#: src/Statements/PurgeStatement.php:136 +msgid "Unexpected keyword" +msgstr "كلمة أساسية غير متوقعة" + +#~ msgid "error #1" +#~ msgstr "الخطأ رقم 1" + +#~ msgid "strict error" +#~ msgstr "خطأ صارم" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ast/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ast/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..a8dfb5cb19 Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ast/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ast/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ast/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..0036ea6157 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ast/LC_MESSAGES/sqlparser.po @@ -0,0 +1,266 @@ +# phpMyAdmin SQL parser translation. +# Copyright (C) 2015 - 2017 phpMyAdmin devel team +# This file is distributed under the same license as the SQL parser package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2020-10-04 21:34+0000\n" +"Last-Translator: Michal Čihař \n" +"Language-Team: Asturian \n" +"Language: ast\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.3-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "Entá nun se desendolcó." + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "" +"Alcontróse una nueva declaración, pero nun hai llendador ente ésta y la " +"anterior." + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "Operación d'alteración desconocida." + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "Esperábense %1$d valores, pero s'alcontraron %2$d." + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "Esperábase un corchete d'apertura siguíu por un conxuntu de valores." + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "Esperábase un corchete d'apertura." + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "Palabra clave inesperada." + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "Final inesperáu d'espresión CASE" + +#: src/Components/CaseExpression.php:225 +#, fuzzy +#| msgid "Unexpected end of CASE expression" +msgid "Potential duplicate alias of CASE expression." +msgstr "Final inesperáu d'espresión CASE" + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "Alcontróse anteriormente un alcuñu." + +#: src/Components/CaseExpression.php:262 +#, fuzzy +#| msgid "An alias was expected." +msgid "An alias was expected after AS." +msgstr "Esperábase un alcuñu." + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" +"Esperábase un nome de símbolu. Una palabra acutada nun puede usase como nome " +"de columna ensin comines." + +#: src/Components/CreateDefinition.php:266 +msgid "A symbol name was expected!" +msgstr "Esperábase un nome de símbolu" + +#: src/Components/CreateDefinition.php:301 +msgid "A comma or a closing bracket was expected." +msgstr "Esperábase una coma o un corchete de zarru." + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "Esperábase un corchete de zarru." + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "Tipu de datu desconocíu." + +#: src/Components/ExpressionArray.php:101 +msgid "An expression was expected." +msgstr "Esperábase una espresión." + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +msgid "An alias was expected." +msgstr "Esperábase un alcuñu." + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "Puntu inesperáu." + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "" + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "Esperábase un desplazamientu." + +#: src/Components/LockExpression.php:91 +#, fuzzy +#| msgid "Unexpected end of CASE expression" +msgid "Unexpected end of LOCK expression." +msgstr "Final inesperáu d'espresión CASE" + +#: src/Components/LockExpression.php:199 +#, fuzzy +#| msgid "Unexpected end of CASE expression" +msgid "Unexpected end of Lock expression." +msgstr "Final inesperáu d'espresión CASE" + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "Esta opción fai conflictu con \"%1$s\"." + +#: src/Components/RenameOperation.php:105 +msgid "The old name of the table was expected." +msgstr "Esperábase'l nome anterior de la tabla." + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "Esperábase la palabra clave \"TO\"." + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "Esperábase'l nome nuevu de la tabla." + +#: src/Components/RenameOperation.php:151 +msgid "A rename operation was expected." +msgstr "Esperábase una operación de cambiu de nome." + +#: src/Components/SetOperation.php:121 +msgid "Missing expression." +msgstr "Falta una espresión." + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "Carácter inesperáu." + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "Esperábase espaciu(os) en blancu antes d'un llendador." + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "Esperábase un llendador." + +#: src/Lexer.php:909 +#, php-format +msgid "Ending quote %1$s was expected." +msgstr "Esperábense les comines de final %1$s." + +#: src/Lexer.php:955 +msgid "Variable name was expected." +msgstr "Esperábase un nome de variable." + +#: src/Parser.php:451 +msgid "Unexpected beginning of statement." +msgstr "" + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "" + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "" + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "" + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "" + +#: src/Statement.php:407 +msgid "Keyword at end of statement." +msgstr "" + +#: src/Statement.php:551 +msgid "Unexpected ordering of clauses." +msgstr "" + +#: src/Statements/CreateStatement.php:492 +msgid "The name of the entity was expected." +msgstr "" + +#: src/Statements/CreateStatement.php:542 +msgid "A table name was expected." +msgstr "" + +#: src/Statements/CreateStatement.php:550 +msgid "At least one column definition was expected." +msgstr "" + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "" + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "" + +#: src/Statements/LockStatement.php:116 +#, fuzzy +#| msgid "Unexpected end of CASE expression" +msgid "Unexpected end of LOCK statement." +msgstr "Final inesperáu d'espresión CASE" + +#: src/Statements/PurgeStatement.php:136 +#, fuzzy +#| msgid "Unexpected keyword." +msgid "Unexpected keyword" +msgstr "Palabra clave inesperada." diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/az/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/az/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..0b4ee08b3b Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/az/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/az/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/az/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..d9b16e224b --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/az/LC_MESSAGES/sqlparser.po @@ -0,0 +1,273 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2017-11-25 14:44+0000\n" +"Last-Translator: Sevdimali İsa \n" +"Language-Team: Azerbaijani \n" +"Language: az\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 2.18-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "Hələki tətbiq edilməyib." + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "" + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "Kateqoriya olunmamış alter əməliyyatı." + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "%1$d gözlənilirdi, amma %2$d tapıldı." + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "Mötərizə ardından bir qrup dəyər gözlənilməkdə." + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "" + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "Gözlənilməyən açar söz." + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "Gözlənməz Böyük/Kiçik hərf ifadəsi sonu" + +#: src/Components/CaseExpression.php:225 +#, fuzzy +#| msgid "Unexpected end of CASE expression" +msgid "Potential duplicate alias of CASE expression." +msgstr "Gözlənməz Böyük/Kiçik hərf ifadəsi sonu" + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "Daha öncə alias tapıldı." + +#: src/Components/CaseExpression.php:262 +#, fuzzy +#| msgid "An alias was expected." +msgid "An alias was expected after AS." +msgstr "Alias gözlənilirdi." + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" +"Bir simvol adı gözlənilirdi! Dırnaqsız reserv sözlər sütün adı olaraq " +"istifadə edilə bilməz." + +#: src/Components/CreateDefinition.php:266 +msgid "A symbol name was expected!" +msgstr "Simvol adı gözlənilirdi!" + +#: src/Components/CreateDefinition.php:301 +msgid "A comma or a closing bracket was expected." +msgstr "Vergül və ya mötərizə gözlənilirdi." + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "Mötərizə gözlənilirdi." + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "Tanınmayan verilən tipi." + +#: src/Components/ExpressionArray.php:101 +msgid "An expression was expected." +msgstr "İfadə gözlənilməkdə." + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +msgid "An alias was expected." +msgstr "Alias gözlənilirdi." + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "Gözlənilməz nöqtə." + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "Gözlənilməyən token." + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "" + +#: src/Components/LockExpression.php:91 +#, fuzzy +#| msgid "Unexpected end of CASE expression" +msgid "Unexpected end of LOCK expression." +msgstr "Gözlənməz Böyük/Kiçik hərf ifadəsi sonu" + +#: src/Components/LockExpression.php:199 +#, fuzzy +#| msgid "Unexpected end of CASE expression" +msgid "Unexpected end of Lock expression." +msgstr "Gözlənməz Böyük/Kiçik hərf ifadəsi sonu" + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "Bu seçim %1$s bununla zidiyyət təşkil edir." + +#: src/Components/RenameOperation.php:105 +msgid "The old name of the table was expected." +msgstr "Cədvəlin köhnə adı gözlənilirdi." + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "\"TO\" açar sözü gözlənilirdi." + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "Cədvəlin yeni adı gözlənilirdi." + +#: src/Components/RenameOperation.php:151 +msgid "A rename operation was expected." +msgstr "Yenidən adlandırma əməliyyatı gözlənilirdi." + +#: src/Components/SetOperation.php:121 +msgid "Missing expression." +msgstr "Əksik ifadə." + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "Gözlənilməyən simvol." + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "" + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "" + +#: src/Lexer.php:909 +#, fuzzy, php-format +#| msgid "Event %1$s has been created." +msgid "Ending quote %1$s was expected." +msgstr "%1$s hadisəsi yaradıldı." + +#: src/Lexer.php:955 +msgid "Variable name was expected." +msgstr "Dəyişən adı gözlənilirdi." + +#: src/Parser.php:451 +msgid "Unexpected beginning of statement." +msgstr "İfadənin gözlənilməz başlanğıcı." + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "Tanınmayan ifadə tipi." + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "Daha öncə tranzaksiya başladılmadı." + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "" + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "Tanınmayan açarsöz." + +#: src/Statement.php:407 +msgid "Keyword at end of statement." +msgstr "İfadənin sonunda açar söz." + +#: src/Statement.php:551 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected ordering of clauses." +msgstr "Cədvəlin başına" + +#: src/Statements/CreateStatement.php:492 +#, fuzzy +#| msgid "The number of tables that are open." +msgid "The name of the entity was expected." +msgstr "Açıq olan cədvəl sayı." + +#: src/Statements/CreateStatement.php:542 +msgid "A table name was expected." +msgstr "Cədvəl adı gözlənilirdi." + +#: src/Statements/CreateStatement.php:550 +msgid "At least one column definition was expected." +msgstr "Ən az bir sütün açıqlaması gözlənilirdi." + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "\"RETURNS\" açarsözü gözlənilirdi." + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "" + +#: src/Statements/LockStatement.php:116 +#, fuzzy +#| msgid "Unexpected beginning of statement." +msgid "Unexpected end of LOCK statement." +msgstr "İfadənin gözlənilməz başlanğıcı." + +#: src/Statements/PurgeStatement.php:136 +#, fuzzy +#| msgid "Unexpected keyword." +msgid "Unexpected keyword" +msgstr "Gözlənilməyən açar söz." + +#~ msgid "error #1" +#~ msgstr "xəta #1" + +#, fuzzy +#~| msgid "Query error" +#~ msgid "strict error" +#~ msgstr "Sorğu xətası" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/be/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/be/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..74f732644f Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/be/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/be/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/be/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..1288ed1f28 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/be/LC_MESSAGES/sqlparser.po @@ -0,0 +1,268 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2017-08-22 09:47+0000\n" +"Last-Translator: Viktar Vauchkevich \n" +"Language-Team: Belarusian \n" +"Language: be\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 2.17-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "Яшчэ не рэалізавана." + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "" +"Знойдзена новае сцвярджэнне, але між ім і папярэднім няма раздзяляльніка." + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "Нераспазнаная аперацыя змены." + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "Чакалася %1$d значэнняў, а знойдзена %2$d." + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "Чакаліся адкрывальная дужка і спіс значэнняў." + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "Чакалася адкрывальная дужка." + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "Нечаканае ключавое слова." + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "Нечаканы канец CASE-выразу" + +#: src/Components/CaseExpression.php:225 +#, fuzzy +#| msgid "Unexpected end of CASE expression" +msgid "Potential duplicate alias of CASE expression." +msgstr "Нечаканы канец CASE-выразу" + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "Псеўданім быў знайдзены раней." + +#: src/Components/CaseExpression.php:262 +#, fuzzy +#| msgid "An alias was expected." +msgid "An alias was expected after AS." +msgstr "Чакаўся псеўданім." + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" +"Чакалася назва сімвала! Зарэзерваваныя ключавыя словы нельга выкарыстоўваць " +"як назву слупка без двукоссяў." + +#: src/Components/CreateDefinition.php:266 +msgid "A symbol name was expected!" +msgstr "Чакалася назва сімвала!" + +#: src/Components/CreateDefinition.php:301 +msgid "A comma or a closing bracket was expected." +msgstr "Чакалася коска або закрывальная дужка." + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "Чакалася закрывальная дужка." + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "Нераспазнаны тып даных." + +#: src/Components/ExpressionArray.php:101 +msgid "An expression was expected." +msgstr "Чакаўся выраз." + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +msgid "An alias was expected." +msgstr "Чакаўся псеўданім." + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "Нечаканая кропка." + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "Нечаканы знак." + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "Чакаўся соступ." + +#: src/Components/LockExpression.php:91 +#, fuzzy +#| msgid "Unexpected end of CASE expression" +msgid "Unexpected end of LOCK expression." +msgstr "Нечаканы канец CASE-выразу" + +#: src/Components/LockExpression.php:199 +#, fuzzy +#| msgid "Unexpected end of CASE expression" +msgid "Unexpected end of Lock expression." +msgstr "Нечаканы канец CASE-выразу" + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "Гэты параметр канфліктуе з «%1$s»." + +#: src/Components/RenameOperation.php:105 +msgid "The old name of the table was expected." +msgstr "Чакалася старая назва табліцы." + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "Чакалаcя ключавое слова «TO»." + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "Чакалася новая назва табліцы." + +#: src/Components/RenameOperation.php:151 +msgid "A rename operation was expected." +msgstr "Чакалася аперацыя перайменавання." + +#: src/Components/SetOperation.php:121 +msgid "Missing expression." +msgstr "Адсутнічае выраз." + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "Нечаканы сімвал." + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "Чакаўся прагал(ы) перад раздзяляльнікам." + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "Чакаецца раздзяляльнік." + +#: src/Lexer.php:909 +#, php-format +msgid "Ending quote %1$s was expected." +msgstr "Чакалася канцавое двукоссе %1$s." + +#: src/Lexer.php:955 +msgid "Variable name was expected." +msgstr "Чакалася назва зменнай." + +#: src/Parser.php:451 +msgid "Unexpected beginning of statement." +msgstr "Нечаканы пачатак сцвярджэння." + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "Нераспазнаны тып сцвярджэння." + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "Няма папярэдне запушчанай транзакцыі." + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "Гэты тып выразу быў папярэдне разабраны." + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "Нераспазнанае ключавое слова." + +#: src/Statement.php:407 +msgid "Keyword at end of statement." +msgstr "Ключавое слова ў канцы сцвярджэння." + +#: src/Statement.php:551 +msgid "Unexpected ordering of clauses." +msgstr "Нечаканы парадак выразаў." + +#: src/Statements/CreateStatement.php:492 +msgid "The name of the entity was expected." +msgstr "Чакалася назва сутнасці." + +#: src/Statements/CreateStatement.php:542 +msgid "A table name was expected." +msgstr "Чакалася назва табліцы." + +#: src/Statements/CreateStatement.php:550 +msgid "At least one column definition was expected." +msgstr "Чакалася азначэнне прынамсі аднаго слупка." + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "Чакалася ключавое слова «RETURNS»." + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "Гэты тып выразу не правільны для мультытаблічных запытаў." + +#: src/Statements/LockStatement.php:116 +#, fuzzy +#| msgid "Unexpected beginning of statement." +msgid "Unexpected end of LOCK statement." +msgstr "Нечаканы пачатак сцвярджэння." + +#: src/Statements/PurgeStatement.php:136 +#, fuzzy +#| msgid "Unexpected keyword." +msgid "Unexpected keyword" +msgstr "Нечаканае ключавое слова." + +#~ msgid "error #1" +#~ msgstr "памылка #1" + +#~ msgid "strict error" +#~ msgstr "недапушчальная памылка" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/be@latin/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/be@latin/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..a054283758 Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/be@latin/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/be@latin/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/be@latin/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..ffa98da95f --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/be@latin/LC_MESSAGES/sqlparser.po @@ -0,0 +1,269 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2017-08-22 09:47+0000\n" +"Last-Translator: Viktar Vauchkevich \n" +"Language-Team: Belarusian (latin) \n" +"Language: be@latin\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 2.17-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "Jašče nie realizavana." + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "" +"Znojdziena novaje scviardžennie, alie miž im i papiarednim niama " +"razdzialiaĺnika." + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "Nieraspaznanaja apieracyja zmieny." + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "Čakalasia %1$d značenniaŭ, a znojdziena %2$d." + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "Čakalisia adkryvaĺnaja dužka i spis značenniaŭ." + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "Čakalasia adkryvaĺnaja dužka." + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "Niečakanaje kliučavoje slova." + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "Niečakany kaniec CASE-vyrazu" + +#: src/Components/CaseExpression.php:225 +#, fuzzy +#| msgid "Unexpected end of CASE expression" +msgid "Potential duplicate alias of CASE expression." +msgstr "Niečakany kaniec CASE-vyrazu" + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "Psieŭdanim byŭ znajdzieny raniej." + +#: src/Components/CaseExpression.php:262 +#, fuzzy +#| msgid "An alias was expected." +msgid "An alias was expected after AS." +msgstr "Čakaŭsia psieŭdanim." + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" +"Čakalasia nazva simvala! Zareziervavanyja kliučavyja slovy nieĺha " +"vykarystoŭvać jak nazvu slupka biez dvukossiaŭ." + +#: src/Components/CreateDefinition.php:266 +msgid "A symbol name was expected!" +msgstr "Čakalasia nazva simvala!" + +#: src/Components/CreateDefinition.php:301 +msgid "A comma or a closing bracket was expected." +msgstr "Čakalasia koska abo zakryvaĺnaja dužka." + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "Čakalasia zakryvaĺnaja dužka." + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "Nieraspaznany typ danych." + +#: src/Components/ExpressionArray.php:101 +msgid "An expression was expected." +msgstr "Čakaŭsia vyraz." + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +msgid "An alias was expected." +msgstr "Čakaŭsia psieŭdanim." + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "Niečakanaja kropka." + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "Niečakany znak." + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "Čakaŭsia sostup." + +#: src/Components/LockExpression.php:91 +#, fuzzy +#| msgid "Unexpected end of CASE expression" +msgid "Unexpected end of LOCK expression." +msgstr "Niečakany kaniec CASE-vyrazu" + +#: src/Components/LockExpression.php:199 +#, fuzzy +#| msgid "Unexpected end of CASE expression" +msgid "Unexpected end of Lock expression." +msgstr "Niečakany kaniec CASE-vyrazu" + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "Hety paramietr kanfliktuje z «%1$s»." + +#: src/Components/RenameOperation.php:105 +msgid "The old name of the table was expected." +msgstr "Čakalasia staraja nazva tablicy." + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "Čakalacja kliučavoje slova «TO»." + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "Čakalasia novaja nazva tablicy." + +#: src/Components/RenameOperation.php:151 +msgid "A rename operation was expected." +msgstr "Čakalasia apieracyja pierajmienavannia." + +#: src/Components/SetOperation.php:121 +msgid "Missing expression." +msgstr "Adsutničaje vyraz." + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "Niečakany simval." + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "Čakaŭsia prahal(y) pierad razdzialiaĺnikam." + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "Čakajecca razdzialiaĺnik." + +#: src/Lexer.php:909 +#, php-format +msgid "Ending quote %1$s was expected." +msgstr "Čakalasia kancavoje dvukossie %1$s." + +#: src/Lexer.php:955 +msgid "Variable name was expected." +msgstr "Čakalasia nazva zmiennaj." + +#: src/Parser.php:451 +msgid "Unexpected beginning of statement." +msgstr "Niečakany pačatak scviardžennia." + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "Nieraspaznany typ scviardžennia." + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "Niama papiarednie zapuščanaj tranzakcyi." + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "Hety typ vyrazu byŭ papiarednie razabrany." + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "Nieraspaznanaje kliučavoje slova." + +#: src/Statement.php:407 +msgid "Keyword at end of statement." +msgstr "Kliučavoje slova ŭ kancy scviardžennia." + +#: src/Statement.php:551 +msgid "Unexpected ordering of clauses." +msgstr "Niečakany paradak vyrazaŭ." + +#: src/Statements/CreateStatement.php:492 +msgid "The name of the entity was expected." +msgstr "Čakalasia nazva sutnasci." + +#: src/Statements/CreateStatement.php:542 +msgid "A table name was expected." +msgstr "Čakalasia nazva tablicy." + +#: src/Statements/CreateStatement.php:550 +msgid "At least one column definition was expected." +msgstr "Čakalasia aznačennie prynamsi adnaho slupka." + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "Čakalasia kliučavoje slova «RETURNS»." + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "Hety typ vyrazu nie praviĺny dlia muĺtytabličnych zapytaŭ." + +#: src/Statements/LockStatement.php:116 +#, fuzzy +#| msgid "Unexpected beginning of statement." +msgid "Unexpected end of LOCK statement." +msgstr "Niečakany pačatak scviardžennia." + +#: src/Statements/PurgeStatement.php:136 +#, fuzzy +#| msgid "Unexpected keyword." +msgid "Unexpected keyword" +msgstr "Niečakanaje kliučavoje slova." + +#~ msgid "error #1" +#~ msgstr "pamylka #1" + +#~ msgid "strict error" +#~ msgstr "niedapuščaĺnaja pamylka" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/bg/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/bg/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..3faae29795 Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/bg/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/bg/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/bg/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..e0af8203eb --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/bg/LC_MESSAGES/sqlparser.po @@ -0,0 +1,298 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2020-10-14 10:02+0000\n" +"Last-Translator: Пламен \n" +"Language-Team: Bulgarian \n" +"Language: bg\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.3-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "Все още не е внедрена." + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "" +"Беше открито ново изявление, но не и разграничител между него и предишния." + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "Липсва запетая пред началото на нова операция alter." + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "Неизвестна промяна на операцията." + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "%1$d стойности бяха очаквани, но бяха намерени %2$d." + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "Очаква се отваряща скоба последвана от списък стойности." + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "Очаква се отваряща скоба." + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "Неочаквана ключова дума." + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "Неочакван край на израза CASE" + +#: src/Components/CaseExpression.php:225 +msgid "Potential duplicate alias of CASE expression." +msgstr "Потенциален дублиращ се псевдоним на изявата на CASE." + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "Псевдоним, очакван след AS, но получи " + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "Преди това е открит псевдоним." + +#: src/Components/CaseExpression.php:262 +msgid "An alias was expected after AS." +msgstr "Псевдоним се очакваше след AS." + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" +"Очакваше се име на символ! Запазената ключова дума не може да се използва " +"като име на колона без обратни кавички." + +#: src/Components/CreateDefinition.php:266 +msgid "A symbol name was expected!" +msgstr "Очаква се име на символ!" + +#: src/Components/CreateDefinition.php:301 +msgid "A comma or a closing bracket was expected." +msgstr "Очакваше се запетая или затваряща скоба." + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "" + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "" + +#: src/Components/ExpressionArray.php:101 +#, fuzzy +#| msgid "No rows selected" +msgid "An expression was expected." +msgstr "Няма върнати редове" + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +#, fuzzy +#| msgid "No tables selected." +msgid "An alias was expected." +msgstr "Няма избрани таблици." + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "" + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +#, fuzzy +#| msgid "Unexpected characters on line %s." +msgid "Unexpected token." +msgstr "Неочаквани знаци на ред %s." + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "" + +#: src/Components/LockExpression.php:91 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of LOCK expression." +msgstr "В началото на таблицата" + +#: src/Components/LockExpression.php:199 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of Lock expression." +msgstr "В началото на таблицата" + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "" + +#: src/Components/RenameOperation.php:105 +#, fuzzy +#| msgid "The number of tables that are open." +msgid "The old name of the table was expected." +msgstr "Броят отворени таблици." + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "" + +#: src/Components/RenameOperation.php:132 +#, fuzzy +#| msgid "The number of tables that are open." +msgid "The new name of the table was expected." +msgstr "Броят отворени таблици." + +#: src/Components/RenameOperation.php:151 +#, fuzzy +#| msgid "The row has been deleted." +msgid "A rename operation was expected." +msgstr "Редът беше изтрит" + +#: src/Components/SetOperation.php:121 +#, fuzzy +#| msgid "as regular expression" +msgid "Missing expression." +msgstr "като регулярен израз" + +#: src/Lexer.php:244 +#, fuzzy +#| msgid "Unexpected characters on line %s." +msgid "Unexpected character." +msgstr "Неочаквани знаци на ред %s." + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "" + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "" + +#: src/Lexer.php:909 +#, fuzzy, php-format +#| msgid "Event %1$s has been created." +msgid "Ending quote %1$s was expected." +msgstr "Събитието %1$s беше създадено." + +#: src/Lexer.php:955 +#, fuzzy +#| msgid "Table name template" +msgid "Variable name was expected." +msgstr "Шаблон за име на таблица" + +#: src/Parser.php:451 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected beginning of statement." +msgstr "В началото на таблицата" + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "" + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "" + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "" + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "" + +#: src/Statement.php:407 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Keyword at end of statement." +msgstr "В началото на таблицата" + +#: src/Statement.php:551 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected ordering of clauses." +msgstr "В началото на таблицата" + +#: src/Statements/CreateStatement.php:492 +#, fuzzy +#| msgid "The number of tables that are open." +msgid "The name of the entity was expected." +msgstr "Броят отворени таблици." + +#: src/Statements/CreateStatement.php:542 +#, fuzzy +#| msgid "Table name template" +msgid "A table name was expected." +msgstr "Шаблон за име на таблица" + +#: src/Statements/CreateStatement.php:550 +#, fuzzy +#| msgid "The row has been deleted." +msgid "At least one column definition was expected." +msgstr "Редът беше изтрит" + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "" + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "" + +#: src/Statements/LockStatement.php:116 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of LOCK statement." +msgstr "В началото на таблицата" + +#: src/Statements/PurgeStatement.php:136 +#, fuzzy +#| msgid "Unexpected characters on line %s." +msgid "Unexpected keyword" +msgstr "Неочаквани знаци на ред %s." + +#, fuzzy +#~| msgid "errors." +#~ msgid "error #1" +#~ msgstr "грешки." + +#, fuzzy +#~| msgid "Gather errors" +#~ msgid "strict error" +#~ msgstr "Събиране на грешки" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/bn/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/bn/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..980c2851e2 Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/bn/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/bn/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/bn/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..06000ded2d --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/bn/LC_MESSAGES/sqlparser.po @@ -0,0 +1,305 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2021-03-02 18:02+0000\n" +"Last-Translator: Nokib Sarkar \n" +"Language-Team: Bengali \n" +"Language: bn\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Weblate 4.5\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "এখনো বাস্তবায়িত হয়নি।" + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "" +"একটি নতুন বিবৃতি পাওয়া গেছে, তবে এটি এবং পূর্ববর্তীটির মধ্যে কোনও বিভাজক " +"নেই।" + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "নতুন অল্টার অপারেশন শুরুর আগে কমা খুঁজে পাওয়া যায় নি।" + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "" + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "" + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "" + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "" + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +#, fuzzy +#| msgid "Unexpected characters on line %s." +msgid "Unexpected keyword." +msgstr "%s লাইনে অপ্রত্যাশিত চিহ্ন।" + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "" + +#: src/Components/CaseExpression.php:225 +msgid "Potential duplicate alias of CASE expression." +msgstr "" + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "" + +#: src/Components/CaseExpression.php:262 +#, fuzzy +#| msgid "No databases selected." +msgid "An alias was expected after AS." +msgstr "ডাটাবেইজ নিবার্চন করা হয়নি।" + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" + +#: src/Components/CreateDefinition.php:266 +#, fuzzy +#| msgid "Table name template" +msgid "A symbol name was expected!" +msgstr "টেবলের নামের নকশা" + +#: src/Components/CreateDefinition.php:301 +#, fuzzy +#| msgid "No databases selected." +msgid "A comma or a closing bracket was expected." +msgstr "ডাটাবেইজ নিবার্চন করা হয়নি।" + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "" + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "" + +#: src/Components/ExpressionArray.php:101 +#, fuzzy +#| msgid "No rows selected" +msgid "An expression was expected." +msgstr "কোন রো নির্বাচন করা হয় নাই" + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +#, fuzzy +#| msgid "No databases selected." +msgid "An alias was expected." +msgstr "ডাটাবেইজ নিবার্চন করা হয়নি।" + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "" + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +#, fuzzy +#| msgid "Unexpected characters on line %s." +msgid "Unexpected token." +msgstr "%s লাইনে অপ্রত্যাশিত চিহ্ন।" + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "" + +#: src/Components/LockExpression.php:91 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of LOCK expression." +msgstr "টেবিলের শুরুতে" + +#: src/Components/LockExpression.php:199 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of Lock expression." +msgstr "টেবিলের শুরুতে" + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "" + +#: src/Components/RenameOperation.php:105 +#, fuzzy +#| msgid "The number of tables that are open." +msgid "The old name of the table was expected." +msgstr "খোলা টেবিলের সংখ্যা।" + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "" + +#: src/Components/RenameOperation.php:132 +#, fuzzy +#| msgid "The number of tables that are open." +msgid "The new name of the table was expected." +msgstr "খোলা টেবিলের সংখ্যা।" + +#: src/Components/RenameOperation.php:151 +#, fuzzy +#| msgid "The row has been deleted." +msgid "A rename operation was expected." +msgstr "রো টি মুছা হয়েছে।" + +#: src/Components/SetOperation.php:121 +#, fuzzy +#| msgid "as regular expression" +msgid "Missing expression." +msgstr "রেগুলার এক্সপ্রেশনের মত" + +#: src/Lexer.php:244 +#, fuzzy +#| msgid "Unexpected characters on line %s." +msgid "Unexpected character." +msgstr "%s লাইনে অপ্রত্যাশিত চিহ্ন।" + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "" + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "" + +#: src/Lexer.php:909 +#, fuzzy, php-format +#| msgid "Event %1$s has been created." +msgid "Ending quote %1$s was expected." +msgstr "ইভেন্ট %1$s তৈরী হয়েছে।" + +#: src/Lexer.php:955 +#, fuzzy +#| msgid "Table name template" +msgid "Variable name was expected." +msgstr "টেবলের নামের নকশা" + +#: src/Parser.php:451 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected beginning of statement." +msgstr "টেবিলের শুরুতে" + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "" + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "" + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "" + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "" + +#: src/Statement.php:407 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Keyword at end of statement." +msgstr "টেবিলের শুরুতে" + +#: src/Statement.php:551 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected ordering of clauses." +msgstr "টেবিলের শুরুতে" + +#: src/Statements/CreateStatement.php:492 +#, fuzzy +#| msgid "The number of tables that are open." +msgid "The name of the entity was expected." +msgstr "খোলা টেবিলের সংখ্যা।" + +#: src/Statements/CreateStatement.php:542 +#, fuzzy +#| msgid "Table name template" +msgid "A table name was expected." +msgstr "টেবলের নামের নকশা" + +#: src/Statements/CreateStatement.php:550 +#, fuzzy +#| msgid "The row has been deleted." +msgid "At least one column definition was expected." +msgstr "রো টি মুছা হয়েছে।" + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "" + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "" + +#: src/Statements/LockStatement.php:116 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of LOCK statement." +msgstr "টেবিলের শুরুতে" + +#: src/Statements/PurgeStatement.php:136 +#, fuzzy +#| msgid "Unexpected characters on line %s." +msgid "Unexpected keyword" +msgstr "%s লাইনে অপ্রত্যাশিত চিহ্ন।" + +#, fuzzy +#~| msgid "errors." +#~ msgid "error #1" +#~ msgstr "ভুলসমূহ" + +#, fuzzy +#~| msgid "Gather errors" +#~ msgid "strict error" +#~ msgstr "ভুলসমূহ জড়ো" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/br/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/br/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..284f532c74 Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/br/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/br/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/br/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..5dbe062363 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/br/LC_MESSAGES/sqlparser.po @@ -0,0 +1,293 @@ +# phpMyAdmin translation. +# Copyright (C) 2003 - 2011 phpMyAdmin devel team +# This file is distributed under the same license as the phpMyAdmin package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2014-03-28 11:07+0200\n" +"Last-Translator: Michal Čihař \n" +"Language-Team: Breton \n" +"Language: br\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 1.9-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "" + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "" + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "" + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "" + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "" + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "" + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "" + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "" + +#: src/Components/CaseExpression.php:225 +msgid "Potential duplicate alias of CASE expression." +msgstr "" + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "" + +#: src/Components/CaseExpression.php:262 +#, fuzzy +#| msgid "No rows selected" +msgid "An alias was expected after AS." +msgstr "N'eus bet diuzet linenn ebet" + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" + +#: src/Components/CreateDefinition.php:266 +#, fuzzy +#| msgid "Table name template" +msgid "A symbol name was expected!" +msgstr "Patrom anv taolenn" + +#: src/Components/CreateDefinition.php:301 +#, fuzzy +#| msgid "No rows selected" +msgid "A comma or a closing bracket was expected." +msgstr "N'eus bet diuzet linenn ebet" + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "" + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "" + +#: src/Components/ExpressionArray.php:101 +#, fuzzy +#| msgid "No rows selected" +msgid "An expression was expected." +msgstr "N'eus bet diuzet linenn ebet" + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +#, fuzzy +#| msgid "No rows selected" +msgid "An alias was expected." +msgstr "N'eus bet diuzet linenn ebet" + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "" + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "" + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "" + +#: src/Components/LockExpression.php:91 +#, fuzzy +#| msgid "Number of inserted rows" +msgid "Unexpected end of LOCK expression." +msgstr "Niver a linennoù da ensoc'hañ" + +#: src/Components/LockExpression.php:199 +#, fuzzy +#| msgid "Number of inserted rows" +msgid "Unexpected end of Lock expression." +msgstr "Niver a linennoù da ensoc'hañ" + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "" + +#: src/Components/RenameOperation.php:105 +msgid "The old name of the table was expected." +msgstr "" + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "" + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "" + +#: src/Components/RenameOperation.php:151 +#, fuzzy +#| msgid "The bookmark has been deleted." +msgid "A rename operation was expected." +msgstr "Diverket eo bet ar sined." + +#: src/Components/SetOperation.php:121 +#, fuzzy +#| msgid "as regular expression" +msgid "Missing expression." +msgstr "evel un droienn reoliek" + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "" + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "" + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "" + +#: src/Lexer.php:909 +#, fuzzy, php-format +#| msgid "Routine %1$s has been created." +msgid "Ending quote %1$s was expected." +msgstr "Krouet eo bet an argerzh %1s." + +#: src/Lexer.php:955 +#, fuzzy +#| msgid "Table name template" +msgid "Variable name was expected." +msgstr "Patrom anv taolenn" + +#: src/Parser.php:451 +#, fuzzy +#| msgid "Number of inserted rows" +msgid "Unexpected beginning of statement." +msgstr "Niver a linennoù da ensoc'hañ" + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "" + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "" + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "" + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "" + +#: src/Statement.php:407 +#, fuzzy +#| msgid "Number of inserted rows" +msgid "Keyword at end of statement." +msgstr "Niver a linennoù da ensoc'hañ" + +#: src/Statement.php:551 +#, fuzzy +#| msgid "Number of inserted rows" +msgid "Unexpected ordering of clauses." +msgstr "Niver a linennoù da ensoc'hañ" + +#: src/Statements/CreateStatement.php:492 +msgid "The name of the entity was expected." +msgstr "" + +#: src/Statements/CreateStatement.php:542 +#, fuzzy +#| msgid "Table name template" +msgid "A table name was expected." +msgstr "Patrom anv taolenn" + +#: src/Statements/CreateStatement.php:550 +#, fuzzy +#| msgid "The bookmark has been deleted." +msgid "At least one column definition was expected." +msgstr "Diverket eo bet ar sined." + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "" + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "" + +#: src/Statements/LockStatement.php:116 +#, fuzzy +#| msgid "Number of inserted rows" +msgid "Unexpected end of LOCK statement." +msgstr "Niver a linennoù da ensoc'hañ" + +#: src/Statements/PurgeStatement.php:136 +msgid "Unexpected keyword" +msgstr "" + +#, fuzzy +#~| msgid "Error" +#~ msgid "error #1" +#~ msgstr "Fazi" + +#, fuzzy +#~| msgid "Gather errors" +#~ msgid "strict error" +#~ msgstr "Dastum ar fazioù" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/brx/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/brx/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..fb9eec4246 Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/brx/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/brx/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/brx/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..90b448a153 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/brx/LC_MESSAGES/sqlparser.po @@ -0,0 +1,250 @@ +# phpMyAdmin translation. +# Copyright (C) 2003 - 2015 phpMyAdmin devel team +# This file is distributed under the same license as the phpMyAdmin package. +# Automatically generated, 2015. +# +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2015-09-04 09:33+0200\n" +"Last-Translator: Michal Čihař \n" +"Language-Team: Bodo \n" +"Language: brx\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Weblate 2.4-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "" + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "" + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "" + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "" + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "" + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "" + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "" + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "" + +#: src/Components/CaseExpression.php:225 +msgid "Potential duplicate alias of CASE expression." +msgstr "" + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "" + +#: src/Components/CaseExpression.php:262 +msgid "An alias was expected after AS." +msgstr "" + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" + +#: src/Components/CreateDefinition.php:266 +msgid "A symbol name was expected!" +msgstr "" + +#: src/Components/CreateDefinition.php:301 +msgid "A comma or a closing bracket was expected." +msgstr "" + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "" + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "" + +#: src/Components/ExpressionArray.php:101 +msgid "An expression was expected." +msgstr "" + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +msgid "An alias was expected." +msgstr "" + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "" + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "" + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "" + +#: src/Components/LockExpression.php:91 +msgid "Unexpected end of LOCK expression." +msgstr "" + +#: src/Components/LockExpression.php:199 +msgid "Unexpected end of Lock expression." +msgstr "" + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "" + +#: src/Components/RenameOperation.php:105 +msgid "The old name of the table was expected." +msgstr "" + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "" + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "" + +#: src/Components/RenameOperation.php:151 +msgid "A rename operation was expected." +msgstr "" + +#: src/Components/SetOperation.php:121 +msgid "Missing expression." +msgstr "" + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "" + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "" + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "" + +#: src/Lexer.php:909 +#, php-format +msgid "Ending quote %1$s was expected." +msgstr "" + +#: src/Lexer.php:955 +msgid "Variable name was expected." +msgstr "" + +#: src/Parser.php:451 +msgid "Unexpected beginning of statement." +msgstr "" + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "" + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "" + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "" + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "" + +#: src/Statement.php:407 +msgid "Keyword at end of statement." +msgstr "" + +#: src/Statement.php:551 +msgid "Unexpected ordering of clauses." +msgstr "" + +#: src/Statements/CreateStatement.php:492 +msgid "The name of the entity was expected." +msgstr "" + +#: src/Statements/CreateStatement.php:542 +msgid "A table name was expected." +msgstr "" + +#: src/Statements/CreateStatement.php:550 +msgid "At least one column definition was expected." +msgstr "" + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "" + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "" + +#: src/Statements/LockStatement.php:116 +msgid "Unexpected end of LOCK statement." +msgstr "" + +#: src/Statements/PurgeStatement.php:136 +msgid "Unexpected keyword" +msgstr "" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/bs/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/bs/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..c2bc7bb10b Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/bs/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/bs/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/bs/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..7be8f5665e --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/bs/LC_MESSAGES/sqlparser.po @@ -0,0 +1,286 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2015-10-15 11:31+0200\n" +"Last-Translator: Michal Čihař \n" +"Language-Team: Bosnian \n" +"Language: bs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 2.5-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "" + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "" + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "" + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "" + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "" + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "" + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "" + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "" + +#: src/Components/CaseExpression.php:225 +msgid "Potential duplicate alias of CASE expression." +msgstr "" + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "" + +#: src/Components/CaseExpression.php:262 +#, fuzzy +#| msgid "No databases selected." +msgid "An alias was expected after AS." +msgstr "Nije izabrana ni jedna baza." + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" + +#: src/Components/CreateDefinition.php:266 +#, fuzzy +msgid "A symbol name was expected!" +msgstr "Šablon imena datoteke" + +#: src/Components/CreateDefinition.php:301 +#, fuzzy +#| msgid "No databases selected." +msgid "A comma or a closing bracket was expected." +msgstr "Nije izabrana ni jedna baza." + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "" + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "" + +#: src/Components/ExpressionArray.php:101 +#, fuzzy +#| msgid "No databases selected." +msgid "An expression was expected." +msgstr "Nije izabrana ni jedna baza." + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +#, fuzzy +#| msgid "No databases selected." +msgid "An alias was expected." +msgstr "Nije izabrana ni jedna baza." + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "" + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "" + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "" + +#: src/Components/LockExpression.php:91 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of LOCK expression." +msgstr "Na početku tabele" + +#: src/Components/LockExpression.php:199 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of Lock expression." +msgstr "Na početku tabele" + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "" + +#: src/Components/RenameOperation.php:105 +msgid "The old name of the table was expected." +msgstr "" + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "" + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "" + +#: src/Components/RenameOperation.php:151 +#, fuzzy +#| msgid "The row has been deleted." +msgid "A rename operation was expected." +msgstr "Red je obrisan" + +#: src/Components/SetOperation.php:121 +#, fuzzy +#| msgid "as regular expression" +msgid "Missing expression." +msgstr "kao regularni izraz" + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "" + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "" + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "" + +#: src/Lexer.php:909 +#, fuzzy, php-format +msgid "Ending quote %1$s was expected." +msgstr "Tabela %s je odbačena" + +#: src/Lexer.php:955 +#, fuzzy +msgid "Variable name was expected." +msgstr "Šablon imena datoteke" + +#: src/Parser.php:451 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected beginning of statement." +msgstr "Na početku tabele" + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "" + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "" + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "" + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "" + +#: src/Statement.php:407 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Keyword at end of statement." +msgstr "Na početku tabele" + +#: src/Statement.php:551 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected ordering of clauses." +msgstr "Na početku tabele" + +#: src/Statements/CreateStatement.php:492 +msgid "The name of the entity was expected." +msgstr "" + +#: src/Statements/CreateStatement.php:542 +#, fuzzy +msgid "A table name was expected." +msgstr "Šablon imena datoteke" + +#: src/Statements/CreateStatement.php:550 +#, fuzzy +#| msgid "The row has been deleted." +msgid "At least one column definition was expected." +msgstr "Red je obrisan" + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "" + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "" + +#: src/Statements/LockStatement.php:116 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of LOCK statement." +msgstr "Na početku tabele" + +#: src/Statements/PurgeStatement.php:136 +msgid "Unexpected keyword" +msgstr "" + +#, fuzzy +#~| msgid "Error" +#~ msgid "error #1" +#~ msgstr "Greška" + +#, fuzzy +#~| msgid "Query type" +#~ msgid "strict error" +#~ msgstr "Vrsta upita" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ca/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ca/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..caa7f62840 Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ca/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ca/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ca/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..1ab4909f3b --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ca/LC_MESSAGES/sqlparser.po @@ -0,0 +1,268 @@ +# Automatically generated <>, 2010. +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2018-01-15 17:44+0000\n" +"Last-Translator: Robert Antoni Buj Gelonch \n" +"Language-Team: Catalan \n" +"Language: ca\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 2.19-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "Encara no implementat." + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "" +"S'ha trobat una sentència nova, però no hi ha cap delimitador entre aquesta " +"i l'anterior." + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "Operació de modificació no reconeguda." + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "S'esperaven %1$d valors, però s'han trobat %2$d." + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "S'esperava un claudàtor d'obertura seguit per un conjunt de valors." + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "S'esperava un claudàtor d'obertura." + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "Paraula clau no esperada." + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "Final inesperat d'expressió CASE" + +#: src/Components/CaseExpression.php:225 +#, fuzzy +#| msgid "Unexpected end of CASE expression" +msgid "Potential duplicate alias of CASE expression." +msgstr "Final inesperat d'expressió CASE" + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "S'ha trobat un àlies anteriorment." + +#: src/Components/CaseExpression.php:262 +#, fuzzy +#| msgid "An alias was expected." +msgid "An alias was expected after AS." +msgstr "S'esperava un àlies." + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" +"S'esperava un nom de símbol! No es pot utilitzar una paraula clau reservada " +"com a nom de columna sense les cometes invertides." + +#: src/Components/CreateDefinition.php:266 +msgid "A symbol name was expected!" +msgstr "S'esperava un nom de símbol!" + +#: src/Components/CreateDefinition.php:301 +msgid "A comma or a closing bracket was expected." +msgstr "S'esperava una coma o un claudàtor de tancament." + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "S'esperava un claudàtor de tancament." + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "Tipus de dades desconegut." + +#: src/Components/ExpressionArray.php:101 +msgid "An expression was expected." +msgstr "S'esperava una expressió." + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +msgid "An alias was expected." +msgstr "S'esperava un àlies." + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "Punt inesperat." + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "Testimoni no esperat." + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "S'esperava un desplaçament." + +#: src/Components/LockExpression.php:91 +#, fuzzy +#| msgid "Unexpected end of CASE expression" +msgid "Unexpected end of LOCK expression." +msgstr "Final inesperat d'expressió CASE" + +#: src/Components/LockExpression.php:199 +#, fuzzy +#| msgid "Unexpected end of CASE expression" +msgid "Unexpected end of Lock expression." +msgstr "Final inesperat d'expressió CASE" + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "Aquesta opció està en conflicte amb \"%1$s\"." + +#: src/Components/RenameOperation.php:105 +msgid "The old name of the table was expected." +msgstr "S'esperava el nom antic de la taula." + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "S'esperava la paraula clau \"TO\"." + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "S'esperava el nom nou de la taula." + +#: src/Components/RenameOperation.php:151 +msgid "A rename operation was expected." +msgstr "S'esperava una operació de canvi de nom." + +#: src/Components/SetOperation.php:121 +msgid "Missing expression." +msgstr "Expressió no trobada." + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "Caràcter no esperat." + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "S'esperaven espais en blanc abans del delimitador." + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "S'esperava un delimitador." + +#: src/Lexer.php:909 +#, php-format +msgid "Ending quote %1$s was expected." +msgstr "S'esperava una cometa de tancament %1$s." + +#: src/Lexer.php:955 +msgid "Variable name was expected." +msgstr "S'esperava un nom de variable." + +#: src/Parser.php:451 +msgid "Unexpected beginning of statement." +msgstr "Començament no esperat de sentència." + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "Tipus de sentència no reconegut." + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "No s'ha iniciat cap transacció anteriorment." + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "Aquest tipus de clàusula s'ha analitzat anteriorment." + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "Paraula clau no reconeguda." + +#: src/Statement.php:407 +msgid "Keyword at end of statement." +msgstr "Paraula clau al final de la sentència." + +#: src/Statement.php:551 +msgid "Unexpected ordering of clauses." +msgstr "Ordre de condicions no esperat." + +#: src/Statements/CreateStatement.php:492 +msgid "The name of the entity was expected." +msgstr "S'esperava el nom de l'entitat." + +#: src/Statements/CreateStatement.php:542 +msgid "A table name was expected." +msgstr "S'esperava un nom de taula." + +#: src/Statements/CreateStatement.php:550 +msgid "At least one column definition was expected." +msgstr "S'esperava al menys la definició d'una columna." + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "S'esperava una paraula clau \"RETURNS\"." + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "Aquest tipus de clàusula no és vàlid en consultes de diverses taules." + +#: src/Statements/LockStatement.php:116 +#, fuzzy +#| msgid "Unexpected beginning of statement." +msgid "Unexpected end of LOCK statement." +msgstr "Començament no esperat de sentència." + +#: src/Statements/PurgeStatement.php:136 +#, fuzzy +#| msgid "Unexpected keyword." +msgid "Unexpected keyword" +msgstr "Paraula clau no esperada." + +#~ msgid "error #1" +#~ msgstr "error #1" + +#~ msgid "strict error" +#~ msgstr "Error estricte" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ckb/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ckb/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..953be3cc49 Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ckb/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ckb/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ckb/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..b0242f9e0a --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ckb/LC_MESSAGES/sqlparser.po @@ -0,0 +1,285 @@ +# phpMyAdmin translation. +# Copyright (C) 2003 - 2012 phpMyAdmin devel team +# This file is distributed under the same license as the phpMyAdmin package. +# Automatically generated, 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2015-11-20 15:47+0000\n" +"Last-Translator: Dana Akram \n" +"Language-Team: Kurdish Sorani \n" +"Language: ckb\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 2.5-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "" + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "" + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "" + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "" + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "" + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "" + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "" + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "" + +#: src/Components/CaseExpression.php:225 +msgid "Potential duplicate alias of CASE expression." +msgstr "" + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "" + +#: src/Components/CaseExpression.php:262 +#, fuzzy +#| msgid "No tables selected." +msgid "An alias was expected after AS." +msgstr "هیچ خشتەیەک هەڵنەبژێردراوە." + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" + +#: src/Components/CreateDefinition.php:266 +#, fuzzy +#| msgid "No tables selected." +msgid "A symbol name was expected!" +msgstr "هیچ خشتەیەک هەڵنەبژێردراوە." + +#: src/Components/CreateDefinition.php:301 +#, fuzzy +#| msgid "No tables selected." +msgid "A comma or a closing bracket was expected." +msgstr "هیچ خشتەیەک هەڵنەبژێردراوە." + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "" + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "" + +#: src/Components/ExpressionArray.php:101 +#, fuzzy +#| msgid "No rows selected" +msgid "An expression was expected." +msgstr "هیچ ڕیزێک هەڵنەبژێراوە" + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +#, fuzzy +#| msgid "No tables selected." +msgid "An alias was expected." +msgstr "هیچ خشتەیەک هەڵنەبژێردراوە." + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "" + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "" + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "" + +#: src/Components/LockExpression.php:91 +#, fuzzy +#| msgid "Number of rows" +msgid "Unexpected end of LOCK expression." +msgstr "ژمارەی ڕیزەکان" + +#: src/Components/LockExpression.php:199 +#, fuzzy +#| msgid "Number of rows" +msgid "Unexpected end of Lock expression." +msgstr "ژمارەی ڕیزەکان" + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "" + +#: src/Components/RenameOperation.php:105 +msgid "The old name of the table was expected." +msgstr "" + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "" + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "" + +#: src/Components/RenameOperation.php:151 +#, fuzzy +#| msgid "The row has been deleted." +msgid "A rename operation was expected." +msgstr "ڕیزەکە سڕایەوە" + +#: src/Components/SetOperation.php:121 +#, fuzzy +#| msgid "Versions" +msgid "Missing expression." +msgstr "وەشانەکان" + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "" + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "" + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "" + +#: src/Lexer.php:909 +#, php-format +msgid "Ending quote %1$s was expected." +msgstr "" + +#: src/Lexer.php:955 +msgid "Variable name was expected." +msgstr "" + +#: src/Parser.php:451 +#, fuzzy +#| msgid "Number of rows" +msgid "Unexpected beginning of statement." +msgstr "ژمارەی ڕیزەکان" + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "" + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "" + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "" + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "" + +#: src/Statement.php:407 +#, fuzzy +#| msgid "Number of rows" +msgid "Keyword at end of statement." +msgstr "ژمارەی ڕیزەکان" + +#: src/Statement.php:551 +#, fuzzy +#| msgid "Number of rows" +msgid "Unexpected ordering of clauses." +msgstr "ژمارەی ڕیزەکان" + +#: src/Statements/CreateStatement.php:492 +msgid "The name of the entity was expected." +msgstr "" + +#: src/Statements/CreateStatement.php:542 +#, fuzzy +#| msgid "No tables selected." +msgid "A table name was expected." +msgstr "هیچ خشتەیەک هەڵنەبژێردراوە." + +#: src/Statements/CreateStatement.php:550 +#, fuzzy +#| msgid "The row has been deleted." +msgid "At least one column definition was expected." +msgstr "ڕیزەکە سڕایەوە" + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "" + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "" + +#: src/Statements/LockStatement.php:116 +#, fuzzy +#| msgid "Number of rows" +msgid "Unexpected end of LOCK statement." +msgstr "ژمارەی ڕیزەکان" + +#: src/Statements/PurgeStatement.php:136 +msgid "Unexpected keyword" +msgstr "" + +#, fuzzy +#~| msgid "Error" +#~ msgid "error #1" +#~ msgstr "هەڵە" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/cs/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/cs/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..1206d8b259 Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/cs/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/cs/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/cs/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..15540ac56c --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/cs/LC_MESSAGES/sqlparser.po @@ -0,0 +1,258 @@ +# +# Michal Čihař , 2010, 2011, 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2020-05-06 22:12+0000\n" +"Last-Translator: Petr Duda \n" +"Language-Team: Czech \n" +"Language: cs\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +"X-Generator: Weblate 4.1-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "Zatím není implementováno." + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "Byl nalezen nový výraz bez oddělovače od předchozího výrazu." + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "Chybí čárka před začátkem nové operace změny." + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "Nerozpoznaná operace změny." + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "Byly nalezeny %2$d hodnoty, namísto očekávaných %1$d." + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "Byla očekávána úvodní závorka následovaná sadou hodnot." + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "Byla očekávána úvodní závorka." + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "Neočekávané klíčové slovo." + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "Neočekávaný konec CASE výrazu" + +#: src/Components/CaseExpression.php:225 +msgid "Potential duplicate alias of CASE expression." +msgstr "Možný duplicitní alias CASE výrazu." + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "Za klíčovým slovem AS byl očekáván alias, ale bylo nalezeno " + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "Byl nalezen alias." + +#: src/Components/CaseExpression.php:262 +msgid "An alias was expected after AS." +msgstr "Za klíčovým slovem AS byl očekáván alias." + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" +"Byl očekáván název symbolu! Vyhrazené klíčové slovo nelze použít jako název " +"sloupce bez zpětných apostrofů." + +#: src/Components/CreateDefinition.php:266 +msgid "A symbol name was expected!" +msgstr "Byl očekáván název symbolu!" + +#: src/Components/CreateDefinition.php:301 +msgid "A comma or a closing bracket was expected." +msgstr "Byla očekávána čárka nebo koncová závorka." + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "Byla očekávána koncová závorka." + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "Nerozpoznaný datový typ." + +#: src/Components/ExpressionArray.php:101 +msgid "An expression was expected." +msgstr "Byl očekáván výraz." + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +msgid "An alias was expected." +msgstr "Byl očekáván alias." + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "Neočekávaná tečka." + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "Neočekávaný token." + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "Byl očekáván offset." + +#: src/Components/LockExpression.php:91 +msgid "Unexpected end of LOCK expression." +msgstr "Neočekávaný konec LOCK výrazu." + +#: src/Components/LockExpression.php:199 +msgid "Unexpected end of Lock expression." +msgstr "Neočekávaný konec LOCK výrazu." + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "Tato volba koliduje s \"%1$s\"." + +#: src/Components/RenameOperation.php:105 +msgid "The old name of the table was expected." +msgstr "Byl očekáván starý název tabulky." + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "Bylo očekáváno klíčové slovo \"TO\"." + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "Byl očekáván nový název tabulky." + +#: src/Components/RenameOperation.php:151 +msgid "A rename operation was expected." +msgstr "Byla očekávána operace přejmenování." + +#: src/Components/SetOperation.php:121 +msgid "Missing expression." +msgstr "Chybí výraz." + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "Neočekávaný znak." + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "Před oddělovačem byla očekávána mezera." + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "Byl očekáván oddělovač." + +#: src/Lexer.php:909 +#, php-format +msgid "Ending quote %1$s was expected." +msgstr "Byly očekávány koncové uvozovky %1$s." + +#: src/Lexer.php:955 +msgid "Variable name was expected." +msgstr "Byl očekáván název proměnné." + +#: src/Parser.php:451 +msgid "Unexpected beginning of statement." +msgstr "Neočekávaný začátek výrazu." + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "Nerozpoznaný typ výrazu." + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "Nebyla zahájena žádná transakce." + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "Pro tento typ klauzule proběhlo parsování." + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "Nerozpoznané klíčové slovo." + +#: src/Statement.php:407 +msgid "Keyword at end of statement." +msgstr "Klíčové slovo na konci výrazu." + +#: src/Statement.php:551 +msgid "Unexpected ordering of clauses." +msgstr "Neočekávané pořadí klauzulí." + +#: src/Statements/CreateStatement.php:492 +msgid "The name of the entity was expected." +msgstr "Byl očekáván název entity." + +#: src/Statements/CreateStatement.php:542 +msgid "A table name was expected." +msgstr "Byl očekáván název tabulky." + +#: src/Statements/CreateStatement.php:550 +msgid "At least one column definition was expected." +msgstr "Byla očekávána alespoň jedna definice sloupce." + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "Bylo očekáváno klíčové slovo \"RETURNS\"." + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "Tento typ klauzule je ve vícetabulkových dotazech neplatný." + +#: src/Statements/LockStatement.php:116 +msgid "Unexpected end of LOCK statement." +msgstr "Neočekávaný konec LOCK výrazu." + +#: src/Statements/PurgeStatement.php:136 +msgid "Unexpected keyword" +msgstr "Neočekávané klíčové slovo" + +#~ msgid "error #1" +#~ msgstr "chyba #1" + +#, fuzzy +#~| msgid "Gather errors" +#~ msgid "strict error" +#~ msgstr "Sbírat chyby" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/cy/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/cy/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..4b29a261ed Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/cy/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/cy/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/cy/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..92d6b2f2b5 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/cy/LC_MESSAGES/sqlparser.po @@ -0,0 +1,293 @@ +# phpMyAdmin translation. +# Copyright (C) 2003 - 2010 phpMyAdmin devel team +# This file is distributed under the same license as the phpMyAdmin package. +# FIRST AUTHOR , YEAR. +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2015-10-15 11:04+0200\n" +"Last-Translator: Michal Čihař \n" +"Language-Team: Welsh \n" +"Language: cy\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=6; plural=(n==0) ? 0 : (n==1) ? 1 : (n==2) ? 2 : " +"(n==3) ? 3 :(n==6) ? 4 : 5;\n" +"X-Generator: Weblate 2.5-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "" + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "" + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "" + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "" + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "" + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "" + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "" + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "" + +#: src/Components/CaseExpression.php:225 +msgid "Potential duplicate alias of CASE expression." +msgstr "" + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "" + +#: src/Components/CaseExpression.php:262 +#, fuzzy +#| msgid "No databases selected." +msgid "An alias was expected after AS." +msgstr "Dim cronfeydd data wedi'u dewis." + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" + +#: src/Components/CreateDefinition.php:266 +#, fuzzy +#| msgid "Table name template" +msgid "A symbol name was expected!" +msgstr "Templed enw tabl" + +#: src/Components/CreateDefinition.php:301 +#, fuzzy +#| msgid "No databases selected." +msgid "A comma or a closing bracket was expected." +msgstr "Dim cronfeydd data wedi'u dewis." + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "" + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "" + +#: src/Components/ExpressionArray.php:101 +#, fuzzy +#| msgid "No databases selected." +msgid "An expression was expected." +msgstr "Dim cronfeydd data wedi'u dewis." + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +#, fuzzy +#| msgid "No databases selected." +msgid "An alias was expected." +msgstr "Dim cronfeydd data wedi'u dewis." + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "" + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "" + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "" + +#: src/Components/LockExpression.php:91 +#, fuzzy +#| msgid "Show dimension of tables" +msgid "Unexpected end of LOCK expression." +msgstr "Dangos dimensiynau'r tabl" + +#: src/Components/LockExpression.php:199 +#, fuzzy +#| msgid "Show dimension of tables" +msgid "Unexpected end of Lock expression." +msgstr "Dangos dimensiynau'r tabl" + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "" + +#: src/Components/RenameOperation.php:105 +msgid "The old name of the table was expected." +msgstr "" + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "" + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "" + +#: src/Components/RenameOperation.php:151 +#, fuzzy +#| msgid "The row has been deleted." +msgid "A rename operation was expected." +msgstr "Cafodd y rhes ei dileu" + +#: src/Components/SetOperation.php:121 +#, fuzzy +#| msgid "as regular expression" +msgid "Missing expression." +msgstr "fel mynegiad arferol (regular expression)" + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "" + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "" + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "" + +#: src/Lexer.php:909 +#, fuzzy, php-format +#| msgid "Database %1$s has been created." +msgid "Ending quote %1$s was expected." +msgstr "Cafodd y gronfa ddata %1$s ei chreu." + +#: src/Lexer.php:955 +#, fuzzy +#| msgid "Table name template" +msgid "Variable name was expected." +msgstr "Templed enw tabl" + +#: src/Parser.php:451 +#, fuzzy +#| msgid "Show dimension of tables" +msgid "Unexpected beginning of statement." +msgstr "Dangos dimensiynau'r tabl" + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "" + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "" + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "" + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "" + +#: src/Statement.php:407 +#, fuzzy +#| msgid "Show dimension of tables" +msgid "Keyword at end of statement." +msgstr "Dangos dimensiynau'r tabl" + +#: src/Statement.php:551 +#, fuzzy +#| msgid "Show dimension of tables" +msgid "Unexpected ordering of clauses." +msgstr "Dangos dimensiynau'r tabl" + +#: src/Statements/CreateStatement.php:492 +msgid "The name of the entity was expected." +msgstr "" + +#: src/Statements/CreateStatement.php:542 +#, fuzzy +#| msgid "Table name template" +msgid "A table name was expected." +msgstr "Templed enw tabl" + +#: src/Statements/CreateStatement.php:550 +#, fuzzy +#| msgid "The row has been deleted." +msgid "At least one column definition was expected." +msgstr "Cafodd y rhes ei dileu" + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "" + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "" + +#: src/Statements/LockStatement.php:116 +#, fuzzy +#| msgid "Show dimension of tables" +msgid "Unexpected end of LOCK statement." +msgstr "Dangos dimensiynau'r tabl" + +#: src/Statements/PurgeStatement.php:136 +msgid "Unexpected keyword" +msgstr "" + +#, fuzzy +#~| msgid "Error" +#~ msgid "error #1" +#~ msgstr "Gwall" + +#, fuzzy +#~| msgid "Query" +#~ msgid "strict error" +#~ msgstr "Ymholiad" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/da/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/da/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..4bbef9b439 Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/da/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/da/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/da/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..db3e907856 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/da/LC_MESSAGES/sqlparser.po @@ -0,0 +1,269 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2017-09-14 19:11+0000\n" +"Last-Translator: Claus Svalekjaer \n" +"Language-Team: Danish \n" +"Language: da\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 2.17-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "Endnu ikke implementeret." + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "" +"Et nyt statement blev fundet, men der var ingen adskillelsestegn mellem det " +"og det foregående." + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "Ukendt alter opgave." + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "%1$d værdier var ventet, men fandt %2$d." + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "En kantet venstreparentes efterfulgt af et sæt værdier blev forventet." + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "En kantet venstreparantes var forventet." + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "Uventet nøgleord." + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "Uventet afslutning af CASE udtryk" + +#: src/Components/CaseExpression.php:225 +#, fuzzy +#| msgid "Unexpected end of CASE expression" +msgid "Potential duplicate alias of CASE expression." +msgstr "Uventet afslutning af CASE udtryk" + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "Et alias er fundet tidligere." + +#: src/Components/CaseExpression.php:262 +#, fuzzy +#| msgid "An alias was expected." +msgid "An alias was expected after AS." +msgstr "Et alias var verntet." + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" +"Et symbolnavn var ventet! Et reserveret nøgleord kan ikke bruges som et " +"feltnavn uden backquotes." + +#: src/Components/CreateDefinition.php:266 +msgid "A symbol name was expected!" +msgstr "Et symbol var ventet!" + +#: src/Components/CreateDefinition.php:301 +msgid "A comma or a closing bracket was expected." +msgstr "Et komma eller lukke parentes var ventet." + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "En kantet højreparantes var ventet." + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "Ukendt datatype." + +#: src/Components/ExpressionArray.php:101 +msgid "An expression was expected." +msgstr "Et udtryk var ventet." + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +msgid "An alias was expected." +msgstr "Et alias var verntet." + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "Uventet punktum." + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "Uventet token." + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "En forskydning var ventet." + +#: src/Components/LockExpression.php:91 +#, fuzzy +#| msgid "Unexpected end of CASE expression" +msgid "Unexpected end of LOCK expression." +msgstr "Uventet afslutning af CASE udtryk" + +#: src/Components/LockExpression.php:199 +#, fuzzy +#| msgid "Unexpected end of CASE expression" +msgid "Unexpected end of Lock expression." +msgstr "Uventet afslutning af CASE udtryk" + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "Denne indstilling er i konflikt med \"%1$s\"." + +#: src/Components/RenameOperation.php:105 +msgid "The old name of the table was expected." +msgstr "Tabellens gamle navn var ventet." + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "Nøgleordet \"TO\" var forventet." + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "Tabellens nye navn var ventet." + +#: src/Components/RenameOperation.php:151 +msgid "A rename operation was expected." +msgstr "En omdøbsopgave var ventet." + +#: src/Components/SetOperation.php:121 +msgid "Missing expression." +msgstr "Manglende udtryk." + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "Uventet karakter." + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "Forventede whitespace(s) før adskillelsestegn." + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "Forventede adskillelsestegn." + +#: src/Lexer.php:909 +#, php-format +msgid "Ending quote %1$s was expected." +msgstr "Slut quote %1$s var ventet." + +#: src/Lexer.php:955 +msgid "Variable name was expected." +msgstr "Variabelnavn var ventet." + +#: src/Parser.php:451 +msgid "Unexpected beginning of statement." +msgstr "Uventet start på statement." + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "Ukendt type af statement." + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "Ingen transaktion er blevet startet tidligere." + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "Denne type af sætningskonstruktion er tidligere blevet parset." + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "Ukendt nøgleord." + +#: src/Statement.php:407 +msgid "Keyword at end of statement." +msgstr "Nøgleord i slutningen af udtryk." + +#: src/Statement.php:551 +msgid "Unexpected ordering of clauses." +msgstr "Uventet clause rækkefølge." + +#: src/Statements/CreateStatement.php:492 +msgid "The name of the entity was expected." +msgstr "Enhedens navn var ventet." + +#: src/Statements/CreateStatement.php:542 +msgid "A table name was expected." +msgstr "Et tabelnavn var ventet." + +#: src/Statements/CreateStatement.php:550 +msgid "At least one column definition was expected." +msgstr "Mindst en kolonne definition var ventet." + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "Et \"RETURNS\" nøgleord var forventet." + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "" +"Denn type af sætningskonstruktion er ikke gyldig i multitabel forespørgsler." + +#: src/Statements/LockStatement.php:116 +#, fuzzy +#| msgid "Unexpected beginning of statement." +msgid "Unexpected end of LOCK statement." +msgstr "Uventet start på statement." + +#: src/Statements/PurgeStatement.php:136 +#, fuzzy +#| msgid "Unexpected keyword." +msgid "Unexpected keyword" +msgstr "Uventet nøgleord." + +#~ msgid "error #1" +#~ msgstr "fejl #1" + +#~ msgid "strict error" +#~ msgstr "stringent fejl" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/de/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/de/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..7184330c3b Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/de/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/de/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/de/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..20c6f9a3aa --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/de/LC_MESSAGES/sqlparser.po @@ -0,0 +1,257 @@ +# Automatically generated <>, 2010. +msgid "" +msgstr "" +"Project-Id-Version: phpMyAdmin-docs 4.0.0-dev\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2020-04-09 07:25+0000\n" +"Last-Translator: Predatorix Phoenix \n" +"Language-Team: German \n" +"Language: de\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.0-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "Noch nicht implementiert." + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "" +"Eine neue Anweisung wurde gefunden, aber kein Trennzeichen zwischen ihm und " +"dem vorhergehenden." + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "Fehlendes Komma vor einer neuen ALTER-Operation." + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "Unerkannte ALTER-Operation." + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "%1$d Werte erwartet, aber %2$d gefunden." + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "" +"Eine öffnende Klammer, gefolgt von einer Liste von Werten, wurde erwartet." + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "Eine öffnende Klammer wurde erwartet." + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "Unerwartetes Schlüsselwort." + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "Unerwartetes Ende eines CASE Ausdrucks" + +#: src/Components/CaseExpression.php:225 +msgid "Potential duplicate alias of CASE expression." +msgstr "Möglicher doppelter Alias eines CASE Ausdrucks." + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "Ein Alias wurde nach AS erwartet, aber stattdessen " + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "Ein Alias wurde zuvor gefunden." + +#: src/Components/CaseExpression.php:262 +msgid "An alias was expected after AS." +msgstr "Ein Alias wurde nach AS erwartet." + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" +"Ein Symbolname wurde erwartet! Ein reserviertes Schlüsselwort kann nicht " +"ohne Backquotes als Tabellenname verwendet werden." + +#: src/Components/CreateDefinition.php:266 +msgid "A symbol name was expected!" +msgstr "Ein Symbolname wurde erwartet!" + +#: src/Components/CreateDefinition.php:301 +msgid "A comma or a closing bracket was expected." +msgstr "Ein Komma oder eine schließende Klammer wurde erwartet." + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "Eine schließende Klammer wurde erwartet." + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "Unerkannter Datentyp." + +#: src/Components/ExpressionArray.php:101 +msgid "An expression was expected." +msgstr "Ein Ausdruck wurde erwartet." + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +msgid "An alias was expected." +msgstr "Ein Alias wurde erwartet." + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "Unerwarteter Punkt." + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "Unerwartetes Zeichen." + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "Ein Offset wurde erwartet." + +#: src/Components/LockExpression.php:91 +msgid "Unexpected end of LOCK expression." +msgstr "Unerwartetes Ende eines LOCK-Ausdrucks." + +#: src/Components/LockExpression.php:199 +msgid "Unexpected end of Lock expression." +msgstr "Unerwartetes Ende eines LOCK-Ausdrucks." + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "Diese Option widerspricht „%1$s“." + +#: src/Components/RenameOperation.php:105 +msgid "The old name of the table was expected." +msgstr "Der ursprüngliche Tabellenname wurde erwartet." + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "Schlüsselwort „TO“ wurde erwartet." + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "Der neue Tabellenname wurde erwartet." + +#: src/Components/RenameOperation.php:151 +msgid "A rename operation was expected." +msgstr "Eine Umbenennungsoperation wurde erwartet." + +#: src/Components/SetOperation.php:121 +msgid "Missing expression." +msgstr "Fehlender Ausdruck." + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "Unerwartetes Zeichen." + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "Erwartete Whitespace vor dem Trennzeichen." + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "Erwartete Trennzeichen." + +#: src/Lexer.php:909 +#, php-format +msgid "Ending quote %1$s was expected." +msgstr "Schließendes Anführungszeichen %1$s wurde erzeugt." + +#: src/Lexer.php:955 +msgid "Variable name was expected." +msgstr "Variablenname wurde erwartet." + +#: src/Parser.php:451 +msgid "Unexpected beginning of statement." +msgstr "Unerwarteter Statement-Anfang." + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "Unerkannte Statement-Typ." + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "Bisher wurde keine Transaktion gestartet." + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "Diese Art von Klausel wurde zuvor analysiert." + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "Unerkanntes Schlüsselwort." + +#: src/Statement.php:407 +msgid "Keyword at end of statement." +msgstr "Schlüsselwort am Ende der Anweisung." + +#: src/Statement.php:551 +msgid "Unexpected ordering of clauses." +msgstr "Unerwartete Datensatzanforderung." + +#: src/Statements/CreateStatement.php:492 +msgid "The name of the entity was expected." +msgstr "Der Name der Entität wurde erwartet." + +#: src/Statements/CreateStatement.php:542 +msgid "A table name was expected." +msgstr "Tabellenname wurde erwartet." + +#: src/Statements/CreateStatement.php:550 +msgid "At least one column definition was expected." +msgstr "Mindestens eine Felddefinition wurde erwartet." + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "Ein „RETURNS“-Schlüsselwort wurde erwartet." + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "Diese Art von Klausel ist in Mehr-Tabellen-Anfragen nicht zulässig." + +#: src/Statements/LockStatement.php:116 +msgid "Unexpected end of LOCK statement." +msgstr "Unerwartetes Ende einer LOCK-Anweisung." + +#: src/Statements/PurgeStatement.php:136 +msgid "Unexpected keyword" +msgstr "Unerwartetes Schlüsselwort" + +#~ msgid "error #1" +#~ msgstr "Fehler #1" + +#~ msgid "strict error" +#~ msgstr "strikter Fehler" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/el/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/el/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..eac4991350 Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/el/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/el/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/el/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..74cc8472c3 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/el/LC_MESSAGES/sqlparser.po @@ -0,0 +1,256 @@ +# Automatically generated <>, 2010. +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2021-05-03 14:31+0000\n" +"Last-Translator: Eugenia Russell \n" +"Language-Team: Greek \n" +"Language: el\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.7-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "Δεν εφαρμόστηκε ακόμα." + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "" +"Βρέθηκε μια νέα δήλωση, αλλά χωρίς διαχωριστικό μεταξύ της και της " +"προηγούμενης." + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "Λείπει κόμμα πριν από την έναρξη μιας νέας λειτουργίας αλλαγής." + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "Μη αναγνωρισμένη λειτουργία αλλαγής." + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "Αναμενόταν %1$d τιμές, αλλά βρέθηκαν %2$d." + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "Αναμενόταν μια ανοιχτή αγκύλη ακολουθούμενη από ένα σύνολο τιμών." + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "Αναμενόταν μια ανοιχτή αγκύλη." + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "Μη αναμενόμενη λέξη-κλειδί." + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "Μη αναμενόμενο τέλος της έκφρασης CASE" + +#: src/Components/CaseExpression.php:225 +msgid "Potential duplicate alias of CASE expression." +msgstr "Μη αναμενόμενο τέλος της έκφρασης CASE." + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "Ένα ψευδώνυμο αναμενόταν μετά το AS αλλά πήρε " + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "Βρέθηκε μια ετικέτα προηγουμένως." + +#: src/Components/CaseExpression.php:262 +msgid "An alias was expected after AS." +msgstr "Ένα ψευδώνυμο αναμενόταν μετά το AS." + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" +"Αναμενόταν ένα όνομα συμβόλου! Μια δεσμευμένη λέξη-κλειδί δεν μπορεί να " +"χρησιμοποιηθεί ως όνομα στήλης χωρίς εισαγωγικά." + +#: src/Components/CreateDefinition.php:266 +msgid "A symbol name was expected!" +msgstr "Αναμενόταν όνομα συμβόλου!" + +#: src/Components/CreateDefinition.php:301 +msgid "A comma or a closing bracket was expected." +msgstr "Αναμενόταν ένα κόμμα ή μια κλειστή αγκύλη." + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "Αναμενόταν κλείσιμο αγκύλης." + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "Μη αναγνωρισμένος τύπος δεδομένων." + +#: src/Components/ExpressionArray.php:101 +msgid "An expression was expected." +msgstr "Αναμενόταν μια έκφραση." + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +msgid "An alias was expected." +msgstr "Αναμενόταν μια ετικέτα." + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "Μη αναμενόμενη τελεία." + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "Μη αναμενόμενο τεκμήριο." + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "Αναμενόταν μια αντιστάθμιση." + +#: src/Components/LockExpression.php:91 +msgid "Unexpected end of LOCK expression." +msgstr "Μη αναμενόμενο τέλος της έκφρασης CASE." + +#: src/Components/LockExpression.php:199 +msgid "Unexpected end of Lock expression." +msgstr "Μη αναμενόμενο τέλος της έκφρασης CASE." + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "Αυτή η επιλογή έχει διαίνεξη με το «%1$s»." + +#: src/Components/RenameOperation.php:105 +msgid "The old name of the table was expected." +msgstr "Αναμενόταν το παλαιό όνομα του πίνακα." + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "Αναμενόταν η λέξη-κλειδί «TO»." + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "Αναμενόταν το νέο όνομα του πίνακα." + +#: src/Components/RenameOperation.php:151 +msgid "A rename operation was expected." +msgstr "Αναμενόταν μια λειτουργία μετονομασίας." + +#: src/Components/SetOperation.php:121 +msgid "Missing expression." +msgstr "Απολεσθείσα έκφραση." + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "Μη αναμενόμενος χαρακτήρας." + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "Αναμενόταν λευκό(ά) διάστημα(τα) πριν τον διαχωριστή." + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "Αναμενόταν διαχωριστής." + +#: src/Lexer.php:909 +#, php-format +msgid "Ending quote %1$s was expected." +msgstr "Αναμενόταν τελικό εισαγωγικό %1$s." + +#: src/Lexer.php:955 +msgid "Variable name was expected." +msgstr "Αναμενόταν όνομα μεταβλητής." + +#: src/Parser.php:451 +msgid "Unexpected beginning of statement." +msgstr "Μη αναμενόμενη έναρξη δήλωσης." + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "Μη αναγνωρισμένος τύπος δήλωσης." + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "Καμιά συναλλαγή δεν ξεκίνησε προηγουμένως." + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "Αυτός ο τύπος ρύτρας έχει αναλυθεί προηγουμένως." + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "Μη αναγνωρισμένη λέξη κλειδί." + +#: src/Statement.php:407 +msgid "Keyword at end of statement." +msgstr "Λέξη-κλειδί στο τέλος της δήλωσης." + +#: src/Statement.php:551 +msgid "Unexpected ordering of clauses." +msgstr "Μη αναμενόμενη ταξινόμηση δηλώσεων." + +#: src/Statements/CreateStatement.php:492 +msgid "The name of the entity was expected." +msgstr "Αναμενόταν το όνομα της οντότητας." + +#: src/Statements/CreateStatement.php:542 +msgid "A table name was expected." +msgstr "Αναμενόταν όνομα πίνακα." + +#: src/Statements/CreateStatement.php:550 +msgid "At least one column definition was expected." +msgstr "Αναμενόταν τουλάχιστον ένας ορισμός πεδίου." + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "Αναμενόταν μια λέξη-κλειδί «RETURNS»." + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "Αυτός ο τύπος ρύτρας δεν είναι έγκυρος σε ερωτήματα πολλαπλών πινάκων." + +#: src/Statements/LockStatement.php:116 +msgid "Unexpected end of LOCK statement." +msgstr "Μη αναμενόμενο τέλος της δήλωσης LOCK." + +#: src/Statements/PurgeStatement.php:136 +msgid "Unexpected keyword" +msgstr "Μη αναμενόμενη λέξη-κλειδί" + +#~ msgid "error #1" +#~ msgstr "σφάλμα #1" + +#~ msgid "strict error" +#~ msgstr "περιορισμένο σφάλμα" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/en_GB/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/en_GB/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..b3b62d0451 Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/en_GB/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/en_GB/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/en_GB/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..5e25f19271 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/en_GB/LC_MESSAGES/sqlparser.po @@ -0,0 +1,257 @@ +# Automatically generated <>, 2010. +# Robert Readman , 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2020-03-20 21:02+0000\n" +"Last-Translator: William Desportes \n" +"Language-Team: English (United Kingdom) \n" +"Language: en_GB\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.0-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "Not implemented yet." + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "" +"A new statement was found, but no delimiter between it and the previous one." + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "Missing comma before start of a new alter operation." + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "Unrecognised alter operation." + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "%1$d values were expected, but found %2$d." + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "An opening bracket followed by a set of values was expected." + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "An opening bracket was expected." + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "Unexpected keyword." + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "Unexpected end of CASE expression" + +#: src/Components/CaseExpression.php:225 +msgid "Potential duplicate alias of CASE expression." +msgstr "Potential duplicate alias of CASE expression." + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "An alias expected after AS but got " + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "An alias was previously found." + +#: src/Components/CaseExpression.php:262 +msgid "An alias was expected after AS." +msgstr "An alias was expected after AS." + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" +"A symbol name was expected! A reserved keyword cannot be used as a column " +"name without backquotes." + +#: src/Components/CreateDefinition.php:266 +msgid "A symbol name was expected!" +msgstr "A symbol name was expected!" + +#: src/Components/CreateDefinition.php:301 +msgid "A comma or a closing bracket was expected." +msgstr "A comma or a closing bracket was expected." + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "A closing bracket was expected." + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "Unrecognised data type." + +#: src/Components/ExpressionArray.php:101 +msgid "An expression was expected." +msgstr "An expression was expected." + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +msgid "An alias was expected." +msgstr "An alias was expected." + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "Unexpected dot." + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "Unexpected token." + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "An offset was expected." + +#: src/Components/LockExpression.php:91 +msgid "Unexpected end of LOCK expression." +msgstr "Unexpected end of LOCK expression." + +#: src/Components/LockExpression.php:199 +msgid "Unexpected end of Lock expression." +msgstr "Unexpected end of LOCK expression." + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "This option conflicts with \"%1$s\"." + +#: src/Components/RenameOperation.php:105 +msgid "The old name of the table was expected." +msgstr "The old name of the table was expected." + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "Keyword \"TO\" was expected." + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "The new name of the table was expected." + +#: src/Components/RenameOperation.php:151 +msgid "A rename operation was expected." +msgstr "A rename operation was expected." + +#: src/Components/SetOperation.php:121 +msgid "Missing expression." +msgstr "Missing expression." + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "Unexpected character." + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "Expected whitespace(s) before delimiter." + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "Expected delimiter." + +#: src/Lexer.php:909 +#, php-format +msgid "Ending quote %1$s was expected." +msgstr "Ending quote %1$s was expected." + +#: src/Lexer.php:955 +msgid "Variable name was expected." +msgstr "Variable name was expected." + +#: src/Parser.php:451 +msgid "Unexpected beginning of statement." +msgstr "Unexpected beginning of statement." + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "Unrecognised statement type." + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "No transaction was previously started." + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "This type of clause was previously parsed." + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "Unrecognised keyword." + +#: src/Statement.php:407 +msgid "Keyword at end of statement." +msgstr "Keyword at end of statement." + +#: src/Statement.php:551 +msgid "Unexpected ordering of clauses." +msgstr "Unexpected ordering of clauses." + +#: src/Statements/CreateStatement.php:492 +msgid "The name of the entity was expected." +msgstr "The name of the entity was expected." + +#: src/Statements/CreateStatement.php:542 +msgid "A table name was expected." +msgstr "A table name was expected." + +#: src/Statements/CreateStatement.php:550 +msgid "At least one column definition was expected." +msgstr "At least one column definition was expected." + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "A \"RETURNS\" keyword was expected." + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "This type of clause is not valid in Multi-table queries." + +#: src/Statements/LockStatement.php:116 +msgid "Unexpected end of LOCK statement." +msgstr "Unexpected end of LOCK statement." + +#: src/Statements/PurgeStatement.php:136 +msgid "Unexpected keyword" +msgstr "Unexpected keyword" + +#~ msgid "error #1" +#~ msgstr "error #1" + +#~ msgid "strict error" +#~ msgstr "strict error" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/eo/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/eo/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..aa2b4d5c71 Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/eo/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/eo/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/eo/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..f3e9817546 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/eo/LC_MESSAGES/sqlparser.po @@ -0,0 +1,252 @@ +# phpMyAdmin translation. +# Copyright (C) 2003 - 2014 phpMyAdmin devel team +# This file is distributed under the same license as the phpMyAdmin package. +# Automatically generated, 2014. +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2016-12-21 15:58+0000\n" +"Last-Translator: Michal Čihař \n" +"Language-Team: Esperanto \n" +"Language: eo\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 2.10\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "" + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "" + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "" + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "" + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "" + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "" + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "" + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "" + +#: src/Components/CaseExpression.php:225 +msgid "Potential duplicate alias of CASE expression." +msgstr "" + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "" + +#: src/Components/CaseExpression.php:262 +msgid "An alias was expected after AS." +msgstr "" + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" + +#: src/Components/CreateDefinition.php:266 +msgid "A symbol name was expected!" +msgstr "" + +#: src/Components/CreateDefinition.php:301 +msgid "A comma or a closing bracket was expected." +msgstr "" + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "" + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "" + +#: src/Components/ExpressionArray.php:101 +msgid "An expression was expected." +msgstr "" + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +msgid "An alias was expected." +msgstr "" + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "" + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "" + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "" + +#: src/Components/LockExpression.php:91 +msgid "Unexpected end of LOCK expression." +msgstr "" + +#: src/Components/LockExpression.php:199 +msgid "Unexpected end of Lock expression." +msgstr "" + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "" + +#: src/Components/RenameOperation.php:105 +msgid "The old name of the table was expected." +msgstr "" + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "" + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "" + +#: src/Components/RenameOperation.php:151 +msgid "A rename operation was expected." +msgstr "" + +#: src/Components/SetOperation.php:121 +msgid "Missing expression." +msgstr "" + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "" + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "" + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "" + +#: src/Lexer.php:909 +#, php-format +msgid "Ending quote %1$s was expected." +msgstr "" + +#: src/Lexer.php:955 +msgid "Variable name was expected." +msgstr "" + +#: src/Parser.php:451 +msgid "Unexpected beginning of statement." +msgstr "" + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "" + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "" + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "" + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "" + +#: src/Statement.php:407 +msgid "Keyword at end of statement." +msgstr "" + +#: src/Statement.php:551 +msgid "Unexpected ordering of clauses." +msgstr "" + +#: src/Statements/CreateStatement.php:492 +msgid "The name of the entity was expected." +msgstr "" + +#: src/Statements/CreateStatement.php:542 +msgid "A table name was expected." +msgstr "" + +#: src/Statements/CreateStatement.php:550 +msgid "At least one column definition was expected." +msgstr "" + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "" + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "" + +#: src/Statements/LockStatement.php:116 +msgid "Unexpected end of LOCK statement." +msgstr "" + +#: src/Statements/PurgeStatement.php:136 +msgid "Unexpected keyword" +msgstr "" + +#~ msgid "error #1" +#~ msgstr "eraro #1" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/es/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/es/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..9f1dce62df Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/es/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/es/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/es/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..58400d21ae --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/es/LC_MESSAGES/sqlparser.po @@ -0,0 +1,269 @@ +# Automatically generated <>, 2010. +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2017-09-10 09:25+0000\n" +"Last-Translator: Franco \n" +"Language-Team: Spanish \n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 2.17-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "Aún no implementado." + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "" +"Se encontró una nueva declaración, pero no hay delimitador entre éste y el " +"anterior." + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "Operación de modificación desconocida." + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "Se esperaban %1$d valores, pero encontró %2$d." + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "" +"Se esperaba un corchete de apertura seguido por un conjunto de valores." + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "Se esperaba un corchete de apertura." + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "Palabra clave inesperada." + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "Final inesperado de expresión CASE" + +#: src/Components/CaseExpression.php:225 +#, fuzzy +#| msgid "Unexpected end of CASE expression" +msgid "Potential duplicate alias of CASE expression." +msgstr "Final inesperado de expresión CASE" + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "Se encontró anteriormente un alias." + +#: src/Components/CaseExpression.php:262 +#, fuzzy +#| msgid "An alias was expected." +msgid "An alias was expected after AS." +msgstr "Se esperaba un alias." + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" +"¡Se esperaba un nombre de símbolo! Una palabra reservada no puede usarse " +"como nombre de columna sin comillas." + +#: src/Components/CreateDefinition.php:266 +msgid "A symbol name was expected!" +msgstr "¡Se esperaba un nombre de símbolo!" + +#: src/Components/CreateDefinition.php:301 +msgid "A comma or a closing bracket was expected." +msgstr "Se esperaba una coma o un corchete de cierre." + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "Se esperaba un corchete de cierre." + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "Tipo de dato desconocido." + +#: src/Components/ExpressionArray.php:101 +msgid "An expression was expected." +msgstr "Se esperaba una expresión." + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +msgid "An alias was expected." +msgstr "Se esperaba un alias." + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "Punto inesperado." + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "Símbolo (token) inesperado." + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "Se espera un desplazamiento." + +#: src/Components/LockExpression.php:91 +#, fuzzy +#| msgid "Unexpected end of CASE expression" +msgid "Unexpected end of LOCK expression." +msgstr "Final inesperado de expresión CASE" + +#: src/Components/LockExpression.php:199 +#, fuzzy +#| msgid "Unexpected end of CASE expression" +msgid "Unexpected end of Lock expression." +msgstr "Final inesperado de expresión CASE" + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "Esta opción tiene conflictos con \"%1$s\"." + +#: src/Components/RenameOperation.php:105 +msgid "The old name of the table was expected." +msgstr "Se esperaba el nombre anterior de la tabla." + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "Se esperaba la palabra clave \"TO\"." + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "Se esperaba el nuevo nombre de la tabla." + +#: src/Components/RenameOperation.php:151 +msgid "A rename operation was expected." +msgstr "Se esperaba un cambio de nombre." + +#: src/Components/SetOperation.php:121 +msgid "Missing expression." +msgstr "Expresión desaparecida." + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "Caracter inesperado." + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "Espacio(s) en blanco esperado(s) antes de delimitador." + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "Delimitador esperado." + +#: src/Lexer.php:909 +#, php-format +msgid "Ending quote %1$s was expected." +msgstr "Se esperaba terminar la cita %1$s." + +#: src/Lexer.php:955 +msgid "Variable name was expected." +msgstr "Se esperaba el nombre de la variable." + +#: src/Parser.php:451 +msgid "Unexpected beginning of statement." +msgstr "Comienzo inesperado de declaración." + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "Tipo de declaración desconocida." + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "Ninguna operación se inició anteriormente." + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "Este tipo de cláusula se analizó previamente." + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "Palabra clave no reconocida." + +#: src/Statement.php:407 +msgid "Keyword at end of statement." +msgstr "Palabra clave al final de la sentencia." + +#: src/Statement.php:551 +msgid "Unexpected ordering of clauses." +msgstr "Orden inesperado de condiciones." + +#: src/Statements/CreateStatement.php:492 +msgid "The name of the entity was expected." +msgstr "Se esperaba el nombre de la entidad." + +#: src/Statements/CreateStatement.php:542 +msgid "A table name was expected." +msgstr "Se esperaba un nombre de tabla." + +#: src/Statements/CreateStatement.php:550 +msgid "At least one column definition was expected." +msgstr "Se esperaba la definición de al menos una columna." + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "Se esperaba una palabra \"RETURNS\"." + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "Este tipo de cláusula no es válida en consultas multi-tabla." + +#: src/Statements/LockStatement.php:116 +#, fuzzy +#| msgid "Unexpected beginning of statement." +msgid "Unexpected end of LOCK statement." +msgstr "Comienzo inesperado de declaración." + +#: src/Statements/PurgeStatement.php:136 +#, fuzzy +#| msgid "Unexpected keyword." +msgid "Unexpected keyword" +msgstr "Palabra clave inesperada." + +#~ msgid "error #1" +#~ msgstr "error #1" + +#~ msgid "strict error" +#~ msgstr "error estricto" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/et/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/et/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..205ebbd009 Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/et/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/et/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/et/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..b6670d5813 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/et/LC_MESSAGES/sqlparser.po @@ -0,0 +1,256 @@ +# +# +# +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2020-03-30 06:26+0000\n" +"Last-Translator: Kristjan Räts \n" +"Language-Team: Estonian \n" +"Language: et\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.0-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "Hetkel veel rakendamata." + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "Leiti uus lause, kuid selle ja talle järgneva vahelt puudub eraldaja." + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "Uue ALTER operatsiooni eest puudub koma." + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "Tundmatu ALTER operatsioon." + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "Oodati %1$d väärtust, kuid leiti %2$d." + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "Oodati avanevat sulgu, millele järgnevad väärtused." + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "Oodati avanevat sulgu." + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "Ootamatu võtmesõna." + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "Ootamatu CASE lause lõpp" + +#: src/Components/CaseExpression.php:225 +msgid "Potential duplicate alias of CASE expression." +msgstr "Võimalik topelt alias CASE lauses." + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "Fraasi AS järel oodati aliast, kuid leiti " + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "Eelnevalt leiti alias." + +#: src/Components/CaseExpression.php:262 +msgid "An alias was expected after AS." +msgstr "Fraasi AS taha oodati aliast." + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" +"Oodati sümboli nime! Reserveeritud võtmesõna saab kasutada veeru nimena " +"ainult siis, kui ta on ühekordsete tagurpidi jutumärkide vahel." + +#: src/Components/CreateDefinition.php:266 +msgid "A symbol name was expected!" +msgstr "Oodati sümboli nime!" + +#: src/Components/CreateDefinition.php:301 +msgid "A comma or a closing bracket was expected." +msgstr "Oodati koma või lõpetavat sulgu." + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "Oodati lõpetavat sulgu." + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "Tundmatu andmetüüp." + +#: src/Components/ExpressionArray.php:101 +msgid "An expression was expected." +msgstr "Oodati avaldist." + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +msgid "An alias was expected." +msgstr "Oodati aliast." + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "Ootamatu punkt." + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "Ootamatud märk." + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "Oodati nihet." + +#: src/Components/LockExpression.php:91 +msgid "Unexpected end of LOCK expression." +msgstr "Ootamatu LOCK lause lõpp." + +#: src/Components/LockExpression.php:199 +msgid "Unexpected end of Lock expression." +msgstr "Ootamatu LOCK lause lõpp." + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "See säte põhjustab konflikti sättega \"%1$s\"." + +#: src/Components/RenameOperation.php:105 +msgid "The old name of the table was expected." +msgstr "Oodati tabeli vana nime." + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "Oodati võtmesõna \"TO\"." + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "Oodati tabeli uut nime." + +#: src/Components/RenameOperation.php:151 +msgid "A rename operation was expected." +msgstr "Oodati ümbernimetamist." + +#: src/Components/SetOperation.php:121 +msgid "Missing expression." +msgstr "Avaldis puudub." + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "Ootamatu sümbol." + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "Oodati eraldajale eelnevat tühemikku." + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "Oodati eraldajat." + +#: src/Lexer.php:909 +#, php-format +msgid "Ending quote %1$s was expected." +msgstr "Oodati lõpetavat sümbolit %1$s." + +#: src/Lexer.php:955 +msgid "Variable name was expected." +msgstr "Oodati muutuja nime." + +#: src/Parser.php:451 +msgid "Unexpected beginning of statement." +msgstr "Ootamatu lause algus." + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "Tundmatut tüüpi lause." + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "Transaktsiooni ei olnud eelnevalt alustatud." + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "Sellist tüüpi klausel parsiti eelnevalt." + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "Tundmatu võtmesõna." + +#: src/Statement.php:407 +msgid "Keyword at end of statement." +msgstr "Võtmesõna lause lõpus." + +#: src/Statement.php:551 +msgid "Unexpected ordering of clauses." +msgstr "Ootamatu lausete järjestus." + +#: src/Statements/CreateStatement.php:492 +msgid "The name of the entity was expected." +msgstr "Oodati olemi nime." + +#: src/Statements/CreateStatement.php:542 +msgid "A table name was expected." +msgstr "Oodati tabeli nime." + +#: src/Statements/CreateStatement.php:550 +msgid "At least one column definition was expected." +msgstr "Oodati vähemalt ühe veeru kirjeldust." + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "Oodati võtmesõna \"RETURNS\"." + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "Sellist tüüpi klausel ei ole mitme tabeli päringus kehtiv." + +#: src/Statements/LockStatement.php:116 +msgid "Unexpected end of LOCK statement." +msgstr "Ootamatu LOCK lause lõpp." + +#: src/Statements/PurgeStatement.php:136 +msgid "Unexpected keyword" +msgstr "Ootamatu võtmesõna" + +#~ msgid "error #1" +#~ msgstr "viga #1" + +#~ msgid "strict error" +#~ msgstr "otsene viga" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/eu/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/eu/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..151314655d Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/eu/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/eu/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/eu/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..0d6b879265 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/eu/LC_MESSAGES/sqlparser.po @@ -0,0 +1,285 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2015-10-15 11:26+0200\n" +"Last-Translator: Michal Čihař \n" +"Language-Team: Basque \n" +"Language: eu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 2.5-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "" + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "" + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "" + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "" + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "" + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "" + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "" + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "" + +#: src/Components/CaseExpression.php:225 +msgid "Potential duplicate alias of CASE expression." +msgstr "" + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "" + +#: src/Components/CaseExpression.php:262 +#, fuzzy +#| msgid "No databases selected." +msgid "An alias was expected after AS." +msgstr "Ez dago datu-baserik aukeratuta." + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" + +#: src/Components/CreateDefinition.php:266 +#, fuzzy +msgid "A symbol name was expected!" +msgstr "Txantiloi-fitxategiaren izena" + +#: src/Components/CreateDefinition.php:301 +#, fuzzy +#| msgid "No databases selected." +msgid "A comma or a closing bracket was expected." +msgstr "Ez dago datu-baserik aukeratuta." + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "" + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "" + +#: src/Components/ExpressionArray.php:101 +#, fuzzy +#| msgid "No databases selected." +msgid "An expression was expected." +msgstr "Ez dago datu-baserik aukeratuta." + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +#, fuzzy +#| msgid "No databases selected." +msgid "An alias was expected." +msgstr "Ez dago datu-baserik aukeratuta." + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "" + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "" + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "" + +#: src/Components/LockExpression.php:91 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of LOCK expression." +msgstr "Taularen hasieran" + +#: src/Components/LockExpression.php:199 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of Lock expression." +msgstr "Taularen hasieran" + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "" + +#: src/Components/RenameOperation.php:105 +msgid "The old name of the table was expected." +msgstr "" + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "" + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "" + +#: src/Components/RenameOperation.php:151 +#, fuzzy +#| msgid "The row has been deleted." +msgid "A rename operation was expected." +msgstr "Errenkada ezabatua izan da" + +#: src/Components/SetOperation.php:121 +#, fuzzy +#| msgid "as regular expression" +msgid "Missing expression." +msgstr "adierazpen erregular moduan" + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "" + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "" + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "" + +#: src/Lexer.php:909 +#, fuzzy, php-format +msgid "Ending quote %1$s was expected." +msgstr "%s taula ezabatu egin da" + +#: src/Lexer.php:955 +#, fuzzy +msgid "Variable name was expected." +msgstr "Txantiloi-fitxategiaren izena" + +#: src/Parser.php:451 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected beginning of statement." +msgstr "Taularen hasieran" + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "" + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "" + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "" + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "" + +#: src/Statement.php:407 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Keyword at end of statement." +msgstr "Taularen hasieran" + +#: src/Statement.php:551 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected ordering of clauses." +msgstr "Taularen hasieran" + +#: src/Statements/CreateStatement.php:492 +msgid "The name of the entity was expected." +msgstr "" + +#: src/Statements/CreateStatement.php:542 +#, fuzzy +msgid "A table name was expected." +msgstr "Txantiloi-fitxategiaren izena" + +#: src/Statements/CreateStatement.php:550 +#, fuzzy +#| msgid "The row has been deleted." +msgid "At least one column definition was expected." +msgstr "Errenkada ezabatua izan da" + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "" + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "" + +#: src/Statements/LockStatement.php:116 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of LOCK statement." +msgstr "Taularen hasieran" + +#: src/Statements/PurgeStatement.php:136 +msgid "Unexpected keyword" +msgstr "" + +#, fuzzy +#~| msgid "Error" +#~ msgid "error #1" +#~ msgstr "Errorea" + +#, fuzzy +#~| msgid "Query type" +#~ msgid "strict error" +#~ msgstr "Kontsulta mota" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/fa/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/fa/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..c72009ff14 Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/fa/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/fa/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/fa/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..f1f469a213 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/fa/LC_MESSAGES/sqlparser.po @@ -0,0 +1,286 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2020-09-15 15:36+0000\n" +"Last-Translator: eshesh \n" +"Language-Team: Persian \n" +"Language: fa\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.3-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "هنوز پیاده سازی نشده." + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "بیانیه‌ی جدیدی یافت شد،اما هیچ محدودیتی قبل و بعد از آن یافت نشد." + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "عملیاتِ تغییرِ غیر قابل تشخیص" + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "مقادیر %1$d انتظار می رود، اما %2$d یافت شد." + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "باید یک براکت آغازین و بعد از آن چند مقدار وجود داشته باشد." + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "یک براکت آغازین باید وجود داشته باشد." + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "کلمات کلیدی غیرمنتظره!" + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "پایان غیرمنتظره برای عبارت CASE!" + +#: src/Components/CaseExpression.php:225 +#, fuzzy +msgid "Potential duplicate alias of CASE expression." +msgstr "پایان ناشناخته عبارات" + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "" + +#: src/Components/CaseExpression.php:262 +#, fuzzy +#| msgid "No databases selected." +msgid "An alias was expected after AS." +msgstr "هیچ پایگاه داده ای انتخاب نشده است." + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" + +#: src/Components/CreateDefinition.php:266 +#, fuzzy +#| msgid "No databases selected." +msgid "A symbol name was expected!" +msgstr "هیچ پایگاه داده ای انتخاب نشده است." + +#: src/Components/CreateDefinition.php:301 +#, fuzzy +#| msgid "No databases selected." +msgid "A comma or a closing bracket was expected." +msgstr "هیچ پایگاه داده ای انتخاب نشده است." + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "" + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "" + +#: src/Components/ExpressionArray.php:101 +#, fuzzy +#| msgid "No rows selected" +msgid "An expression was expected." +msgstr "هیچ سطری انتخاب نشده است" + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +#, fuzzy +#| msgid "No databases selected." +msgid "An alias was expected." +msgstr "هیچ پایگاه داده ای انتخاب نشده است." + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "" + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "" + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "" + +#: src/Components/LockExpression.php:91 +#, fuzzy +msgid "Unexpected end of LOCK expression." +msgstr "پایان ناشناخته عبارات" + +#: src/Components/LockExpression.php:199 +#, fuzzy +msgid "Unexpected end of Lock expression." +msgstr "پایان ناشناخته عبارات" + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "" + +#: src/Components/RenameOperation.php:105 +msgid "The old name of the table was expected." +msgstr "" + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "" + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "" + +#: src/Components/RenameOperation.php:151 +#, fuzzy +#| msgid "The row has been deleted." +msgid "A rename operation was expected." +msgstr "سطر حذف گرديد" + +#: src/Components/SetOperation.php:121 +#, fuzzy +#| msgid "as regular expression" +msgid "Missing expression." +msgstr "بعنوان مبين منظم(as regular expression)" + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "" + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "" + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "" + +#: src/Lexer.php:909 +#, fuzzy, php-format +msgid "Ending quote %1$s was expected." +msgstr "جدول %s حذف گرديد" + +#: src/Lexer.php:955 +msgid "Variable name was expected." +msgstr "" + +#: src/Parser.php:451 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected beginning of statement." +msgstr "در ابتداي جدول" + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "" + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "" + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "" + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "" + +#: src/Statement.php:407 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Keyword at end of statement." +msgstr "در ابتداي جدول" + +#: src/Statement.php:551 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected ordering of clauses." +msgstr "در ابتداي جدول" + +#: src/Statements/CreateStatement.php:492 +msgid "The name of the entity was expected." +msgstr "" + +#: src/Statements/CreateStatement.php:542 +#, fuzzy +#| msgid "No databases selected." +msgid "A table name was expected." +msgstr "هیچ پایگاه داده ای انتخاب نشده است." + +#: src/Statements/CreateStatement.php:550 +#, fuzzy +#| msgid "The row has been deleted." +msgid "At least one column definition was expected." +msgstr "سطر حذف گرديد" + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "" + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "" + +#: src/Statements/LockStatement.php:116 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of LOCK statement." +msgstr "در ابتداي جدول" + +#: src/Statements/PurgeStatement.php:136 +#, fuzzy +msgid "Unexpected keyword" +msgstr "کلمه کلیدی ناشناس" + +#, fuzzy +#~| msgid "Error" +#~ msgid "error #1" +#~ msgstr "خطا" + +#, fuzzy +#~| msgid "Query" +#~ msgid "strict error" +#~ msgstr "پرس و جو" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/fi/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/fi/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..4f1c931872 Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/fi/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/fi/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/fi/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..7a3c52d6e4 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/fi/LC_MESSAGES/sqlparser.po @@ -0,0 +1,285 @@ +# Automatically generated <>, 2010. +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2017-12-01 19:45+0000\n" +"Last-Translator: ekeimaja \n" +"Language-Team: Finnish \n" +"Language: fi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 2.18-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "Ei vielä toteutettu." + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "" +"Löydettiin uusi lauseke, muttei erotinta sen ja sitä edeltäneen välillä." + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "Tunnistamaton \"alter\"-toiminto." + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "Odotettiin arvoa %1$d , mutta löydettiin %2$d." + +#: src/Components/Array2d.php:110 +#, fuzzy +msgid "An opening bracket followed by a set of values was expected." +msgstr "Odotettiin avausmerkki ja sitä odotettiin seuraavan arvoja." + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "Odotettiin avausmerkkiä." + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "Odottamaton avainsana." + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "Odottamaton loppu CASE-ilmaisulle" + +#: src/Components/CaseExpression.php:225 +#, fuzzy +#| msgid "Unexpected end of CASE expression" +msgid "Potential duplicate alias of CASE expression." +msgstr "Odottamaton loppu CASE-ilmaisulle" + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "" + +#: src/Components/CaseExpression.php:262 +#, fuzzy +#| msgid "An alias was expected." +msgid "An alias was expected after AS." +msgstr "Odotettiin aliasta." + +#: src/Components/CreateDefinition.php:252 +#, fuzzy +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" +"Odotettiin symbolin nimeä! Varattua avainsanaa ei voida käyttää palstan " +"nimenä ilman lainausmerkkejä." + +#: src/Components/CreateDefinition.php:266 +msgid "A symbol name was expected!" +msgstr "Odotettiin symbolinimeä!" + +#: src/Components/CreateDefinition.php:301 +msgid "A comma or a closing bracket was expected." +msgstr "Odotettiin pilkkua tai sulkumerkkiä." + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "Odotettiin sulkumerkkiä." + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "Tunnistamaton datatyyppi." + +#: src/Components/ExpressionArray.php:101 +msgid "An expression was expected." +msgstr "Odotettiin ilmaisua." + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +msgid "An alias was expected." +msgstr "Odotettiin aliasta." + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "Odottamaton piste." + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "Odottamaton merkki." + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "" + +#: src/Components/LockExpression.php:91 +#, fuzzy +#| msgid "Unexpected end of CASE expression" +msgid "Unexpected end of LOCK expression." +msgstr "Odottamaton loppu CASE-ilmaisulle" + +#: src/Components/LockExpression.php:199 +#, fuzzy +#| msgid "Unexpected end of CASE expression" +msgid "Unexpected end of Lock expression." +msgstr "Odottamaton loppu CASE-ilmaisulle" + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "" + +#: src/Components/RenameOperation.php:105 +msgid "The old name of the table was expected." +msgstr "Odotettiin vanhaa taulunimeä." + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "" + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "Odotettiin uutta taulunimeä." + +#: src/Components/RenameOperation.php:151 +msgid "A rename operation was expected." +msgstr "Odotettiin uudelleennimeämistoimintoa." + +#: src/Components/SetOperation.php:121 +#, fuzzy +#| msgid "as regular expression" +msgid "Missing expression." +msgstr "regexp-haku" + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "Odottamatton merkki." + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "" + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "" + +#: src/Lexer.php:909 +#, php-format +msgid "Ending quote %1$s was expected." +msgstr "Odotettiin loppumerkkiä %1$s." + +#: src/Lexer.php:955 +msgid "Variable name was expected." +msgstr "Odotettiin muuttujaa." + +#: src/Parser.php:451 +msgid "Unexpected beginning of statement." +msgstr "Odottamaton ilmaisun alku." + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "" + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "" + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "" + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "" + +#: src/Statement.php:407 +#, fuzzy +#| msgid "Unexpected beginning of statement." +msgid "Keyword at end of statement." +msgstr "Odottamaton ilmaisun alku." + +#: src/Statement.php:551 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected ordering of clauses." +msgstr "Taulun alkuun" + +#: src/Statements/CreateStatement.php:492 +#, fuzzy +#| msgid "The number of tables that are open." +msgid "The name of the entity was expected." +msgstr "Avoinna olevien taulujen määrä." + +#: src/Statements/CreateStatement.php:542 +#, fuzzy +#| msgid "Table name template" +msgid "A table name was expected." +msgstr "Taulunimen pohja" + +#: src/Statements/CreateStatement.php:550 +#, fuzzy +#| msgid "The row has been deleted." +msgid "At least one column definition was expected." +msgstr "Rivi on nyt poistettu." + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "" + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "" + +#: src/Statements/LockStatement.php:116 +#, fuzzy +#| msgid "Unexpected beginning of statement." +msgid "Unexpected end of LOCK statement." +msgstr "Odottamaton ilmaisun alku." + +#: src/Statements/PurgeStatement.php:136 +#, fuzzy +#| msgid "Unexpected keyword." +msgid "Unexpected keyword" +msgstr "Odottamaton avainsana." + +#, fuzzy +#~| msgid "errors." +#~ msgid "error #1" +#~ msgstr "virhettä." + +#, fuzzy +#~| msgid "Gather errors" +#~ msgid "strict error" +#~ msgstr "Kerää virheet" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/fr/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/fr/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..1df3654380 Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/fr/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/fr/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/fr/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..90849e61ed --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/fr/LC_MESSAGES/sqlparser.po @@ -0,0 +1,256 @@ +# Automatically generated <>, 2010. +msgid "" +msgstr "" +"Project-Id-Version: phpMyAdmin-docs 4.0.0-dev\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2020-03-20 20:58+0000\n" +"Last-Translator: William Desportes \n" +"Language-Team: French \n" +"Language: fr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.0-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "Pas encore mis en œuvre." + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "" +"Un nouvel énoncé a été trouvé, mais il n'y a aucun délimiteur entre celui-ci " +"et le précédent." + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "Virgule manquante avant le début d’une nouvelle opération ALTER." + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "Opération ALTER non reconnue." + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "%1$d valeurs étaient attendues, mais %2$d ont été trouvées." + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "Une parenthèse gauche suivie d'un ensemble de valeurs était attendus." + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "Une parenthèse gauche était attendue." + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "Mot clef inattendu." + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "Fin inattendue d'une expression CASE" + +#: src/Components/CaseExpression.php:225 +msgid "Potential duplicate alias of CASE expression." +msgstr "Potentiel duplicata de l'alias d'expression CASE." + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "Un alias était attendu après AS mais obtenu : " + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "Un alias a été constaté précédemment." + +#: src/Components/CaseExpression.php:262 +msgid "An alias was expected after AS." +msgstr "Un alias était attendu après AS." + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" +"Un nom de symbole était attendu ! Un mot clé réservé ne peut pas servir " +"comme nom de colonne sans les apostrophes inverses." + +#: src/Components/CreateDefinition.php:266 +msgid "A symbol name was expected!" +msgstr "Un nom de variable était attendu !" + +#: src/Components/CreateDefinition.php:301 +msgid "A comma or a closing bracket was expected." +msgstr "Une virgule ou une parenthèse droite était attendus." + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "Une parenthèse droite était attendue." + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "Type de données non reconnu." + +#: src/Components/ExpressionArray.php:101 +msgid "An expression was expected." +msgstr "Une expression était attendue." + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +msgid "An alias was expected." +msgstr "Un alias était attendu." + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "Point inattendu." + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "Jeton inattendu." + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "Un décalage était prévu." + +#: src/Components/LockExpression.php:91 +msgid "Unexpected end of LOCK expression." +msgstr "Fin inattendue de l'expression CASE." + +#: src/Components/LockExpression.php:199 +msgid "Unexpected end of Lock expression." +msgstr "Fin inattendue de l'expression LOCK." + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "Cette option entre en conflit avec « %1$s »." + +#: src/Components/RenameOperation.php:105 +msgid "The old name of the table was expected." +msgstr "L'ancien nom de la table était attendu." + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "Le mot clé « TO » était attendu." + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "Le nouveau nom de la table était attendu." + +#: src/Components/RenameOperation.php:151 +msgid "A rename operation was expected." +msgstr "Une opération de renommage était attendue." + +#: src/Components/SetOperation.php:121 +msgid "Missing expression." +msgstr "Expression manquante." + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "Caractère inattendu." + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "Des espaces ou tabulations étaient attendus avant le délimiteur." + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "Un délimiteur était attendu." + +#: src/Lexer.php:909 +#, php-format +msgid "Ending quote %1$s was expected." +msgstr "Un guillemet %1$s était attendu." + +#: src/Lexer.php:955 +msgid "Variable name was expected." +msgstr "Un nom de variable était attendu." + +#: src/Parser.php:451 +msgid "Unexpected beginning of statement." +msgstr "Début d'énoncé inattendu." + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "Type d'énoncé non reconnu." + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "Aucune transaction n'a été précédemment démarrée." + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "Ce type de clause a été analysé précédemment." + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "Mot clé non reconnu." + +#: src/Statement.php:407 +msgid "Keyword at end of statement." +msgstr "Mot clé à la fin de l'énoncé." + +#: src/Statement.php:551 +msgid "Unexpected ordering of clauses." +msgstr "Classement inattendu des clauses." + +#: src/Statements/CreateStatement.php:492 +msgid "The name of the entity was expected." +msgstr "Le nom de l'entité était attendu." + +#: src/Statements/CreateStatement.php:542 +msgid "A table name was expected." +msgstr "Un nom de table était attendu." + +#: src/Statements/CreateStatement.php:550 +msgid "At least one column definition was expected." +msgstr "La définition d'au moins une colonne était attendue." + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "Le mot clé « RETURNS » était attendu." + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "Ce type de clause a été analysé précédemment." + +#: src/Statements/LockStatement.php:116 +msgid "Unexpected end of LOCK statement." +msgstr "Fin inattendue de l'instruction LOCK." + +#: src/Statements/PurgeStatement.php:136 +msgid "Unexpected keyword" +msgstr "Mot clef inattendu" + +#~ msgid "error #1" +#~ msgstr "erreur #1" + +#~ msgid "strict error" +#~ msgstr "erreur stricte" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/fy/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/fy/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..e47de4b591 Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/fy/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/fy/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/fy/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..fe366fce55 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/fy/LC_MESSAGES/sqlparser.po @@ -0,0 +1,274 @@ +# phpMyAdmin translation. +# Copyright (C) 2003 - 2014 phpMyAdmin devel team +# This file is distributed under the same license as the phpMyAdmin package. +# Automatically generated, 2014. +# +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2015-12-24 23:02+0000\n" +"Last-Translator: Robin van der Vliet \n" +"Language-Team: Frisian \n" +"Language: fy\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 2.5-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "" + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "" + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "" + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "" + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "" + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "" + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "" + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "" + +#: src/Components/CaseExpression.php:225 +msgid "Potential duplicate alias of CASE expression." +msgstr "" + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "" + +#: src/Components/CaseExpression.php:262 +msgid "An alias was expected after AS." +msgstr "" + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" + +#: src/Components/CreateDefinition.php:266 +msgid "A symbol name was expected!" +msgstr "" + +#: src/Components/CreateDefinition.php:301 +msgid "A comma or a closing bracket was expected." +msgstr "" + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "" + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "" + +#: src/Components/ExpressionArray.php:101 +msgid "An expression was expected." +msgstr "" + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +msgid "An alias was expected." +msgstr "" + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "" + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "" + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "" + +#: src/Components/LockExpression.php:91 +#, fuzzy +#| msgid "Number of tables:" +msgid "Unexpected end of LOCK expression." +msgstr "Oantal tabellen:" + +#: src/Components/LockExpression.php:199 +#, fuzzy +#| msgid "Number of tables:" +msgid "Unexpected end of Lock expression." +msgstr "Oantal tabellen:" + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "" + +#: src/Components/RenameOperation.php:105 +msgid "The old name of the table was expected." +msgstr "" + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "" + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "" + +#: src/Components/RenameOperation.php:151 +msgid "A rename operation was expected." +msgstr "" + +#: src/Components/SetOperation.php:121 +#, fuzzy +#| msgid "Compression" +msgid "Missing expression." +msgstr "Kompresje" + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "" + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "" + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "" + +#: src/Lexer.php:909 +#, php-format +msgid "Ending quote %1$s was expected." +msgstr "" + +#: src/Lexer.php:955 +msgid "Variable name was expected." +msgstr "" + +#: src/Parser.php:451 +#, fuzzy +#| msgid "Number of tables:" +msgid "Unexpected beginning of statement." +msgstr "Oantal tabellen:" + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "" + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "" + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "" + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "" + +#: src/Statement.php:407 +#, fuzzy +#| msgid "Number of tables:" +msgid "Keyword at end of statement." +msgstr "Oantal tabellen:" + +#: src/Statement.php:551 +#, fuzzy +#| msgid "Number of tables:" +msgid "Unexpected ordering of clauses." +msgstr "Oantal tabellen:" + +#: src/Statements/CreateStatement.php:492 +msgid "The name of the entity was expected." +msgstr "" + +#: src/Statements/CreateStatement.php:542 +msgid "A table name was expected." +msgstr "" + +#: src/Statements/CreateStatement.php:550 +msgid "At least one column definition was expected." +msgstr "" + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "" + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "" + +#: src/Statements/LockStatement.php:116 +#, fuzzy +#| msgid "Number of tables:" +msgid "Unexpected end of LOCK statement." +msgstr "Oantal tabellen:" + +#: src/Statements/PurgeStatement.php:136 +msgid "Unexpected keyword" +msgstr "" + +#, fuzzy +#~| msgid "Error" +#~ msgid "error #1" +#~ msgstr "Flater" + +#, fuzzy +#~| msgid "Query error" +#~ msgid "strict error" +#~ msgstr "Queryflater" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/gl/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/gl/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..514bb51a30 Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/gl/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/gl/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/gl/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..1666e3d711 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/gl/LC_MESSAGES/sqlparser.po @@ -0,0 +1,305 @@ +# Automatically generated <>, 2010. +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2016-01-17 22:02+0000\n" +"Last-Translator: Xosé Calvo \n" +"Language-Team: Galician \n" +"Language: gl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 2.5-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "" + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "" + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:302 +#, fuzzy +#| msgid "Iconic table operations" +msgid "Unrecognized alter operation." +msgstr "Operacións de táboas con iconas" + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "" + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "" + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "" + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +#, fuzzy +#| msgid "Unexpected characters on line %s." +msgid "Unexpected keyword." +msgstr "Hai caracteres inesperados na liña %s." + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "" + +#: src/Components/CaseExpression.php:225 +msgid "Potential duplicate alias of CASE expression." +msgstr "" + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "" + +#: src/Components/CaseExpression.php:262 +#, fuzzy +#| msgid "No databases selected." +msgid "An alias was expected after AS." +msgstr "Non hai ningunha base de datos escollida." + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" + +#: src/Components/CreateDefinition.php:266 +#, fuzzy +#| msgid "Table name template" +msgid "A symbol name was expected!" +msgstr "Modelo de nome dos ficheiros" + +#: src/Components/CreateDefinition.php:301 +#, fuzzy +#| msgid "No databases selected." +msgid "A comma or a closing bracket was expected." +msgstr "Non hai ningunha base de datos escollida." + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "" + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "" + +#: src/Components/ExpressionArray.php:101 +#, fuzzy +#| msgid "No rows selected" +msgid "An expression was expected." +msgstr "Non hai ningunha fileira seleccionada" + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +#, fuzzy +#| msgid "No databases selected." +msgid "An alias was expected." +msgstr "Non hai ningunha base de datos escollida." + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "" + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +#, fuzzy +#| msgid "Unexpected characters on line %s." +msgid "Unexpected token." +msgstr "Hai caracteres inesperados na liña %s." + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "" + +#: src/Components/LockExpression.php:91 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of LOCK expression." +msgstr "No comezo da táboa" + +#: src/Components/LockExpression.php:199 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of Lock expression." +msgstr "No comezo da táboa" + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "" + +#: src/Components/RenameOperation.php:105 +#, fuzzy +#| msgid "The number of tables that are open." +msgid "The old name of the table was expected." +msgstr "O número de táboas abertas." + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "" + +#: src/Components/RenameOperation.php:132 +#, fuzzy +#| msgid "The number of tables that are open." +msgid "The new name of the table was expected." +msgstr "O número de táboas abertas." + +#: src/Components/RenameOperation.php:151 +#, fuzzy +#| msgid "The row has been deleted." +msgid "A rename operation was expected." +msgstr "Eliminouse a fileira" + +#: src/Components/SetOperation.php:121 +#, fuzzy +#| msgid "as regular expression" +msgid "Missing expression." +msgstr "como expresión regular" + +#: src/Lexer.php:244 +#, fuzzy +#| msgid "Unexpected characters on line %s." +msgid "Unexpected character." +msgstr "Hai caracteres inesperados na liña %s." + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "" + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "" + +#: src/Lexer.php:909 +#, fuzzy, php-format +#| msgid "Event %1$s has been created." +msgid "Ending quote %1$s was expected." +msgstr "O acontecemento %1$s foi creado." + +#: src/Lexer.php:955 +#, fuzzy +#| msgid "Table name template" +msgid "Variable name was expected." +msgstr "Modelo de nome dos ficheiros" + +#: src/Parser.php:451 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected beginning of statement." +msgstr "No comezo da táboa" + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "" + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "" + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "" + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "" + +#: src/Statement.php:407 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Keyword at end of statement." +msgstr "No comezo da táboa" + +#: src/Statement.php:551 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected ordering of clauses." +msgstr "No comezo da táboa" + +#: src/Statements/CreateStatement.php:492 +#, fuzzy +#| msgid "The number of tables that are open." +msgid "The name of the entity was expected." +msgstr "O número de táboas abertas." + +#: src/Statements/CreateStatement.php:542 +#, fuzzy +#| msgid "Table name template" +msgid "A table name was expected." +msgstr "Modelo de nome dos ficheiros" + +#: src/Statements/CreateStatement.php:550 +#, fuzzy +#| msgid "The row has been deleted." +msgid "At least one column definition was expected." +msgstr "Eliminouse a fileira" + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "" + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "" + +#: src/Statements/LockStatement.php:116 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of LOCK statement." +msgstr "No comezo da táboa" + +#: src/Statements/PurgeStatement.php:136 +#, fuzzy +#| msgid "Unexpected characters on line %s." +msgid "Unexpected keyword" +msgstr "Hai caracteres inesperados na liña %s." + +#, fuzzy +#~| msgid "errors." +#~ msgid "error #1" +#~ msgstr "erros." + +#, fuzzy +#~| msgid "Gather errors" +#~ msgid "strict error" +#~ msgstr "Recoller os erros" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/gu/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/gu/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..8a9d00a4b9 Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/gu/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/gu/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/gu/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..c16033c104 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/gu/LC_MESSAGES/sqlparser.po @@ -0,0 +1,262 @@ +# phpMyAdmin translation. +# Copyright (C) 2003 - 2015 phpMyAdmin devel team +# This file is distributed under the same license as the phpMyAdmin package. +# Automatically generated, 2016. +# +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2020-10-04 21:34+0000\n" +"Last-Translator: Michal Čihař \n" +"Language-Team: Gujarati \n" +"Language: gu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.3-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "હજુ સુધી અમલમાં નથી મુકાયુ." + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "નવો નિવેદન મળ્યો હતો, પરંતુ તે અને પાછલા એક વચ્ચે કોઈ વિભાજક અક્ષરો નથી મળયા." + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "આ ફેરફાર માન્ય નથી." + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "%1$d આ પ્રકાર ની values અપેક્ષિત હતી, પણ મળ્યું %2$d." + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "" + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "ઓપનિંગ બ્રેકેટ અપેક્ષિત હતું." + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "અનપેક્ષિત કીવર્ડ." + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "અનપેક્ષિત અંત CASE નિવેદન નો" + +#: src/Components/CaseExpression.php:225 +#, fuzzy +#| msgid "Unexpected end of CASE expression" +msgid "Potential duplicate alias of CASE expression." +msgstr "અનપેક્ષિત અંત CASE નિવેદન નો" + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "" + +#: src/Components/CaseExpression.php:262 +#, fuzzy +#| msgid "An offset was expected." +msgid "An alias was expected after AS." +msgstr "ઓફસેટ અપેક્ષિત હતી." + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" + +#: src/Components/CreateDefinition.php:266 +msgid "A symbol name was expected!" +msgstr "" + +#: src/Components/CreateDefinition.php:301 +msgid "A comma or a closing bracket was expected." +msgstr "અલ્પવિરામ અથવા કલોસિંગ બ્રેકેટની અપેક્ષા હતી." + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "કલોસિંગ બ્રેકેટની અપેક્ષા હતી." + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "અનપેક્ષિત ડેટા પ્રકાર." + +#: src/Components/ExpressionArray.php:101 +msgid "An expression was expected." +msgstr "નિવેદનની અપેક્ષા હતી." + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +msgid "An alias was expected." +msgstr "" + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "અનપેક્ષિત પૂર્ણ વિરામ." + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "" + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "ઓફસેટ અપેક્ષિત હતી." + +#: src/Components/LockExpression.php:91 +#, fuzzy +#| msgid "Unexpected end of CASE expression" +msgid "Unexpected end of LOCK expression." +msgstr "અનપેક્ષિત અંત CASE નિવેદન નો" + +#: src/Components/LockExpression.php:199 +#, fuzzy +#| msgid "Unexpected end of CASE expression" +msgid "Unexpected end of Lock expression." +msgstr "અનપેક્ષિત અંત CASE નિવેદન નો" + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "" + +#: src/Components/RenameOperation.php:105 +msgid "The old name of the table was expected." +msgstr "ટેબલનુ જૂનું નામ અપેક્ષિત હતુ." + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "કીવર્ડ \"TO\" અપેક્ષિત હતો." + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "" + +#: src/Components/RenameOperation.php:151 +msgid "A rename operation was expected." +msgstr "" + +#: src/Components/SetOperation.php:121 +msgid "Missing expression." +msgstr "" + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "" + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "" + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "" + +#: src/Lexer.php:909 +#, php-format +msgid "Ending quote %1$s was expected." +msgstr "" + +#: src/Lexer.php:955 +msgid "Variable name was expected." +msgstr "" + +#: src/Parser.php:451 +msgid "Unexpected beginning of statement." +msgstr "" + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "" + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "" + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "" + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "" + +#: src/Statement.php:407 +msgid "Keyword at end of statement." +msgstr "" + +#: src/Statement.php:551 +msgid "Unexpected ordering of clauses." +msgstr "" + +#: src/Statements/CreateStatement.php:492 +msgid "The name of the entity was expected." +msgstr "" + +#: src/Statements/CreateStatement.php:542 +msgid "A table name was expected." +msgstr "" + +#: src/Statements/CreateStatement.php:550 +msgid "At least one column definition was expected." +msgstr "" + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "" + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "" + +#: src/Statements/LockStatement.php:116 +#, fuzzy +#| msgid "Unexpected end of CASE expression" +msgid "Unexpected end of LOCK statement." +msgstr "અનપેક્ષિત અંત CASE નિવેદન નો" + +#: src/Statements/PurgeStatement.php:136 +#, fuzzy +#| msgid "Unexpected keyword." +msgid "Unexpected keyword" +msgstr "અનપેક્ષિત કીવર્ડ." diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/he/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/he/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..49d04c8701 Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/he/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/he/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/he/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..b871b6d039 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/he/LC_MESSAGES/sqlparser.po @@ -0,0 +1,255 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2020-03-23 20:59+0000\n" +"Last-Translator: Yaron Shahrabani \n" +"Language-Team: Hebrew \n" +"Language: he\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=(n == 1) ? 0 : ((n == 2) ? 1 : ((n > 10 && " +"n % 10 == 0) ? 2 : 3));\n" +"X-Generator: Weblate 4.0-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "לא מוטמע עדיין." + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "נמצא ביטוי חדש, אך לא נמצא מפריד בינו לבין הביטוי הקודם." + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "חסר פסיק לפני תחילת פעולת שינוי חדשה." + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "פעולת שינוי בלתי מזוהה." + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "היו אמורים להיות %1$d ערכים, אך נמצאו %2$d." + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "היו אמורים להיות סוגריים מרובעים פותחים ואחריהם סדרה של ערכים." + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "היו אמורים להיות סוגריים מרובעים פותחים." + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "מילת מפתח בלתי צפויה." + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "סיום בלתי צפוי לביטוי התניה (CASE)" + +#: src/Components/CaseExpression.php:225 +msgid "Potential duplicate alias of CASE expression." +msgstr "כנראה כינוי כפול לביטוי התניה (CASE)." + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "אמור היה להיות כינוי אחרי AS (בשם) אבל במקום נמצא " + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "נמצא כינוי בעבר." + +#: src/Components/CaseExpression.php:262 +msgid "An alias was expected after AS." +msgstr "אמור היה להיות כינוי אחרי ה־AS (בשם)." + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" +"אמור היה להיות שם של סמל! אסור להשתמש במילה שמורה בתור שם עמודה ללא סימן " +"הטעמה משני (`)." + +#: src/Components/CreateDefinition.php:266 +msgid "A symbol name was expected!" +msgstr "אמור היה להיות שם סמל!" + +#: src/Components/CreateDefinition.php:301 +msgid "A comma or a closing bracket was expected." +msgstr "אמורים היו להיות פסיק או סוגריים סוגרים." + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "אמורים היו להיות סוגריים סוגרים." + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "סוג הנתונים אינו מזוהה." + +#: src/Components/ExpressionArray.php:101 +msgid "An expression was expected." +msgstr "אמור היה להיות ביטוי." + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +msgid "An alias was expected." +msgstr "אמור היה להיות כינוי." + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "נקודה בלתי צפויה." + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "אסימון בלתי צפוי." + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "אמור היה להיות היסט." + +#: src/Components/LockExpression.php:91 +msgid "Unexpected end of LOCK expression." +msgstr "סיום בלתי צפוי לביטוי נעילה (LOCK)." + +#: src/Components/LockExpression.php:199 +msgid "Unexpected end of Lock expression." +msgstr "סיום בלתי צפוי לביטוי נעילה (Lock)." + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "אפשרות זו סותרת את „%1$s”." + +#: src/Components/RenameOperation.php:105 +msgid "The old name of the table was expected." +msgstr "אמור היה להיות השם הישן של הטבלה." + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "אמורה הייתה להיות מילת המפתח „TO” (אל)." + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "אמור היה להיות השם החדש של הטבלה." + +#: src/Components/RenameOperation.php:151 +msgid "A rename operation was expected." +msgstr "אמורה הייתה להיות פעולת שינוי שם." + +#: src/Components/SetOperation.php:121 +msgid "Missing expression." +msgstr "ביטוי חסר." + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "תו בלתי צפוי." + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "אמורים היו להיות רווחים לפני המפריד." + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "אמור היה להיות מפריד." + +#: src/Lexer.php:909 +#, php-format +msgid "Ending quote %1$s was expected." +msgstr "אמורות היו להיות מירכאות סוגרות %1$s." + +#: src/Lexer.php:955 +msgid "Variable name was expected." +msgstr "אמור היה להיות שם משתנה." + +#: src/Parser.php:451 +msgid "Unexpected beginning of statement." +msgstr "תחילת הביטוי אינו צפוי." + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "סוג המשפט בלתי מזוהה." + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "לא החלה העברה בעבר." + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "סוג הסעיף הזה כבר נותח בעבר." + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "מילת מפתח בלתי מזוהה." + +#: src/Statement.php:407 +msgid "Keyword at end of statement." +msgstr "מילת מפתח בסוף משפט." + +#: src/Statement.php:551 +msgid "Unexpected ordering of clauses." +msgstr "סידור הסעיפים בלתי צפוי." + +#: src/Statements/CreateStatement.php:492 +msgid "The name of the entity was expected." +msgstr "אמור היה להיות שם היישות." + +#: src/Statements/CreateStatement.php:542 +msgid "A table name was expected." +msgstr "אמור היה להיות שם טבלה." + +#: src/Statements/CreateStatement.php:550 +msgid "At least one column definition was expected." +msgstr "אמורה הייתה להיות לפחות הגדרת עמודה אחת." + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "אמורה הייתה להיות מילת מפתח „RETURNS” (מחזירה)." + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "סוג סעיף זה אינו תקף בשאילתות מרובות טבלאות." + +#: src/Statements/LockStatement.php:116 +msgid "Unexpected end of LOCK statement." +msgstr "סיום בלתי צפוי להכרזת נעילה (LOCK)." + +#: src/Statements/PurgeStatement.php:136 +msgid "Unexpected keyword" +msgstr "מילת מפתח בלתי צפויה" + +#~ msgid "error #1" +#~ msgstr "שגיאה #1" + +#~ msgid "strict error" +#~ msgstr "שגיאת הקפדה" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/hi/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/hi/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..2e7463f512 Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/hi/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/hi/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/hi/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..b553b9617b --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/hi/LC_MESSAGES/sqlparser.po @@ -0,0 +1,278 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2020-08-21 12:50+0000\n" +"Last-Translator: sanjukumarverma \n" +"Language-Team: Hindi \n" +"Language: hi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.2.1-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "अभी लागू नहीं किया गया।" + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "" +"एक नया कथन मिला, परंतु पूर्व कथन और नए कथन के बीच कोई सीमांकक नहीं मिला।" + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "नए बदलाव संक्रिया के आरंभ में अल्प विराम नही है।" + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "अमान्य बदलाव संक्रिया।" + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "%1$d आपेक्षित था परन्तु %2$d मिला।" + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "" + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "एक खुला कोष्ठक आपेक्षित था।" + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "अनापेक्षित बीजशब्द।" + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "CASE वाक्यांश का अनापेक्षित अंत" + +#: src/Components/CaseExpression.php:225 +msgid "Potential duplicate alias of CASE expression." +msgstr "" + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "" + +#: src/Components/CaseExpression.php:262 +#, fuzzy +#| msgid "No databases selected." +msgid "An alias was expected after AS." +msgstr "कोइ डाटाबेस नहीं चुना गया है।" + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" + +#: src/Components/CreateDefinition.php:266 +msgid "A symbol name was expected!" +msgstr "एक प्रतीक नाम आपेक्षित था!" + +#: src/Components/CreateDefinition.php:301 +msgid "A comma or a closing bracket was expected." +msgstr "एक अल्पविराम या एक समापन कोष्ठक अपेक्षित था।" + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "एक समापन कोष्ठक अपेक्षित था।" + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "आंकड़े का अमान्य प्रकार।" + +#: src/Components/ExpressionArray.php:101 +msgid "An expression was expected." +msgstr "एक वाक्यांश अपेक्षित था।" + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +#, fuzzy +#| msgid "No databases selected." +msgid "An alias was expected." +msgstr "कोइ डाटाबेस नहीं चुना गया है।" + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "अनापेक्षित बिंदु।" + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "अनापेक्षित टोकन।" + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "एक सीमांक अपेक्षित था।" + +#: src/Components/LockExpression.php:91 +msgid "Unexpected end of LOCK expression." +msgstr "LOCK वाक्यांश का अनापेक्षित अंत।" + +#: src/Components/LockExpression.php:199 +msgid "Unexpected end of Lock expression." +msgstr "Lock वाक्यांश का अनापेक्षित अंत ‌" + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "" + +#: src/Components/RenameOperation.php:105 +#, fuzzy +#| msgid "Title of browser window when a table is selected" +msgid "The old name of the table was expected." +msgstr "ब्राउज़र विंडो का शीर्षक है जब किसी भी सर्वर का चयन नहीं किया है" + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "" + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "" + +#: src/Components/RenameOperation.php:151 +#, fuzzy +#| msgid "The row has been deleted." +msgid "A rename operation was expected." +msgstr "रौ को डिलीट कर दिया" + +#: src/Components/SetOperation.php:121 +#, fuzzy +#| msgid "as regular expression" +msgid "Missing expression." +msgstr "नियमित अभिव्यक्ति के रूप में" + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "" + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "" + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "" + +#: src/Lexer.php:909 +#, fuzzy, php-format +#| msgid "Table %1$s has been created." +msgid "Ending quote %1$s was expected." +msgstr "%1$s टेबल बना दिया गया है" + +#: src/Lexer.php:955 +msgid "Variable name was expected." +msgstr "चर नाम अपेक्षित।" + +#: src/Parser.php:451 +msgid "Unexpected beginning of statement." +msgstr "कथन का अनापेक्षित आरंभ।" + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "अमान्य कथन प्रकार।" + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "पूर्व में कोई अंतरण आरंभ नहीं किया गया था।" + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "" + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "" + +#: src/Statement.php:407 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Keyword at end of statement." +msgstr "टेबल के शुरू में" + +#: src/Statement.php:551 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected ordering of clauses." +msgstr "टेबल के शुरू में" + +#: src/Statements/CreateStatement.php:492 +msgid "The name of the entity was expected." +msgstr "" + +#: src/Statements/CreateStatement.php:542 +#, fuzzy +#| msgid "Table name template" +msgid "A table name was expected." +msgstr "टेबल नाम टेम्पलेट" + +#: src/Statements/CreateStatement.php:550 +#, fuzzy +#| msgid "The row has been deleted." +msgid "At least one column definition was expected." +msgstr "रौ को डिलीट कर दिया" + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "" + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "" + +#: src/Statements/LockStatement.php:116 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of LOCK statement." +msgstr "टेबल के शुरू में" + +#: src/Statements/PurgeStatement.php:136 +msgid "Unexpected keyword" +msgstr "" + +#, fuzzy +#~| msgid "errors." +#~ msgid "error #1" +#~ msgstr "त्रुटियों" + +#, fuzzy +#~| msgid "Gather errors" +#~ msgid "strict error" +#~ msgstr "त्रुटियों को इकट्ठा करें" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/hr/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/hr/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..aca8c15843 Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/hr/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/hr/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/hr/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..dcdc25a0a8 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/hr/LC_MESSAGES/sqlparser.po @@ -0,0 +1,293 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2015-10-15 11:24+0200\n" +"Last-Translator: Michal Čihař \n" +"Language-Team: Croatian \n" +"Language: hr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 2.5-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "" + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "" + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "" + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "" + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "" + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "" + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "" + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "" + +#: src/Components/CaseExpression.php:225 +msgid "Potential duplicate alias of CASE expression." +msgstr "" + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "" + +#: src/Components/CaseExpression.php:262 +#, fuzzy +#| msgid "No databases selected." +msgid "An alias was expected after AS." +msgstr "Nema odabrane baze podataka." + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" + +#: src/Components/CreateDefinition.php:266 +#, fuzzy +msgid "A symbol name was expected!" +msgstr "Predložak naziva datoteka" + +#: src/Components/CreateDefinition.php:301 +#, fuzzy +#| msgid "No databases selected." +msgid "A comma or a closing bracket was expected." +msgstr "Nema odabrane baze podataka." + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "" + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "" + +#: src/Components/ExpressionArray.php:101 +#, fuzzy +#| msgid "No rows selected" +msgid "An expression was expected." +msgstr "Nema odabranih redova" + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +#, fuzzy +#| msgid "No databases selected." +msgid "An alias was expected." +msgstr "Nema odabrane baze podataka." + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "" + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "" + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "" + +#: src/Components/LockExpression.php:91 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of LOCK expression." +msgstr "Pri početku tablice" + +#: src/Components/LockExpression.php:199 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of Lock expression." +msgstr "Pri početku tablice" + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "" + +#: src/Components/RenameOperation.php:105 +#, fuzzy +#| msgid "The number of tables that are open." +msgid "The old name of the table was expected." +msgstr "Broj otvorenih tablica." + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "" + +#: src/Components/RenameOperation.php:132 +#, fuzzy +#| msgid "The number of tables that are open." +msgid "The new name of the table was expected." +msgstr "Broj otvorenih tablica." + +#: src/Components/RenameOperation.php:151 +#, fuzzy +#| msgid "The row has been deleted." +msgid "A rename operation was expected." +msgstr "Redak je izbrisan" + +#: src/Components/SetOperation.php:121 +#, fuzzy +#| msgid "as regular expression" +msgid "Missing expression." +msgstr "kao regularan izraz" + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "" + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "" + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "" + +#: src/Lexer.php:909 +#, fuzzy, php-format +#| msgid "Table %1$s has been created." +msgid "Ending quote %1$s was expected." +msgstr "Tablica %1$s je izrađena." + +#: src/Lexer.php:955 +#, fuzzy +msgid "Variable name was expected." +msgstr "Predložak naziva datoteka" + +#: src/Parser.php:451 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected beginning of statement." +msgstr "Pri početku tablice" + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "" + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "" + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "" + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "" + +#: src/Statement.php:407 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Keyword at end of statement." +msgstr "Pri početku tablice" + +#: src/Statement.php:551 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected ordering of clauses." +msgstr "Pri početku tablice" + +#: src/Statements/CreateStatement.php:492 +#, fuzzy +#| msgid "The number of tables that are open." +msgid "The name of the entity was expected." +msgstr "Broj otvorenih tablica." + +#: src/Statements/CreateStatement.php:542 +#, fuzzy +msgid "A table name was expected." +msgstr "Predložak naziva datoteka" + +#: src/Statements/CreateStatement.php:550 +#, fuzzy +#| msgid "The row has been deleted." +msgid "At least one column definition was expected." +msgstr "Redak je izbrisan" + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "" + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "" + +#: src/Statements/LockStatement.php:116 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of LOCK statement." +msgstr "Pri početku tablice" + +#: src/Statements/PurgeStatement.php:136 +msgid "Unexpected keyword" +msgstr "" + +#, fuzzy +#~| msgid "errors." +#~ msgid "error #1" +#~ msgstr "greške." + +#, fuzzy +#~| msgid "Gather errors" +#~ msgid "strict error" +#~ msgstr "Skupi greške" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/hu/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/hu/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..db3ba8c643 Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/hu/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/hu/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/hu/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..1f14a2099d --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/hu/LC_MESSAGES/sqlparser.po @@ -0,0 +1,275 @@ +# Automatically generated <>, 2010. +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2016-12-21 15:58+0000\n" +"Last-Translator: Michal Čihař \n" +"Language-Team: Hungarian \n" +"Language: hu\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 2.10\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "Még nincs megvalósítva." + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "" +"Egy új utasítás található, de nincs elválasztó közte és az előző között." + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "Felismerhetetlen módosítás művelet." + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "%1$d értékek voltak elvárva, de %2$d található." + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "Nyitó kapcsos zárójelet és az azt követő értékeket vártuk." + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "Nyitó kapcsos zárójelet vártunk." + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +#, fuzzy +#| msgid "Unexpected token." +msgid "Unexpected keyword." +msgstr "Váratlan jelsor." + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "" + +#: src/Components/CaseExpression.php:225 +msgid "Potential duplicate alias of CASE expression." +msgstr "" + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "Egy álnév korábban már megtalálva." + +#: src/Components/CaseExpression.php:262 +#, fuzzy +#| msgid "An alias was expected." +msgid "An alias was expected after AS." +msgstr "Egy álnév várt." + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" + +#: src/Components/CreateDefinition.php:266 +msgid "A symbol name was expected!" +msgstr "Egy szimbólumnév várt!" + +#: src/Components/CreateDefinition.php:301 +msgid "A comma or a closing bracket was expected." +msgstr "Egy vessző vagy egy záró zárójel várt." + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "Záró kapcsos zárójelet vártunk." + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "Felismerhetetlen adattípus." + +#: src/Components/ExpressionArray.php:101 +msgid "An expression was expected." +msgstr "Egy kifejezés várt." + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +msgid "An alias was expected." +msgstr "Egy álnév várt." + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "Váratlan pont." + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "Váratlan jelsor." + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "Offsetet vártunk." + +#: src/Components/LockExpression.php:91 +#, fuzzy +#| msgid "Unexpected beginning of statement." +msgid "Unexpected end of LOCK expression." +msgstr "Váratlan utasítás kezdet." + +#: src/Components/LockExpression.php:199 +#, fuzzy +#| msgid "at beginning of table" +msgid "Unexpected end of Lock expression." +msgstr "a tábla elejénél" + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "Ez a lehetőség ütközik ezzel: „%1$s”." + +#: src/Components/RenameOperation.php:105 +msgid "The old name of the table was expected." +msgstr "A tábla régi neve várt." + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "\"TO\" kulcsszavat vártunk." + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "A tábla új neve várt." + +#: src/Components/RenameOperation.php:151 +msgid "A rename operation was expected." +msgstr "Egy átnevezési művelet várt." + +#: src/Components/SetOperation.php:121 +#, fuzzy +#| msgid "as regular expression" +msgid "Missing expression." +msgstr "reguláris kifejezésként" + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "Váratlan karakter." + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "A határoló előtt szóközö(ke)t vártunk." + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "Határolót vártunk." + +#: src/Lexer.php:909 +#, php-format +msgid "Ending quote %1$s was expected." +msgstr "A(z) %1$s záró idézés várt." + +#: src/Lexer.php:955 +msgid "Variable name was expected." +msgstr "Változónév várt." + +#: src/Parser.php:451 +msgid "Unexpected beginning of statement." +msgstr "Váratlan utasítás kezdet." + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "Felismerhetetlen utasítástípus." + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "Nem volt korábban elindított tranzakció." + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "A kikötés ezen típusa korábban fel lett dolgozva." + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "Felismerhetetlen kulcsszó." + +#: src/Statement.php:407 +#, fuzzy +#| msgid "Unexpected beginning of statement." +msgid "Keyword at end of statement." +msgstr "Váratlan utasítás kezdet." + +#: src/Statement.php:551 +#, fuzzy +#| msgid "at beginning of table" +msgid "Unexpected ordering of clauses." +msgstr "a tábla elejénél" + +#: src/Statements/CreateStatement.php:492 +msgid "The name of the entity was expected." +msgstr "Az entitás neve várt." + +#: src/Statements/CreateStatement.php:542 +#, fuzzy +#| msgid "Table name template" +msgid "A table name was expected." +msgstr "Táblanév sablon" + +#: src/Statements/CreateStatement.php:550 +msgid "At least one column definition was expected." +msgstr "Legalább egy oszlopmeghatározás várt." + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "\"RETURNS\" kulcsszavat vártunk." + +#: src/Statements/DeleteStatement.php:337 +#, fuzzy +#| msgid "No transaction was previously started." +msgid "This type of clause is not valid in Multi-table queries." +msgstr "Nem volt korábban elindított tranzakció." + +#: src/Statements/LockStatement.php:116 +#, fuzzy +#| msgid "Unexpected beginning of statement." +msgid "Unexpected end of LOCK statement." +msgstr "Váratlan utasítás kezdet." + +#: src/Statements/PurgeStatement.php:136 +#, fuzzy +#| msgid "Unexpected token." +msgid "Unexpected keyword" +msgstr "Váratlan jelsor." + +#~ msgid "error #1" +#~ msgstr "hiba #1" + +#~ msgid "strict error" +#~ msgstr "szigorú hiba" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/hy/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/hy/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..cfd62d6779 Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/hy/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/hy/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/hy/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..c79c46baad --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/hy/LC_MESSAGES/sqlparser.po @@ -0,0 +1,280 @@ +# phpMyAdmin translation. +# Copyright (C) 2003 - 2012 phpMyAdmin devel team +# This file is distributed under the same license as the phpMyAdmin package. +# Automatically generated, 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2015-12-18 18:19+0000\n" +"Last-Translator: Andrey Aleksanyants \n" +"Language-Team: Armenian \n" +"Language: hy\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Weblate 2.5-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "" + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "" + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "" + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "" + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "" + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "" + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +#, fuzzy +#| msgid "Unexpected character." +msgid "Unexpected keyword." +msgstr "Անսպասելի նշան։" + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "" + +#: src/Components/CaseExpression.php:225 +msgid "Potential duplicate alias of CASE expression." +msgstr "" + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "" + +#: src/Components/CaseExpression.php:262 +#, fuzzy +#| msgid "An alias was expected." +msgid "An alias was expected after AS." +msgstr "Սպասվում էր այլանունը։" + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" + +#: src/Components/CreateDefinition.php:266 +#, fuzzy +#| msgid "Variable name was expected." +msgid "A symbol name was expected!" +msgstr "Սպասվում էր փոփոխականի անունը։" + +#: src/Components/CreateDefinition.php:301 +msgid "A comma or a closing bracket was expected." +msgstr "Սպասվում էր ստորակետը կամ փակող փակագիծը։" + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "" + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "" + +#: src/Components/ExpressionArray.php:101 +msgid "An expression was expected." +msgstr "Սպասվում էր արտահայտությունը։" + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +msgid "An alias was expected." +msgstr "Սպասվում էր այլանունը։" + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "" + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "" + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "" + +#: src/Components/LockExpression.php:91 +#, fuzzy +#| msgid "Unexpected characters on line %s." +msgid "Unexpected end of LOCK expression." +msgstr "Անսպասելի նշաններ %s տողում։" + +#: src/Components/LockExpression.php:199 +#, fuzzy +#| msgid "Unexpected characters on line %s." +msgid "Unexpected end of Lock expression." +msgstr "Անսպասելի նշաններ %s տողում։" + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "" + +#: src/Components/RenameOperation.php:105 +msgid "The old name of the table was expected." +msgstr "Սպասվում էր աղյուսակի հին անունը։" + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "" + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "Սպասվում էր աղյուսակի նոր անունը։" + +#: src/Components/RenameOperation.php:151 +msgid "A rename operation was expected." +msgstr "Սպասվում էր վերանվանման գործողությունը։" + +#: src/Components/SetOperation.php:121 +#, fuzzy +#| msgid "as regular expression" +msgid "Missing expression." +msgstr "որպես կանոնավոր արտահայտություն" + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "Անսպասելի նշան։" + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "" + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "" + +#: src/Lexer.php:909 +#, php-format +msgid "Ending quote %1$s was expected." +msgstr "Սպասվում էր %1$s փակող չակերտը։" + +#: src/Lexer.php:955 +msgid "Variable name was expected." +msgstr "Սպասվում էր փոփոխականի անունը։" + +#: src/Parser.php:451 +msgid "Unexpected beginning of statement." +msgstr "" + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "" + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "" + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "" + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "" + +#: src/Statement.php:407 +msgid "Keyword at end of statement." +msgstr "" + +#: src/Statement.php:551 +#, fuzzy +#| msgid "Unexpected characters on line %s." +msgid "Unexpected ordering of clauses." +msgstr "Անսպասելի նշաններ %s տողում։" + +#: src/Statements/CreateStatement.php:492 +msgid "The name of the entity was expected." +msgstr "" + +#: src/Statements/CreateStatement.php:542 +#, fuzzy +#| msgid "Variable name was expected." +msgid "A table name was expected." +msgstr "Սպասվում էր փոփոխականի անունը։" + +#: src/Statements/CreateStatement.php:550 +msgid "At least one column definition was expected." +msgstr "Սպասվում էր առնվազն մեկ սյունակի սահմանումը։" + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "" + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "" + +#: src/Statements/LockStatement.php:116 +#, fuzzy +#| msgid "Unexpected characters on line %s." +msgid "Unexpected end of LOCK statement." +msgstr "Անսպասելի նշաններ %s տողում։" + +#: src/Statements/PurgeStatement.php:136 +#, fuzzy +#| msgid "Unexpected character." +msgid "Unexpected keyword" +msgstr "Անսպասելի նշան։" + +#, fuzzy +#~| msgid "Error" +#~ msgid "error #1" +#~ msgstr "Սխալ" + +#, fuzzy +#~| msgid "Query error" +#~ msgid "strict error" +#~ msgstr "Հարցման սխալ" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ia/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ia/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..a135ac121c Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ia/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ia/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ia/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..bf56dfc524 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ia/LC_MESSAGES/sqlparser.po @@ -0,0 +1,260 @@ +# phpMyAdmin translation. +# Copyright (C) 2003 - 2013 phpMyAdmin devel team +# This file is distributed under the same license as the phpMyAdmin package. +# Automatically generated, 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2021-04-14 21:26+0000\n" +"Last-Translator: Giovanni Sora \n" +"Language-Team: Interlingua \n" +"Language: ia\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.6-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "Ancora non actuate." + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "" +"On trovava un nove declaration, ma il non ha alcun demarcator inter isto e " +"le previe." + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "mancante comma ante initiar un nove operation de alterar." + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "Operation d alteration non recognoscite." + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "%1$d valores esseva expectate, ma il trovava %2$d." + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "On expectava un parenthesis aperite sequite per un insimul de valores." + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "On expectava un parenthesis aperite." + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "Un parola clave non expectate." + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "Un fin inexpectate del expression CASE" + +#: src/Components/CaseExpression.php:225 +msgid "Potential duplicate alias of CASE expression." +msgstr "Un potential alias duplicate del expression CASE." + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "Un alias attendite post AS ma obteneva " + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "Previemente on trovava un pseudonymo." + +#: src/Components/CaseExpression.php:262 +msgid "An alias was expected after AS." +msgstr "On expectava un pseudonymo AS." + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" +"On expectava un nomine de symbolo! Un parola clave reservate non pte esser " +"usate como nomine de columna sin retro citationes (backquotes)." + +#: src/Components/CreateDefinition.php:266 +msgid "A symbol name was expected!" +msgstr "On expectava un nomine de symbolo!" + +#: src/Components/CreateDefinition.php:301 +msgid "A comma or a closing bracket was expected." +msgstr "On expectava un comma o un parentheses claudite." + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "On expectava un parenthesis claudite." + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "Typo de datos non cognoscite." + +#: src/Components/ExpressionArray.php:101 +msgid "An expression was expected." +msgstr "On expectava un expression." + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +msgid "An alias was expected." +msgstr "On expectava un alias." + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "Puncto inexpectate." + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "Un indicio non expectate." + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "On expectava un displaciamento." + +#: src/Components/LockExpression.php:91 +msgid "Unexpected end of LOCK expression." +msgstr "Un fin inexpectate del expression LOCK." + +#: src/Components/LockExpression.php:199 +msgid "Unexpected end of Lock expression." +msgstr "Un fin inexpectate del expression Lock." + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "Iste option conflige con \"%1$s\"." + +#: src/Components/RenameOperation.php:105 +msgid "The old name of the table was expected." +msgstr "On expectava le vetule nomine de le tabella." + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "On expectava le parola clave \"TO\"." + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "On expectava le nove nomine del tabella." + +#: src/Components/RenameOperation.php:151 +msgid "A rename operation was expected." +msgstr "On expectava un operation de renominar.." + +#: src/Components/SetOperation.php:121 +msgid "Missing expression." +msgstr "Expression mancante." + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "Un character non expectate." + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "On expectava spatio(s) blanc ante le demarcator." + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "On expectava demarcator." + +#: src/Lexer.php:909 +#, php-format +msgid "Ending quote %1$s was expected." +msgstr "On expectava le fin de citation %1$s ." + +#: src/Lexer.php:955 +msgid "Variable name was expected." +msgstr "On expectava un nomine de variabile." + +#: src/Parser.php:451 +msgid "Unexpected beginning of statement." +msgstr "Un initio de instruction non expectate." + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "Typo de declaration non recognoscite." + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "Necun transaction esseva initiate previemente." + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "Iste typo de proposition esseva analysate previemente." + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "Parola clave non recognoscite." + +#: src/Statement.php:407 +msgid "Keyword at end of statement." +msgstr "Parola clave al fin del instruction." + +#: src/Statement.php:551 +msgid "Unexpected ordering of clauses." +msgstr "Un ordine de clausas non expectate." + +#: src/Statements/CreateStatement.php:492 +msgid "The name of the entity was expected." +msgstr "On expectava le nomine del entitate." + +#: src/Statements/CreateStatement.php:542 +msgid "A table name was expected." +msgstr "On expectava un nomine de tabella." + +#: src/Statements/CreateStatement.php:550 +msgid "At least one column definition was expected." +msgstr "On expectava al minus un definition de columna." + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "On expectava le parola clave \"RETURN\"." + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "Iste typo de proposition non es valide in query de multi-tabella." + +#: src/Statements/LockStatement.php:116 +msgid "Unexpected end of LOCK statement." +msgstr "Un initio de instruction LOCK non expectate." + +#: src/Statements/PurgeStatement.php:136 +msgid "Unexpected keyword" +msgstr "Un parola clave non expectate" + +#~ msgid "error #1" +#~ msgstr "error #1" + +#~ msgid "strict error" +#~ msgstr "stricte error" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/id/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/id/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..9d30b91275 Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/id/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/id/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/id/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..37dc1e0793 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/id/LC_MESSAGES/sqlparser.po @@ -0,0 +1,257 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2020-08-21 12:50+0000\n" +"Last-Translator: Monsta \n" +"Language-Team: Indonesian \n" +"Language: id\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.2.1-dev\n" +"X-Poedit-Basepath: ../../..\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "Belum diimplementasikan." + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "" +"Suatu pernyataan baru ditemukan, tetapi tanpa pembatas antara itu dan " +"sebelumnya." + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "Tidak ada koma sebelum memulai operasi perubahan baru." + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "Operasi ubah tabel (alter) tak dikenal." + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "Nilai %1$d diharapkan. Namun, ditemukan %2$d." + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "Sebuah kurung buka yang diikuti oleh nilai-nilai diharapkan." + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "Sebuah kurung buka diharapkan." + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "Kata kunci tak terduga." + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "Akhir operasi CASE tak terduga" + +#: src/Components/CaseExpression.php:225 +msgid "Potential duplicate alias of CASE expression." +msgstr "Alias potensial duplikat dari ekspresi CASE." + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "Alias yang diharapkan setelah AS tetapi didapat " + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "Sebuah alias telah ditemukan sebelumnya." + +#: src/Components/CaseExpression.php:262 +msgid "An alias was expected after AS." +msgstr "Sebuah alias diharapkan." + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" +"Sebuah nama simbol diharapkan! Kata kunci yang telah diatur tidak dapat " +"digunakan sebagai nama kolom tanpa tanda kutip." + +#: src/Components/CreateDefinition.php:266 +msgid "A symbol name was expected!" +msgstr "Sebuah nama simbol diharapkan!" + +#: src/Components/CreateDefinition.php:301 +msgid "A comma or a closing bracket was expected." +msgstr "Sebuah koma atau kurung tutup diharapkan." + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "Sebuah kurung tutup diharapkan." + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "Tipe data tak dikenal." + +#: src/Components/ExpressionArray.php:101 +msgid "An expression was expected." +msgstr "Sebuah perintah (expression) diharapkan." + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +msgid "An alias was expected." +msgstr "Sebuah alias diharapkan." + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "Titik tak terduga." + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "Token tak terduga." + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "Suatu pergeseran (offset) diharapkan." + +#: src/Components/LockExpression.php:91 +msgid "Unexpected end of LOCK expression." +msgstr "Akhir operasi CASE tak terduga." + +#: src/Components/LockExpression.php:199 +msgid "Unexpected end of Lock expression." +msgstr "Akhir ekspresi Lock tak terduga." + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "Pilihan ini bertentangan dengan \"%1$s\"." + +#: src/Components/RenameOperation.php:105 +msgid "The old name of the table was expected." +msgstr "Nama lama tabel diharapkan." + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "Kata kunci \"TO\" diharapkan." + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "Nama baru tabel diharapkan." + +#: src/Components/RenameOperation.php:151 +msgid "A rename operation was expected." +msgstr "Sebuah operasi ganti nama diharapkan." + +#: src/Components/SetOperation.php:121 +msgid "Missing expression." +msgstr "Perintah (expression) hilang." + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "Karakter tak terduga." + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "Mengharapkan spasi sebelum pembatas." + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "Mengharapkan pembatas." + +#: src/Lexer.php:909 +#, php-format +msgid "Ending quote %1$s was expected." +msgstr "Petik akhir %1$s diharapkan." + +#: src/Lexer.php:955 +msgid "Variable name was expected." +msgstr "Nama variabel diharapkan." + +#: src/Parser.php:451 +msgid "Unexpected beginning of statement." +msgstr "Awal pernyataan tak terduga." + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "Jenis pernyataan tak dikenal." + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "Tidak ada transaksi yang dimulai sebelumnya." + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "Jenis klausa ini telah diurai sebelumnya." + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "Kata kunci tak dikenal." + +#: src/Statement.php:407 +msgid "Keyword at end of statement." +msgstr "Kata kunci pada akhir pernyataan." + +#: src/Statement.php:551 +msgid "Unexpected ordering of clauses." +msgstr "Pengurutan klausa tak terduga." + +#: src/Statements/CreateStatement.php:492 +msgid "The name of the entity was expected." +msgstr "Nama entitas diharapkan." + +#: src/Statements/CreateStatement.php:542 +msgid "A table name was expected." +msgstr "Sebuah nama tabel diharapkan." + +#: src/Statements/CreateStatement.php:550 +msgid "At least one column definition was expected." +msgstr "Setidaknya satu definisi kolom diharapkan." + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "Sebuah kata kunci \"RETURNS\" diharapkan." + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "Jenis klausa ini tidak sah dalam kueri multitabel." + +#: src/Statements/LockStatement.php:116 +msgid "Unexpected end of LOCK statement." +msgstr "Awal pernyataan tak terduga." + +#: src/Statements/PurgeStatement.php:136 +msgid "Unexpected keyword" +msgstr "Kata kunci tidak ada" + +#~ msgid "error #1" +#~ msgstr "galat #1" + +#~ msgid "strict error" +#~ msgstr "galat ketat" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/it/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/it/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..e56b8ca986 Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/it/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/it/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/it/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..2b78ffda65 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/it/LC_MESSAGES/sqlparser.po @@ -0,0 +1,268 @@ +# Automatically generated <>, 2010. +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2017-09-09 08:40+0000\n" +"Last-Translator: Dan Ungureanu \n" +"Language-Team: Italian \n" +"Language: it\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 2.17-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "Non ancora implementato." + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "" +"E' stato trovato un nuovo statement, ma c'è alcun delimitatore tra questo " +"nuovo statement e il precedente." + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "Operazione di modifica non riconosciuta." + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "Erano attesi %1$d valori, ma ne sono stati trovati %2$d." + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "Era attesa una parentesi aperta seguita da un insieme di valori." + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "Era attesa una parentesi aperta." + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "Keyword inaspettata." + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "Inattesa fine dell'espressione CASE" + +#: src/Components/CaseExpression.php:225 +#, fuzzy +#| msgid "Unexpected end of CASE expression" +msgid "Potential duplicate alias of CASE expression." +msgstr "Inattesa fine dell'espressione CASE" + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "Un alias è stato trovato precedentemente." + +#: src/Components/CaseExpression.php:262 +#, fuzzy +#| msgid "An alias was expected." +msgid "An alias was expected after AS." +msgstr "Era atteso un alias." + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" +"Era atteso un nome di simbolo! Un termine riservato non può essere usato " +"come nome di un campo senza inserirlo tra backquotes ( ` )." + +#: src/Components/CreateDefinition.php:266 +msgid "A symbol name was expected!" +msgstr "Era atteso un nome di simbolo!" + +#: src/Components/CreateDefinition.php:301 +msgid "A comma or a closing bracket was expected." +msgstr "Era attesa una virgola o una parentesi chiusa." + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "Era attesa una parentesi chiusa." + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "Tipo dati non riconosciuto." + +#: src/Components/ExpressionArray.php:101 +msgid "An expression was expected." +msgstr "Era attesa un'espressione." + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +msgid "An alias was expected." +msgstr "Era atteso un alias." + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "Segno di punteggiatura \"punto\" inatteso." + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "Token inatteso." + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "Era atteso un offset." + +#: src/Components/LockExpression.php:91 +#, fuzzy +#| msgid "Unexpected end of CASE expression" +msgid "Unexpected end of LOCK expression." +msgstr "Inattesa fine dell'espressione CASE" + +#: src/Components/LockExpression.php:199 +#, fuzzy +#| msgid "Unexpected end of CASE expression" +msgid "Unexpected end of Lock expression." +msgstr "Inattesa fine dell'espressione CASE" + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "Questa opzione è in conflitto con \"%1$s\"." + +#: src/Components/RenameOperation.php:105 +msgid "The old name of the table was expected." +msgstr "Era atteso il vecchio nome della tabella." + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "Era attesa la parola chiave \"TO\"." + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "Era atteso il nuovo nome della tabella." + +#: src/Components/RenameOperation.php:151 +msgid "A rename operation was expected." +msgstr "Era attesa una operazione di rinomina." + +#: src/Components/SetOperation.php:121 +msgid "Missing expression." +msgstr "Espressione mancante." + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "Carattere inatteso." + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "Erano attesi uno o più spazi bianchi prima del delimitatore." + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "Era atteso un delimitatore." + +#: src/Lexer.php:909 +#, php-format +msgid "Ending quote %1$s was expected." +msgstr "Era atteso il fine quote %1$s." + +#: src/Lexer.php:955 +msgid "Variable name was expected." +msgstr "Era atteso un nome di variabile." + +#: src/Parser.php:451 +msgid "Unexpected beginning of statement." +msgstr "Inizio di statement inatteso." + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "Tipo statement non riconosciuto." + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "Non è stata iniziata alcuna transazione in precedenza." + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "Questo tipo di clausola è stata esaminata in precedenza." + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "Parola chiave non riconosciuta." + +#: src/Statement.php:407 +msgid "Keyword at end of statement." +msgstr "Parola chiave alla fine dello statement." + +#: src/Statement.php:551 +msgid "Unexpected ordering of clauses." +msgstr "Ordinamento di clausole inatteso." + +#: src/Statements/CreateStatement.php:492 +msgid "The name of the entity was expected." +msgstr "Era atteso il nome dell'entity." + +#: src/Statements/CreateStatement.php:542 +msgid "A table name was expected." +msgstr "Era atteso un nome di tabella." + +#: src/Statements/CreateStatement.php:550 +msgid "At least one column definition was expected." +msgstr "Era attesa almeno la definizione di un campo." + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "Era attesa una parola chiave \"RETURNS\"." + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "Questo tipo di clausola non è valida nelle query Multi-tabella." + +#: src/Statements/LockStatement.php:116 +#, fuzzy +#| msgid "Unexpected beginning of statement." +msgid "Unexpected end of LOCK statement." +msgstr "Inizio di statement inatteso." + +#: src/Statements/PurgeStatement.php:136 +#, fuzzy +#| msgid "Unexpected keyword." +msgid "Unexpected keyword" +msgstr "Keyword inaspettata." + +#~ msgid "error #1" +#~ msgstr "errore #1" + +#~ msgid "strict error" +#~ msgstr "errore di tipo strict" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ja/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ja/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..39bcab7f92 Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ja/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ja/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ja/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..7ac8b2f561 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ja/LC_MESSAGES/sqlparser.po @@ -0,0 +1,252 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2021-02-12 17:50+0000\n" +"Last-Translator: Masahiro Fujimoto \n" +"Language-Team: Japanese \n" +"Language: ja\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.5-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "実装されていません。" + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "新しいステートメントが見つかりましたが、その前の文との間に区切り文字がありません。" + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "新しい ALTER 操作を開始する前にカンマがありません。" + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "認識できない alter 操作。" + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "値 %1$d があるべきですが、 %2$d が見つかりました。" + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "左括弧とそれに続く一連の値があるべきです。" + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "左括弧が必要です。" + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "予期しないキーワード。" + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "予期しない CASE 式の終了" + +#: src/Components/CaseExpression.php:225 +msgid "Potential duplicate alias of CASE expression." +msgstr "CASE 式でエイリアスが重複している可能性があります。" + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "AS の後にエイリアスが必要ですが、取得したものは " + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "エイリアスが前に見つかっています。" + +#: src/Components/CaseExpression.php:262 +msgid "An alias was expected after AS." +msgstr "AS の後にエイリアスが必要です。" + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "シンボル名が必要です。 予約語をバッククォートなしでカラム名として使用することはできません。" + +#: src/Components/CreateDefinition.php:266 +msgid "A symbol name was expected!" +msgstr "シンボル名が必要です!" + +#: src/Components/CreateDefinition.php:301 +msgid "A comma or a closing bracket was expected." +msgstr "カンマか閉じ括弧が必要です。" + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "閉じる括弧があるべきです。" + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "認識できないデータ形式。" + +#: src/Components/ExpressionArray.php:101 +msgid "An expression was expected." +msgstr "式が必要です。" + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +msgid "An alias was expected." +msgstr "エイリアスが必要です。" + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "予期しないドット。" + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "予期しないトークン。" + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "オフセットがあるべきです。" + +#: src/Components/LockExpression.php:91 +msgid "Unexpected end of LOCK expression." +msgstr "予期しない LOCK 式の終了。" + +#: src/Components/LockExpression.php:199 +msgid "Unexpected end of Lock expression." +msgstr "予期しない Lock 式の終了。" + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "このオプションは \"%1$s\" と競合しています。" + +#: src/Components/RenameOperation.php:105 +msgid "The old name of the table was expected." +msgstr "テーブルの古い名前が必要です。" + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "キーワード \"TO\" が必要です。" + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "テーブルの新しい名前が必要です。" + +#: src/Components/RenameOperation.php:151 +msgid "A rename operation was expected." +msgstr "リネーム操作が必要です。" + +#: src/Components/SetOperation.php:121 +msgid "Missing expression." +msgstr "式がありません。" + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "予期しない文字。" + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "区切り文字の前に空白が必要です。" + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "区切り文字が必要です。" + +#: src/Lexer.php:909 +#, php-format +msgid "Ending quote %1$s was expected." +msgstr "終端クォート %1$s が必要です。" + +#: src/Lexer.php:955 +msgid "Variable name was expected." +msgstr "変数名があるべきです。" + +#: src/Parser.php:451 +msgid "Unexpected beginning of statement." +msgstr "ここで文を始めることができません。" + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "認識されないステートメント形式。" + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "開始されているトランザクションはありません。" + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "この種類の句は以前に解釈済みです。" + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "認識できないキーワードです。" + +#: src/Statement.php:407 +msgid "Keyword at end of statement." +msgstr "ステートメントの末尾にキーワードがあります。" + +#: src/Statement.php:551 +msgid "Unexpected ordering of clauses." +msgstr "予期しない節の順序。" + +#: src/Statements/CreateStatement.php:492 +msgid "The name of the entity was expected." +msgstr "エンティティの名前が予想されていました。" + +#: src/Statements/CreateStatement.php:542 +msgid "A table name was expected." +msgstr "テーブル名があるべきです。" + +#: src/Statements/CreateStatement.php:550 +msgid "At least one column definition was expected." +msgstr "少なくとも 1 つのカラム定義が必要です。" + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "キーワード \"RETURNS\" があるべきです。" + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "この句の種類は、複数テーブルクエリでは無効です。" + +#: src/Statements/LockStatement.php:116 +msgid "Unexpected end of LOCK statement." +msgstr "LOCK ステートメントが予期せず終了しました。" + +#: src/Statements/PurgeStatement.php:136 +msgid "Unexpected keyword" +msgstr "予期しないキーワード" + +#~ msgid "error #1" +#~ msgstr "エラー #1" + +#~ msgid "strict error" +#~ msgstr "厳格なエラー" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ka/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ka/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..2539c0ac42 Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ka/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ka/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ka/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..a40aec51bf --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ka/LC_MESSAGES/sqlparser.po @@ -0,0 +1,287 @@ +# Automatically generated <>, 2010. +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2015-10-15 11:03+0200\n" +"Last-Translator: Michal Čihař \n" +"Language-Team: Georgian \n" +"Language: ka\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 2.5-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "" + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "" + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "" + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "" + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "" + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "" + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "" + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "" + +#: src/Components/CaseExpression.php:225 +msgid "Potential duplicate alias of CASE expression." +msgstr "" + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "" + +#: src/Components/CaseExpression.php:262 +#, fuzzy +#| msgid "Remove selected users" +msgid "An alias was expected after AS." +msgstr "Remove selected users" + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" + +#: src/Components/CreateDefinition.php:266 +#, fuzzy +#| msgid "Remove selected users" +msgid "A symbol name was expected!" +msgstr "Remove selected users" + +#: src/Components/CreateDefinition.php:301 +#, fuzzy +#| msgid "Remove selected users" +msgid "A comma or a closing bracket was expected." +msgstr "Remove selected users" + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "" + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "" + +#: src/Components/ExpressionArray.php:101 +#, fuzzy +#| msgid "Remove selected users" +msgid "An expression was expected." +msgstr "Remove selected users" + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +#, fuzzy +#| msgid "Remove selected users" +msgid "An alias was expected." +msgstr "Remove selected users" + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "" + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "" + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "" + +#: src/Components/LockExpression.php:91 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of LOCK expression." +msgstr "ცხრილის დასაწყისში" + +#: src/Components/LockExpression.php:199 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of Lock expression." +msgstr "ცხრილის დასაწყისში" + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "" + +#: src/Components/RenameOperation.php:105 +msgid "The old name of the table was expected." +msgstr "" + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "" + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "" + +#: src/Components/RenameOperation.php:151 +#, fuzzy +#| msgid "The row has been deleted." +msgid "A rename operation was expected." +msgstr "სტრიქონი წაიშალა" + +#: src/Components/SetOperation.php:121 +#, fuzzy +#| msgid "as regular expression" +msgid "Missing expression." +msgstr "რეგულარული გამოსახულება" + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "" + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "" + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "" + +#: src/Lexer.php:909 +#, fuzzy, php-format +#| msgid "Table %1$s has been created." +msgid "Ending quote %1$s was expected." +msgstr "Table %1$s has been created." + +#: src/Lexer.php:955 +msgid "Variable name was expected." +msgstr "" + +#: src/Parser.php:451 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected beginning of statement." +msgstr "ცხრილის დასაწყისში" + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "" + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "" + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "" + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "" + +#: src/Statement.php:407 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Keyword at end of statement." +msgstr "ცხრილის დასაწყისში" + +#: src/Statement.php:551 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected ordering of clauses." +msgstr "ცხრილის დასაწყისში" + +#: src/Statements/CreateStatement.php:492 +msgid "The name of the entity was expected." +msgstr "" + +#: src/Statements/CreateStatement.php:542 +#, fuzzy +#| msgid "Remove selected users" +msgid "A table name was expected." +msgstr "Remove selected users" + +#: src/Statements/CreateStatement.php:550 +#, fuzzy +#| msgid "The row has been deleted." +msgid "At least one column definition was expected." +msgstr "სტრიქონი წაიშალა" + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "" + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "" + +#: src/Statements/LockStatement.php:116 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of LOCK statement." +msgstr "ცხრილის დასაწყისში" + +#: src/Statements/PurgeStatement.php:136 +msgid "Unexpected keyword" +msgstr "" + +#, fuzzy +#~| msgid "Error" +#~ msgid "error #1" +#~ msgstr "შეცდომა" + +#, fuzzy +#~| msgid "Ignore errors" +#~ msgid "strict error" +#~ msgstr "შეცდომების იგნორირება" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/kk/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/kk/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..c09cfd1b2f Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/kk/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/kk/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/kk/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..5daa167f0d --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/kk/LC_MESSAGES/sqlparser.po @@ -0,0 +1,271 @@ +# phpMyAdmin translation. +# Copyright (C) 2003 - 2012 phpMyAdmin devel team +# This file is distributed under the same license as the phpMyAdmin package. +# Automatically generated, 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2019-04-01 19:04+0000\n" +"Last-Translator: WWWesten \n" +"Language-Team: Kazakh \n" +"Language: kk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 3.6-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "Áli iske asyrylmady." + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "" +"Jańa nusqaý tabyldy, biraq onyń men aldyńǵy bireý arasynda bólgish joq." + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "Tanylmaǵan ózgertý áreketi." + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "%1$d mánderi kútilgen, biraq %2$d tabyldy." + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "Ashýshy jaqsha, sodan keıin mánder jıyntyǵy kútilgen." + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "Ashýshy jaqsha kútilgen." + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "Kútpegen kilt sóz." + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "CASE órneginiń kútpegen sońy" + +#: src/Components/CaseExpression.php:225 +#, fuzzy +#| msgid "Unexpected end of CASE expression" +msgid "Potential duplicate alias of CASE expression." +msgstr "CASE órneginiń kútpegen sońy" + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "Aldynda búrkenshik aty tabylǵan." + +#: src/Components/CaseExpression.php:262 +#, fuzzy +#| msgid "An alias was expected." +msgid "An alias was expected after AS." +msgstr "Búrkenshik aty kútilgen." + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" +"Tańba aty kútilgen! Saqtalǵan kilt sózdi doǵal ekpindersiz baǵan aty retinde " +"paıdalanýǵa bolmaıdy." + +#: src/Components/CreateDefinition.php:266 +msgid "A symbol name was expected!" +msgstr "Tańba aty kútilgen!" + +#: src/Components/CreateDefinition.php:301 +msgid "A comma or a closing bracket was expected." +msgstr "Útir nemese jabushy jaqsha kútilgen." + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "Jabushy jaqsha kútilgen." + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "Tanylmaǵan derekter túri." + +#: src/Components/ExpressionArray.php:101 +msgid "An expression was expected." +msgstr "Órnek kútilgen." + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +msgid "An alias was expected." +msgstr "Búrkenshik aty kútilgen." + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "Kútpegen núkte." + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "Kútpegen tańbalaýysh." + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "Yǵysý kútilgen." + +#: src/Components/LockExpression.php:91 +#, fuzzy +#| msgid "Unexpected end of CASE expression" +msgid "Unexpected end of LOCK expression." +msgstr "CASE órneginiń kútpegen sońy" + +#: src/Components/LockExpression.php:199 +#, fuzzy +#| msgid "Unexpected end of CASE expression" +msgid "Unexpected end of Lock expression." +msgstr "CASE órneginiń kútpegen sońy" + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "Bul opsıa «%1$s» degenmen qaıshy keledi." + +#: src/Components/RenameOperation.php:105 +msgid "The old name of the table was expected." +msgstr "Kesteniń eski ataýy kútilgen." + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "«TO» kilt sózi kútilgen." + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "Kesteniń jańa ataýy kútilgen." + +#: src/Components/RenameOperation.php:151 +msgid "A rename operation was expected." +msgstr "Qaıta ataý áreketi kútilgen." + +#: src/Components/SetOperation.php:121 +msgid "Missing expression." +msgstr "Órnek joq." + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "Kútpegen tańba." + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "Bólgishke deıin bosoryn(dar) kútilgen." + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "Bólgish kútilgen." + +#: src/Lexer.php:909 +#, php-format +msgid "Ending quote %1$s was expected." +msgstr "«%1$s» jabýshy tyrnaqshasy kútilgen." + +#: src/Lexer.php:955 +msgid "Variable name was expected." +msgstr "Aınymaly aty kútilgen." + +#: src/Parser.php:451 +msgid "Unexpected beginning of statement." +msgstr "Nusqaýdyń kútpegen bastalýy." + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "Tanylmaǵan nusqaý túri." + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "Eshbir tranzaksıa aldynda bastalǵan joq." + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "Bul sóılemdiń túri aldynda taldandy." + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "Tanylmaǵan kilt sóz." + +#: src/Statement.php:407 +msgid "Keyword at end of statement." +msgstr "Nusqaý aıaǵynda kilt sóz." + +#: src/Statement.php:551 +msgid "Unexpected ordering of clauses." +msgstr "Kútpegen sóılemder reti." + +#: src/Statements/CreateStatement.php:492 +msgid "The name of the entity was expected." +msgstr "Nysan aty kútilgen." + +#: src/Statements/CreateStatement.php:542 +msgid "A table name was expected." +msgstr "Keste aty kútilgen." + +#: src/Statements/CreateStatement.php:550 +msgid "At least one column definition was expected." +msgstr "Eń keminde bir baǵannyń anyqtamsy kútilgen." + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "«RETURNS» kilt sózi kútilgen." + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "Birneshe keste saýaldarynda bul sóılem tyri jaramsyz." + +#: src/Statements/LockStatement.php:116 +#, fuzzy +#| msgid "Unexpected beginning of statement." +msgid "Unexpected end of LOCK statement." +msgstr "Nusqaýdyń kútpegen bastalýy." + +#: src/Statements/PurgeStatement.php:136 +#, fuzzy +#| msgid "Unexpected keyword." +msgid "Unexpected keyword" +msgstr "Kútpegen kilt sóz." + +#~ msgid "error #1" +#~ msgstr "qate № 1" + +#~ msgid "strict error" +#~ msgstr "qatań qate" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/km/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/km/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..021e39916f Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/km/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/km/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/km/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..def81408ab --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/km/LC_MESSAGES/sqlparser.po @@ -0,0 +1,269 @@ +# phpMyAdmin translation. +# Copyright (C) 2003 - 2014 phpMyAdmin devel team +# This file is distributed under the same license as the phpMyAdmin package. +# Automatically generated, 2014. +# +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2017-08-12 15:08+0000\n" +"Last-Translator: ប៉ុកណូ រ៉ូយ៉ាល់ \n" +"Language-Team: Central Khmer \n" +"Language: km\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 2.16\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "" + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "" + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "" + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "" + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "" + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "" + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "" + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "" + +#: src/Components/CaseExpression.php:225 +msgid "Potential duplicate alias of CASE expression." +msgstr "" + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "" + +#: src/Components/CaseExpression.php:262 +#, fuzzy +#| msgid "No databases selected." +msgid "An alias was expected after AS." +msgstr "មិន​បាន​ជ្រើស​មូលដ្ឋាន​ទិន្នន័យ។" + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" + +#: src/Components/CreateDefinition.php:266 +#, fuzzy +#| msgid "No databases selected." +msgid "A symbol name was expected!" +msgstr "មិន​បាន​ជ្រើស​មូលដ្ឋាន​ទិន្នន័យ។" + +#: src/Components/CreateDefinition.php:301 +#, fuzzy +#| msgid "No databases selected." +msgid "A comma or a closing bracket was expected." +msgstr "មិន​បាន​ជ្រើស​មូលដ្ឋាន​ទិន្នន័យ។" + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "" + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "" + +#: src/Components/ExpressionArray.php:101 +#, fuzzy +#| msgid "No databases selected." +msgid "An expression was expected." +msgstr "មិន​បាន​ជ្រើស​មូលដ្ឋាន​ទិន្នន័យ។" + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +#, fuzzy +#| msgid "No databases selected." +msgid "An alias was expected." +msgstr "មិន​បាន​ជ្រើស​មូលដ្ឋាន​ទិន្នន័យ។" + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "" + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "" + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "" + +#: src/Components/LockExpression.php:91 +msgid "Unexpected end of LOCK expression." +msgstr "" + +#: src/Components/LockExpression.php:199 +msgid "Unexpected end of Lock expression." +msgstr "" + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "" + +#: src/Components/RenameOperation.php:105 +msgid "The old name of the table was expected." +msgstr "" + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "" + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "" + +#: src/Components/RenameOperation.php:151 +#, fuzzy +#| msgid "The bookmark has been deleted." +msgid "A rename operation was expected." +msgstr "បាន​លុប​ចំណាំ។" + +#: src/Components/SetOperation.php:121 +msgid "Missing expression." +msgstr "" + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "" + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "" + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "" + +#: src/Lexer.php:909 +#, php-format +msgid "Ending quote %1$s was expected." +msgstr "" + +#: src/Lexer.php:955 +msgid "Variable name was expected." +msgstr "" + +#: src/Parser.php:451 +msgid "Unexpected beginning of statement." +msgstr "" + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "" + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "" + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "" + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "" + +#: src/Statement.php:407 +msgid "Keyword at end of statement." +msgstr "" + +#: src/Statement.php:551 +msgid "Unexpected ordering of clauses." +msgstr "" + +#: src/Statements/CreateStatement.php:492 +msgid "The name of the entity was expected." +msgstr "" + +#: src/Statements/CreateStatement.php:542 +#, fuzzy +#| msgid "No databases selected." +msgid "A table name was expected." +msgstr "មិន​បាន​ជ្រើស​មូលដ្ឋាន​ទិន្នន័យ។" + +#: src/Statements/CreateStatement.php:550 +#, fuzzy +#| msgid "The bookmark has been deleted." +msgid "At least one column definition was expected." +msgstr "បាន​លុប​ចំណាំ។" + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "" + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "" + +#: src/Statements/LockStatement.php:116 +msgid "Unexpected end of LOCK statement." +msgstr "" + +#: src/Statements/PurgeStatement.php:136 +msgid "Unexpected keyword" +msgstr "" + +#~ msgid "error #1" +#~ msgstr "កំហុស​ #1" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/kmr/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/kmr/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..71218457f6 Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/kmr/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/kmr/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/kmr/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..5f48b8b6d4 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/kmr/LC_MESSAGES/sqlparser.po @@ -0,0 +1,247 @@ +# phpMyAdmin SQL parser translation. +# Copyright (C) 2015 - 2020 phpMyAdmin devel team +# This file is distributed under the same license as the SQL parser package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:09+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: kmr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "" + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "" + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "" + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "" + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "" + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "" + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "" + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "" + +#: src/Components/CaseExpression.php:225 +msgid "Potential duplicate alias of CASE expression." +msgstr "" + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "" + +#: src/Components/CaseExpression.php:262 +msgid "An alias was expected after AS." +msgstr "" + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" + +#: src/Components/CreateDefinition.php:266 +msgid "A symbol name was expected!" +msgstr "" + +#: src/Components/CreateDefinition.php:301 +msgid "A comma or a closing bracket was expected." +msgstr "" + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "" + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "" + +#: src/Components/ExpressionArray.php:101 +msgid "An expression was expected." +msgstr "" + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +msgid "An alias was expected." +msgstr "" + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "" + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "" + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "" + +#: src/Components/LockExpression.php:91 +msgid "Unexpected end of LOCK expression." +msgstr "" + +#: src/Components/LockExpression.php:199 +msgid "Unexpected end of Lock expression." +msgstr "" + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "" + +#: src/Components/RenameOperation.php:105 +msgid "The old name of the table was expected." +msgstr "" + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "" + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "" + +#: src/Components/RenameOperation.php:151 +msgid "A rename operation was expected." +msgstr "" + +#: src/Components/SetOperation.php:121 +msgid "Missing expression." +msgstr "" + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "" + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "" + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "" + +#: src/Lexer.php:909 +#, php-format +msgid "Ending quote %1$s was expected." +msgstr "" + +#: src/Lexer.php:955 +msgid "Variable name was expected." +msgstr "" + +#: src/Parser.php:451 +msgid "Unexpected beginning of statement." +msgstr "" + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "" + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "" + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "" + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "" + +#: src/Statement.php:407 +msgid "Keyword at end of statement." +msgstr "" + +#: src/Statement.php:551 +msgid "Unexpected ordering of clauses." +msgstr "" + +#: src/Statements/CreateStatement.php:492 +msgid "The name of the entity was expected." +msgstr "" + +#: src/Statements/CreateStatement.php:542 +msgid "A table name was expected." +msgstr "" + +#: src/Statements/CreateStatement.php:550 +msgid "At least one column definition was expected." +msgstr "" + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "" + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "" + +#: src/Statements/LockStatement.php:116 +msgid "Unexpected end of LOCK statement." +msgstr "" + +#: src/Statements/PurgeStatement.php:136 +msgid "Unexpected keyword" +msgstr "" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/kn/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/kn/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..a327609025 Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/kn/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/kn/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/kn/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..89812eb658 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/kn/LC_MESSAGES/sqlparser.po @@ -0,0 +1,254 @@ +# phpMyAdmin translation. +# Copyright (C) 2003 - 2013 phpMyAdmin devel team +# This file is distributed under the same license as the phpMyAdmin package. +# Automatically generated, 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2015-07-24 13:05+0200\n" +"Last-Translator: Shameem Ahmed A Mulla \n" +"Language-Team: Kannada \n" +"Language: kn\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 2.4-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "" + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "" + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "" + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "" + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "" + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "" + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "" + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "" + +#: src/Components/CaseExpression.php:225 +msgid "Potential duplicate alias of CASE expression." +msgstr "" + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "" + +#: src/Components/CaseExpression.php:262 +#, fuzzy +#| msgid "No tables selected." +msgid "An alias was expected after AS." +msgstr "ಯಾವುದೇ ಕೋಷ್ಟಕಗಳು ಆಯ್ಕೆ ಮಾಡಲಿಲ್ಲ." + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" + +#: src/Components/CreateDefinition.php:266 +msgid "A symbol name was expected!" +msgstr "" + +#: src/Components/CreateDefinition.php:301 +msgid "A comma or a closing bracket was expected." +msgstr "" + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "" + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "" + +#: src/Components/ExpressionArray.php:101 +msgid "An expression was expected." +msgstr "" + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +msgid "An alias was expected." +msgstr "" + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "" + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "" + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "" + +#: src/Components/LockExpression.php:91 +msgid "Unexpected end of LOCK expression." +msgstr "" + +#: src/Components/LockExpression.php:199 +msgid "Unexpected end of Lock expression." +msgstr "" + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "" + +#: src/Components/RenameOperation.php:105 +msgid "The old name of the table was expected." +msgstr "" + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "" + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "" + +#: src/Components/RenameOperation.php:151 +msgid "A rename operation was expected." +msgstr "" + +#: src/Components/SetOperation.php:121 +msgid "Missing expression." +msgstr "" + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "" + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "" + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "" + +#: src/Lexer.php:909 +#, php-format +msgid "Ending quote %1$s was expected." +msgstr "" + +#: src/Lexer.php:955 +msgid "Variable name was expected." +msgstr "" + +#: src/Parser.php:451 +msgid "Unexpected beginning of statement." +msgstr "" + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "" + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "" + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "" + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "" + +#: src/Statement.php:407 +msgid "Keyword at end of statement." +msgstr "" + +#: src/Statement.php:551 +msgid "Unexpected ordering of clauses." +msgstr "" + +#: src/Statements/CreateStatement.php:492 +msgid "The name of the entity was expected." +msgstr "" + +#: src/Statements/CreateStatement.php:542 +#, fuzzy +#| msgid "No tables selected." +msgid "A table name was expected." +msgstr "ಯಾವುದೇ ಕೋಷ್ಟಕಗಳು ಆಯ್ಕೆ ಮಾಡಲಿಲ್ಲ." + +#: src/Statements/CreateStatement.php:550 +msgid "At least one column definition was expected." +msgstr "" + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "" + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "" + +#: src/Statements/LockStatement.php:116 +msgid "Unexpected end of LOCK statement." +msgstr "" + +#: src/Statements/PurgeStatement.php:136 +msgid "Unexpected keyword" +msgstr "" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ko/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ko/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..e3084d0b23 Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ko/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ko/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ko/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..ecfeceef1c --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ko/LC_MESSAGES/sqlparser.po @@ -0,0 +1,252 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2020-10-18 08:26+0000\n" +"Last-Translator: Youngsoon Jang \n" +"Language-Team: Korean \n" +"Language: ko\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.3.1-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "아직 구현되지 않은 기능입니다." + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "새로운 문장이 발견되었지만, 이전 문장과의 구분기호가 없습니다." + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "새 alter operation 시작 전에 쉼표가 누락되었습니다." + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "인식되지 않은 alter 작업입니다." + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "값 %1$d 이 예상되었지만, %2$d 가 발견되었습니다." + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "일련의 값들에 의해 여는 괄호('(')가 예상됩니다." + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "여는 괄호가 예상됩니다." + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "예상되지 않은 키워드입니다." + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "예기치 못한 CASE 표현식의 끝" + +#: src/Components/CaseExpression.php:225 +msgid "Potential duplicate alias of CASE expression." +msgstr "CASE 표현식의 잠재적 중복 별명입니다." + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "AS뒤에 별명이 필요합니다. : " + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "이미 사용중인 별명입니다." + +#: src/Components/CaseExpression.php:262 +msgid "An alias was expected after AS." +msgstr "AS뒤에 별명이 필요합니다." + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "심볼 이름이 필요합니다! 예약어는 역따옴표 없이 열 이름으로 사용될 수 없습니다." + +#: src/Components/CreateDefinition.php:266 +msgid "A symbol name was expected!" +msgstr "심볼 이름이 필요합니다!" + +#: src/Components/CreateDefinition.php:301 +msgid "A comma or a closing bracket was expected." +msgstr "쉼표 또는 닫는 대괄호가 필요합니다." + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "닫는 괄호가 필요합니다." + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "인식할 수 없는 데이터 형식입니다." + +#: src/Components/ExpressionArray.php:101 +msgid "An expression was expected." +msgstr "식이 필요합니다." + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +msgid "An alias was expected." +msgstr "별명이 필요합니다." + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "예기치 못한 점(.)입니다." + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "예기치 못한 토큰입니다." + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "오프셋이 필요합니다." + +#: src/Components/LockExpression.php:91 +msgid "Unexpected end of LOCK expression." +msgstr "LOCK 표현식이 예기치 않게 끝났습니다." + +#: src/Components/LockExpression.php:199 +msgid "Unexpected end of Lock expression." +msgstr "Lock 표현식이 예기치 않게 끝났습니다." + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "이 옵션은 \"%1$s\"와(과) 충돌합니다." + +#: src/Components/RenameOperation.php:105 +msgid "The old name of the table was expected." +msgstr "테이블의 이전 이름이 팔요합니다." + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "키워드 \"TO\"가 팔요합니다." + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "테이블의 새로운 이름이 팔요합니다." + +#: src/Components/RenameOperation.php:151 +msgid "A rename operation was expected." +msgstr "이름 바꾸기 작업이 필요합니다." + +#: src/Components/SetOperation.php:121 +msgid "Missing expression." +msgstr "누락된 표현입니다." + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "예상치 못한 문자입니다." + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "구분기호 앞에 공백이 필요합니다." + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "구분기호가 필요합니다." + +#: src/Lexer.php:909 +#, php-format +msgid "Ending quote %1$s was expected." +msgstr "닫는 따옴표 %1$s 가 팔요합니다." + +#: src/Lexer.php:955 +msgid "Variable name was expected." +msgstr "변수명이 필요합니다." + +#: src/Parser.php:451 +msgid "Unexpected beginning of statement." +msgstr "명령문이 예기치 않게 시작되었습니다." + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "인식할 수 없는 명령문 유형입니다." + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "이전에 시작된 처리가 없습니다." + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "이 유형의 절은 이전에 구문 분석되었습니다." + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "인식할 수 없는 키워드입니다." + +#: src/Statement.php:407 +msgid "Keyword at end of statement." +msgstr "명령문 끝에 있는 키워드." + +#: src/Statement.php:551 +msgid "Unexpected ordering of clauses." +msgstr "예기치 못한 문장(절) 순서입니다." + +#: src/Statements/CreateStatement.php:492 +msgid "The name of the entity was expected." +msgstr "개체 이름이 필요합니다." + +#: src/Statements/CreateStatement.php:542 +msgid "A table name was expected." +msgstr "테이블 이름이 필요합니다." + +#: src/Statements/CreateStatement.php:550 +msgid "At least one column definition was expected." +msgstr "최소 하나의 열 정의가 필요합니다." + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "\"RETURNS\"키워드가 필요합니다." + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "이 유형의 문장(절)은 다중테이블 요청에서 유효하지 않습니다." + +#: src/Statements/LockStatement.php:116 +msgid "Unexpected end of LOCK statement." +msgstr "LOCK 표현식이 예기치 않게 끝났습니다." + +#: src/Statements/PurgeStatement.php:136 +msgid "Unexpected keyword" +msgstr "예상치 못한 키워드" + +#~ msgid "error #1" +#~ msgstr "오류 #1" + +#~ msgid "strict error" +#~ msgstr "엄격한 오류" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ksh/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ksh/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..ed9b5602ad Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ksh/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ksh/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ksh/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..946d174bd5 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ksh/LC_MESSAGES/sqlparser.po @@ -0,0 +1,254 @@ +# phpMyAdmin translation. +# Copyright (C) 2003 - 2014 phpMyAdmin devel team +# This file is distributed under the same license as the phpMyAdmin package. +# Automatically generated, 2014. +# +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2014-10-02 15:09+0200\n" +"Last-Translator: Purodha \n" +"Language-Team: Colognian \n" +"Language: ksh\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n==0 ? 0 : n==1 ? 1 : 2;\n" +"X-Generator: Weblate 1.10-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "" + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "" + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "" + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "" + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "" + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "" + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "" + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "" + +#: src/Components/CaseExpression.php:225 +msgid "Potential duplicate alias of CASE expression." +msgstr "" + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "" + +#: src/Components/CaseExpression.php:262 +#, fuzzy +#| msgid "The database name is empty!" +msgid "An alias was expected after AS." +msgstr "Kein Name för di Dahtebangk!" + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" + +#: src/Components/CreateDefinition.php:266 +msgid "A symbol name was expected!" +msgstr "" + +#: src/Components/CreateDefinition.php:301 +msgid "A comma or a closing bracket was expected." +msgstr "" + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "" + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "" + +#: src/Components/ExpressionArray.php:101 +msgid "An expression was expected." +msgstr "" + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +msgid "An alias was expected." +msgstr "" + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "" + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "" + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "" + +#: src/Components/LockExpression.php:91 +msgid "Unexpected end of LOCK expression." +msgstr "" + +#: src/Components/LockExpression.php:199 +msgid "Unexpected end of Lock expression." +msgstr "" + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "" + +#: src/Components/RenameOperation.php:105 +msgid "The old name of the table was expected." +msgstr "" + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "" + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "" + +#: src/Components/RenameOperation.php:151 +msgid "A rename operation was expected." +msgstr "" + +#: src/Components/SetOperation.php:121 +msgid "Missing expression." +msgstr "" + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "" + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "" + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "" + +#: src/Lexer.php:909 +#, php-format +msgid "Ending quote %1$s was expected." +msgstr "" + +#: src/Lexer.php:955 +msgid "Variable name was expected." +msgstr "" + +#: src/Parser.php:451 +msgid "Unexpected beginning of statement." +msgstr "" + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "" + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "" + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "" + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "" + +#: src/Statement.php:407 +msgid "Keyword at end of statement." +msgstr "" + +#: src/Statement.php:551 +msgid "Unexpected ordering of clauses." +msgstr "" + +#: src/Statements/CreateStatement.php:492 +msgid "The name of the entity was expected." +msgstr "" + +#: src/Statements/CreateStatement.php:542 +#, fuzzy +#| msgid "The database name is empty!" +msgid "A table name was expected." +msgstr "Kein Name för di Dahtebangk!" + +#: src/Statements/CreateStatement.php:550 +msgid "At least one column definition was expected." +msgstr "" + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "" + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "" + +#: src/Statements/LockStatement.php:116 +msgid "Unexpected end of LOCK statement." +msgstr "" + +#: src/Statements/PurgeStatement.php:136 +msgid "Unexpected keyword" +msgstr "" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ky/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ky/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..da2d2f278c Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ky/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ky/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ky/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..c3a03a40ef --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ky/LC_MESSAGES/sqlparser.po @@ -0,0 +1,264 @@ +# phpMyAdmin translation. +# Copyright (C) 2003 - 2013 phpMyAdmin devel team +# This file is distributed under the same license as the phpMyAdmin package. +# Automatically generated, 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2015-10-15 11:03+0200\n" +"Last-Translator: Michal Čihař \n" +"Language-Team: Kyrgyz \n" +"Language: ky\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 2.5-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "" + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "" + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "" + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "" + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "" + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "" + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "" + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "" + +#: src/Components/CaseExpression.php:225 +msgid "Potential duplicate alias of CASE expression." +msgstr "" + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "" + +#: src/Components/CaseExpression.php:262 +#, fuzzy +#| msgid "Database %1$s has been created." +msgid "An alias was expected after AS." +msgstr "%1$s аттуу берилиштер базасы түзүлдү." + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" + +#: src/Components/CreateDefinition.php:266 +#, fuzzy +#| msgid "Database %1$s has been created." +msgid "A symbol name was expected!" +msgstr "%1$s аттуу берилиштер базасы түзүлдү." + +#: src/Components/CreateDefinition.php:301 +#, fuzzy +#| msgid "Database %1$s has been created." +msgid "A comma or a closing bracket was expected." +msgstr "%1$s аттуу берилиштер базасы түзүлдү." + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "" + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "" + +#: src/Components/ExpressionArray.php:101 +msgid "An expression was expected." +msgstr "" + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +#, fuzzy +#| msgid "Database %1$s has been created." +msgid "An alias was expected." +msgstr "%1$s аттуу берилиштер базасы түзүлдү." + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "" + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "" + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "" + +#: src/Components/LockExpression.php:91 +msgid "Unexpected end of LOCK expression." +msgstr "" + +#: src/Components/LockExpression.php:199 +msgid "Unexpected end of Lock expression." +msgstr "" + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "" + +#: src/Components/RenameOperation.php:105 +msgid "The old name of the table was expected." +msgstr "" + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "" + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "" + +#: src/Components/RenameOperation.php:151 +#, fuzzy +#| msgid "Database %1$s has been created." +msgid "A rename operation was expected." +msgstr "%1$s аттуу берилиштер базасы түзүлдү." + +#: src/Components/SetOperation.php:121 +msgid "Missing expression." +msgstr "" + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "" + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "" + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "" + +#: src/Lexer.php:909 +#, php-format +msgid "Ending quote %1$s was expected." +msgstr "" + +#: src/Lexer.php:955 +msgid "Variable name was expected." +msgstr "" + +#: src/Parser.php:451 +msgid "Unexpected beginning of statement." +msgstr "" + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "" + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "" + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "" + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "" + +#: src/Statement.php:407 +msgid "Keyword at end of statement." +msgstr "" + +#: src/Statement.php:551 +msgid "Unexpected ordering of clauses." +msgstr "" + +#: src/Statements/CreateStatement.php:492 +msgid "The name of the entity was expected." +msgstr "" + +#: src/Statements/CreateStatement.php:542 +#, fuzzy +#| msgid "Database %1$s has been created." +msgid "A table name was expected." +msgstr "%1$s аттуу берилиштер базасы түзүлдү." + +#: src/Statements/CreateStatement.php:550 +#, fuzzy +#| msgid "Database %1$s has been created." +msgid "At least one column definition was expected." +msgstr "%1$s аттуу берилиштер базасы түзүлдү." + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "" + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "" + +#: src/Statements/LockStatement.php:116 +msgid "Unexpected end of LOCK statement." +msgstr "" + +#: src/Statements/PurgeStatement.php:136 +msgid "Unexpected keyword" +msgstr "" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/li/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/li/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..d1202b7350 Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/li/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/li/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/li/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..deff68f6ef --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/li/LC_MESSAGES/sqlparser.po @@ -0,0 +1,250 @@ +# phpMyAdmin translation. +# Copyright (C) 2003 - 2014 phpMyAdmin devel team +# This file is distributed under the same license as the phpMyAdmin package. +# Automatically generated, 2014. +# +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2015-12-29 15:36+0000\n" +"Last-Translator: Robin van der Vliet \n" +"Language-Team: Limburgish \n" +"Language: li\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Weblate 2.5-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "" + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "" + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "" + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "" + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "" + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "" + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "" + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "" + +#: src/Components/CaseExpression.php:225 +msgid "Potential duplicate alias of CASE expression." +msgstr "" + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "" + +#: src/Components/CaseExpression.php:262 +msgid "An alias was expected after AS." +msgstr "" + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" + +#: src/Components/CreateDefinition.php:266 +msgid "A symbol name was expected!" +msgstr "" + +#: src/Components/CreateDefinition.php:301 +msgid "A comma or a closing bracket was expected." +msgstr "" + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "" + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "" + +#: src/Components/ExpressionArray.php:101 +msgid "An expression was expected." +msgstr "" + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +msgid "An alias was expected." +msgstr "" + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "" + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "" + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "" + +#: src/Components/LockExpression.php:91 +msgid "Unexpected end of LOCK expression." +msgstr "" + +#: src/Components/LockExpression.php:199 +msgid "Unexpected end of Lock expression." +msgstr "" + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "" + +#: src/Components/RenameOperation.php:105 +msgid "The old name of the table was expected." +msgstr "" + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "" + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "" + +#: src/Components/RenameOperation.php:151 +msgid "A rename operation was expected." +msgstr "" + +#: src/Components/SetOperation.php:121 +msgid "Missing expression." +msgstr "" + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "" + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "" + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "" + +#: src/Lexer.php:909 +#, php-format +msgid "Ending quote %1$s was expected." +msgstr "" + +#: src/Lexer.php:955 +msgid "Variable name was expected." +msgstr "" + +#: src/Parser.php:451 +msgid "Unexpected beginning of statement." +msgstr "" + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "" + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "" + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "" + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "" + +#: src/Statement.php:407 +msgid "Keyword at end of statement." +msgstr "" + +#: src/Statement.php:551 +msgid "Unexpected ordering of clauses." +msgstr "" + +#: src/Statements/CreateStatement.php:492 +msgid "The name of the entity was expected." +msgstr "" + +#: src/Statements/CreateStatement.php:542 +msgid "A table name was expected." +msgstr "" + +#: src/Statements/CreateStatement.php:550 +msgid "At least one column definition was expected." +msgstr "" + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "" + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "" + +#: src/Statements/LockStatement.php:116 +msgid "Unexpected end of LOCK statement." +msgstr "" + +#: src/Statements/PurgeStatement.php:136 +msgid "Unexpected keyword" +msgstr "" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/lt/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/lt/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..37f6762465 Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/lt/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/lt/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/lt/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..7186431e73 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/lt/LC_MESSAGES/sqlparser.po @@ -0,0 +1,298 @@ +# Automatically generated <>, 2010. +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2015-10-15 11:20+0200\n" +"Last-Translator: Michal Čihař \n" +"Language-Team: Lithuanian \n" +"Language: lt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n" +"%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 2.5-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "" + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "" + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:302 +#, fuzzy +#| msgid "Iconic table operations" +msgid "Unrecognized alter operation." +msgstr "Piktograminės lentelių operacijos" + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "" + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "" + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "" + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "" + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "" + +#: src/Components/CaseExpression.php:225 +msgid "Potential duplicate alias of CASE expression." +msgstr "" + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "" + +#: src/Components/CaseExpression.php:262 +#, fuzzy +#| msgid "No databases selected." +msgid "An alias was expected after AS." +msgstr "Nepažymėjote duomenų bazės." + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" + +#: src/Components/CreateDefinition.php:266 +#, fuzzy +#| msgid "Table name template" +msgid "A symbol name was expected!" +msgstr "Lentelės vardo šablonas" + +#: src/Components/CreateDefinition.php:301 +#, fuzzy +#| msgid "No databases selected." +msgid "A comma or a closing bracket was expected." +msgstr "Nepažymėjote duomenų bazės." + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "" + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "" + +#: src/Components/ExpressionArray.php:101 +#, fuzzy +#| msgid "No rows selected" +msgid "An expression was expected." +msgstr "Nepasirinkti įrašai" + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +#, fuzzy +#| msgid "No databases selected." +msgid "An alias was expected." +msgstr "Nepažymėjote duomenų bazės." + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "" + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "" + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "" + +#: src/Components/LockExpression.php:91 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of LOCK expression." +msgstr "Lentelės pradžioje" + +#: src/Components/LockExpression.php:199 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of Lock expression." +msgstr "Lentelės pradžioje" + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "" + +#: src/Components/RenameOperation.php:105 +#, fuzzy +#| msgid "The number of tables that are open." +msgid "The old name of the table was expected." +msgstr "Lentelių kurios yra atidarytos skaičius." + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "" + +#: src/Components/RenameOperation.php:132 +#, fuzzy +#| msgid "The number of tables that are open." +msgid "The new name of the table was expected." +msgstr "Lentelių kurios yra atidarytos skaičius." + +#: src/Components/RenameOperation.php:151 +#, fuzzy +#| msgid "The row has been deleted." +msgid "A rename operation was expected." +msgstr "Eilutė buvo ištrinta" + +#: src/Components/SetOperation.php:121 +#, fuzzy +#| msgid "as regular expression" +msgid "Missing expression." +msgstr "kaip reguliarųjį išsireiškimą" + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "" + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "" + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "" + +#: src/Lexer.php:909 +#, fuzzy, php-format +#| msgid "Event %1$s has been created." +msgid "Ending quote %1$s was expected." +msgstr "Įvykis %1$s buvo sukurtas." + +#: src/Lexer.php:955 +#, fuzzy +#| msgid "Table name template" +msgid "Variable name was expected." +msgstr "Lentelės vardo šablonas" + +#: src/Parser.php:451 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected beginning of statement." +msgstr "Lentelės pradžioje" + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "" + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "" + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "" + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "" + +#: src/Statement.php:407 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Keyword at end of statement." +msgstr "Lentelės pradžioje" + +#: src/Statement.php:551 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected ordering of clauses." +msgstr "Lentelės pradžioje" + +#: src/Statements/CreateStatement.php:492 +#, fuzzy +#| msgid "The number of tables that are open." +msgid "The name of the entity was expected." +msgstr "Lentelių kurios yra atidarytos skaičius." + +#: src/Statements/CreateStatement.php:542 +#, fuzzy +#| msgid "Table name template" +msgid "A table name was expected." +msgstr "Lentelės vardo šablonas" + +#: src/Statements/CreateStatement.php:550 +#, fuzzy +#| msgid "The row has been deleted." +msgid "At least one column definition was expected." +msgstr "Eilutė buvo ištrinta" + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "" + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "" + +#: src/Statements/LockStatement.php:116 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of LOCK statement." +msgstr "Lentelės pradžioje" + +#: src/Statements/PurgeStatement.php:136 +msgid "Unexpected keyword" +msgstr "" + +#, fuzzy +#~| msgid "errors." +#~ msgid "error #1" +#~ msgstr "klaidos." + +#, fuzzy +#~| msgid "Gather errors" +#~ msgid "strict error" +#~ msgstr "Rinkti klaidas" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/lv/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/lv/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..4648f69984 Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/lv/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/lv/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/lv/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..df54db5433 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/lv/LC_MESSAGES/sqlparser.po @@ -0,0 +1,285 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2016-01-23 11:11+0000\n" +"Last-Translator: Arturs Nikolajevs \n" +"Language-Team: Latvian \n" +"Language: lv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2;\n" +"X-Generator: Weblate 2.5-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "" + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "" + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "" + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "" + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "" + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "" + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "" + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "" + +#: src/Components/CaseExpression.php:225 +msgid "Potential duplicate alias of CASE expression." +msgstr "" + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "" + +#: src/Components/CaseExpression.php:262 +#, fuzzy +#| msgid "No databases selected." +msgid "An alias was expected after AS." +msgstr "Datubāze nav izvēlēta." + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" + +#: src/Components/CreateDefinition.php:266 +#, fuzzy +msgid "A symbol name was expected!" +msgstr "Faila nosaukuma šablons" + +#: src/Components/CreateDefinition.php:301 +#, fuzzy +#| msgid "No databases selected." +msgid "A comma or a closing bracket was expected." +msgstr "Datubāze nav izvēlēta." + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "" + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "" + +#: src/Components/ExpressionArray.php:101 +#, fuzzy +#| msgid "No rows selected" +msgid "An expression was expected." +msgstr "Rindas nav iezīmētas" + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +#, fuzzy +#| msgid "No databases selected." +msgid "An alias was expected." +msgstr "Datubāze nav izvēlēta." + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "" + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "" + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "" + +#: src/Components/LockExpression.php:91 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of LOCK expression." +msgstr "Tabulas sākumā" + +#: src/Components/LockExpression.php:199 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of Lock expression." +msgstr "Tabulas sākumā" + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "" + +#: src/Components/RenameOperation.php:105 +msgid "The old name of the table was expected." +msgstr "" + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "" + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "" + +#: src/Components/RenameOperation.php:151 +#, fuzzy +#| msgid "The row has been deleted." +msgid "A rename operation was expected." +msgstr "Ieraksts tika dzēsts" + +#: src/Components/SetOperation.php:121 +#, fuzzy +#| msgid "as regular expression" +msgid "Missing expression." +msgstr "kā regulārā izteiksme" + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "" + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "" + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "" + +#: src/Lexer.php:909 +#, fuzzy, php-format +msgid "Ending quote %1$s was expected." +msgstr "Tabula %s tika izdzēsta" + +#: src/Lexer.php:955 +#, fuzzy +msgid "Variable name was expected." +msgstr "Faila nosaukuma šablons" + +#: src/Parser.php:451 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected beginning of statement." +msgstr "Tabulas sākumā" + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "" + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "" + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "" + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "" + +#: src/Statement.php:407 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Keyword at end of statement." +msgstr "Tabulas sākumā" + +#: src/Statement.php:551 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected ordering of clauses." +msgstr "Tabulas sākumā" + +#: src/Statements/CreateStatement.php:492 +msgid "The name of the entity was expected." +msgstr "" + +#: src/Statements/CreateStatement.php:542 +#, fuzzy +msgid "A table name was expected." +msgstr "Faila nosaukuma šablons" + +#: src/Statements/CreateStatement.php:550 +#, fuzzy +#| msgid "The row has been deleted." +msgid "At least one column definition was expected." +msgstr "Ieraksts tika dzēsts" + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "" + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "" + +#: src/Statements/LockStatement.php:116 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of LOCK statement." +msgstr "Tabulas sākumā" + +#: src/Statements/PurgeStatement.php:136 +msgid "Unexpected keyword" +msgstr "" + +#, fuzzy +#~| msgid "Error" +#~ msgid "error #1" +#~ msgstr "Kļūda" + +#, fuzzy +#~| msgid "Query type" +#~ msgid "strict error" +#~ msgstr "Vaicājuma tips" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/mk/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/mk/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..96866cc57a Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/mk/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/mk/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/mk/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..1815aad5c8 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/mk/LC_MESSAGES/sqlparser.po @@ -0,0 +1,285 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2015-10-15 11:23+0200\n" +"Last-Translator: Michal Čihař \n" +"Language-Team: Macedonian \n" +"Language: mk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n==1 || n%10==1 ? 0 : 1;\n" +"X-Generator: Weblate 2.5-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "" + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "" + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "" + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "" + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "" + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "" + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "" + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "" + +#: src/Components/CaseExpression.php:225 +msgid "Potential duplicate alias of CASE expression." +msgstr "" + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "" + +#: src/Components/CaseExpression.php:262 +#, fuzzy +#| msgid "No databases selected." +msgid "An alias was expected after AS." +msgstr "Не е избрана ни една база на податоци." + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" + +#: src/Components/CreateDefinition.php:266 +#, fuzzy +msgid "A symbol name was expected!" +msgstr "Шаблон на име на податотека" + +#: src/Components/CreateDefinition.php:301 +#, fuzzy +#| msgid "No databases selected." +msgid "A comma or a closing bracket was expected." +msgstr "Не е избрана ни една база на податоци." + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "" + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "" + +#: src/Components/ExpressionArray.php:101 +#, fuzzy +#| msgid "No rows selected" +msgid "An expression was expected." +msgstr "Нема селектирани записи" + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +#, fuzzy +#| msgid "No databases selected." +msgid "An alias was expected." +msgstr "Не е избрана ни една база на податоци." + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "" + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "" + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "" + +#: src/Components/LockExpression.php:91 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of LOCK expression." +msgstr "на почетокот од табелата" + +#: src/Components/LockExpression.php:199 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of Lock expression." +msgstr "на почетокот од табелата" + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "" + +#: src/Components/RenameOperation.php:105 +msgid "The old name of the table was expected." +msgstr "" + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "" + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "" + +#: src/Components/RenameOperation.php:151 +#, fuzzy +#| msgid "The row has been deleted." +msgid "A rename operation was expected." +msgstr "Записот е избришан" + +#: src/Components/SetOperation.php:121 +#, fuzzy +#| msgid "as regular expression" +msgid "Missing expression." +msgstr "како регуларен израз" + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "" + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "" + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "" + +#: src/Lexer.php:909 +#, fuzzy, php-format +msgid "Ending quote %1$s was expected." +msgstr "Табелата %s е избришана" + +#: src/Lexer.php:955 +#, fuzzy +msgid "Variable name was expected." +msgstr "Шаблон на име на податотека" + +#: src/Parser.php:451 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected beginning of statement." +msgstr "на почетокот од табелата" + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "" + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "" + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "" + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "" + +#: src/Statement.php:407 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Keyword at end of statement." +msgstr "на почетокот од табелата" + +#: src/Statement.php:551 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected ordering of clauses." +msgstr "на почетокот од табелата" + +#: src/Statements/CreateStatement.php:492 +msgid "The name of the entity was expected." +msgstr "" + +#: src/Statements/CreateStatement.php:542 +#, fuzzy +msgid "A table name was expected." +msgstr "Шаблон на име на податотека" + +#: src/Statements/CreateStatement.php:550 +#, fuzzy +#| msgid "The row has been deleted." +msgid "At least one column definition was expected." +msgstr "Записот е избришан" + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "" + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "" + +#: src/Statements/LockStatement.php:116 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of LOCK statement." +msgstr "на почетокот од табелата" + +#: src/Statements/PurgeStatement.php:136 +msgid "Unexpected keyword" +msgstr "" + +#, fuzzy +#~| msgid "Error" +#~ msgid "error #1" +#~ msgstr "Грешка" + +#, fuzzy +#~| msgid "Query type" +#~ msgid "strict error" +#~ msgstr "Вид на упит" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ml/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ml/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..235d5e5539 Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ml/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ml/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ml/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..7f570f7f8c --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ml/LC_MESSAGES/sqlparser.po @@ -0,0 +1,271 @@ +# phpMyAdmin translation. +# Copyright (C) 2003 - 2011 phpMyAdmin devel team +# This file is distributed under the same license as the phpMyAdmin package. +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2020-10-10 15:54+0000\n" +"Last-Translator: Alvin Lazar.C \n" +"Language-Team: Malayalam \n" +"Language: ml\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.3-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "ഇതുവരെ നടപ്പാക്കിയിട്ടില്ല." + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "" +"ഒരു പുതിയ പ്രസ്താവന കണ്ടെത്തി, പക്ഷേ അതിനും മുമ്പത്തെ പ്രസ്താവനയ്ക്കും ഇടയിൽ " +"അതിര്‍ത്തി ഇല്ല." + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "" +"ഒരു പുതിയ പരിവര്‍ത്തരം ആരംഭിക്കുന്നതിന് മുമ്പ് ഉദ്ധരണി സൂചകമായ ചിഹ്നം " +"കാണുന്നില്ല." + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "തിരിച്ചറിയാത്ത വ്യത്യാസപ്പെടുത്തല്‍." + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "%1$d മൂല്യങ്ങൾ പ്രതീക്ഷിച്ചെങ്കിലും കണ്ടെത്തി %2$d." + +#: src/Components/Array2d.php:110 +#, fuzzy +msgid "An opening bracket followed by a set of values was expected." +msgstr "ഒരു ഓപ്പണിംഗ് ബ്രാക്കറ്റിന് ശേഷം ഒരു കൂട്ടം മൂല്യങ്ങൾ പ്രതീക്ഷിച്ചു." + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "ഒരു ഓപ്പണിംഗ് ബ്രായ്ക്കറ്റ് പ്രതീക്ഷിച്ചു." + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "അപ്രതീക്ഷിത സൂചകപദം." + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "CASE പ്രയോഗശൈലിയുടെ അപ്രതീക്ഷിത അവസാനം" + +#: src/Components/CaseExpression.php:225 +msgid "Potential duplicate alias of CASE expression." +msgstr "CASE പ്രയോഗശൈലിയുടെ തനിപ്പകർപ്പ് അപരനാമം." + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "ASന് ശേഷം പ്രതീക്ഷിച്ച ഒരു അപരനാമം ലഭിച്ചു " + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "ഒരു അപരനാമം മുമ്പ് കണ്ടെത്തി." + +#: src/Components/CaseExpression.php:262 +msgid "An alias was expected after AS." +msgstr "ASന് ശേഷം ഒരു അപരനാമം പ്രതീക്ഷിച്ചിരുന്നു." + +#: src/Components/CreateDefinition.php:252 +#, fuzzy +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" +"ഒരു ചിഹ്ന നാമം പ്രതീക്ഷിച്ചു! ബാക്ക് ഉദ്ധരണികൾ ഇല്ലാതെ ഒരു റിസർവ്ഡ് കീവേഡ്, " +"നിരയുടെ പേരായി ഉപയോഗിക്കാൻ കഴിയില്ല." + +#: src/Components/CreateDefinition.php:266 +msgid "A symbol name was expected!" +msgstr "ഒരു ചിഹ്ന നാമം പ്രതീക്ഷിച്ചു!" + +#: src/Components/CreateDefinition.php:301 +#, fuzzy +#| msgid "Remove database" +msgid "A comma or a closing bracket was expected." +msgstr "വിവരശേഖരം നീക്കുക" + +#: src/Components/CreateDefinition.php:317 +#, fuzzy +msgid "A closing bracket was expected." +msgstr "ഒരു അടക്കല്‍ ബ്രാക്കറ്റ് പ്രതീക്ഷിച്ചു." + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "തിരിച്ചറിയാത്ത ഡാറ്റ തരം." + +#: src/Components/ExpressionArray.php:101 +#, fuzzy +#| msgid "Remove database" +msgid "An expression was expected." +msgstr "വിവരശേഖരം നീക്കുക" + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +#, fuzzy +#| msgid "Remove database" +msgid "An alias was expected." +msgstr "വിവരശേഖരം നീക്കുക" + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "അപ്രതീക്ഷിത കുത്ത്‌." + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "അപ്രതീക്ഷിത അടയാളം." + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +#, fuzzy +msgid "An offset was expected." +msgstr "ഒരു ഓഫ്‌സെറ്റ് പ്രതീക്ഷിച്ചു." + +#: src/Components/LockExpression.php:91 +msgid "Unexpected end of LOCK expression." +msgstr "LOCK പ്രയോഗശൈലിയുടെ അപ്രതീക്ഷിത അവസാനം." + +#: src/Components/LockExpression.php:199 +#, fuzzy +msgid "Unexpected end of Lock expression." +msgstr "LOCK പ്രയോഗശൈലിയുടെ അപ്രതീക്ഷിത അവസാനം." + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "ഈ \"%1$s\"തിരഞ്ഞെടുക്കല്‍ പൊരുത്തപ്പെടുന്നില്ല." + +#: src/Components/RenameOperation.php:105 +msgid "The old name of the table was expected." +msgstr "പട്ടികയുടെ പഴയ പേര് പ്രതീക്ഷിച്ചു." + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "\"TO\" സൂചകപദം പ്രതീക്ഷിച്ചു." + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "പട്ടികയുടെ പുതിയ പേര് പ്രതീക്ഷിച്ചു." + +#: src/Components/RenameOperation.php:151 +#, fuzzy +#| msgid "Database %1$s has been created." +msgid "A rename operation was expected." +msgstr "വിവരശേഖരം(ങ്ങൾ) %1$s സൃഷ്ടിച്ചിരിക്കുന്നു." + +#: src/Components/SetOperation.php:121 +msgid "Missing expression." +msgstr "പദപ്രയോഗം നഷ്‌ടമായി." + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "അപ്രതീക്ഷിത പ്രതീകം." + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "അതിരുകൾക് മുൻപ് പ്രതീക്ഷിച്ച വിടവുകൾ." + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "പ്രതീക്ഷിച്ച അതിര്‍ത്തി." + +#: src/Lexer.php:909 +#, php-format +msgid "Ending quote %1$s was expected." +msgstr "%1$s ഉദ്ധരണി അവസാനിക്കുന്നു." + +#: src/Lexer.php:955 +msgid "Variable name was expected." +msgstr "പരിവര്‍ത്തിതവസ്‌തുവിന്റെ പേര് പ്രതീക്ഷിച്ചു." + +#: src/Parser.php:451 +msgid "Unexpected beginning of statement." +msgstr "പ്രസ്താവനയുടെ അപ്രതീക്ഷിത തുടക്കം." + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "തിരിച്ചറിയാത്ത പ്രസ്താവന തരം." + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "ഒരു ഇടപാടും മുമ്പ് ആരംഭിച്ചിട്ടില്ല." + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "ഇത്തരത്തിലുള്ള ഉടമ്പടി മുമ്പ് വ്യാകരിച്ചു." + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "തിരിച്ചറിയാത്ത സൂചകപദം." + +#: src/Statement.php:407 +msgid "Keyword at end of statement." +msgstr "പ്രസ്താവനയുടെ അവസാനം സൂചകപദം." + +#: src/Statement.php:551 +msgid "Unexpected ordering of clauses." +msgstr "ഉപവാക്യങ്ങളുടെ അപ്രതീക്ഷിത ക്രമം." + +#: src/Statements/CreateStatement.php:492 +msgid "The name of the entity was expected." +msgstr "വസ്‌തുവിന്റെ പേര് പ്രതീക്ഷിച്ചു." + +#: src/Statements/CreateStatement.php:542 +#, fuzzy +#| msgid "Remove database" +msgid "A table name was expected." +msgstr "വിവരശേഖരം നീക്കുക" + +#: src/Statements/CreateStatement.php:550 +#, fuzzy +#| msgid "Database %1$s has been created." +msgid "At least one column definition was expected." +msgstr "വിവരശേഖരം(ങ്ങൾ) %1$s സൃഷ്ടിച്ചിരിക്കുന്നു." + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "ഒരു \"റിട്ടേൺസ്\" സൂചകപദം പ്രതീക്ഷിച്ചു." + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "മൾട്ടി-ടേബിൾ അന്വേഷണങ്ങളിൽ ഇത്തരത്തിലുള്ള ഉപവാക്യം സാധുവല്ല." + +#: src/Statements/LockStatement.php:116 +msgid "Unexpected end of LOCK statement." +msgstr "LOCK പ്രസ്‌താവനയുടെ അപ്രതീക്ഷിത അവസാനം." + +#: src/Statements/PurgeStatement.php:136 +msgid "Unexpected keyword" +msgstr "അപ്രതീക്ഷിത സൂചകപദം." diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/mn/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/mn/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..58aef4cbde Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/mn/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/mn/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/mn/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..96968a2093 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/mn/LC_MESSAGES/sqlparser.po @@ -0,0 +1,290 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2017-05-29 07:42+0000\n" +"Last-Translator: Sambuu-Yondon \n" +"Language-Team: Mongolian \n" +"Language: mn\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 2.14.1\n" + +#: src/Component.php:41 src/Component.php:61 +#, fuzzy +msgid "Not implemented yet." +msgstr "Хараахан хэрэгжүүлэлт хийгээгүй" + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +#, fuzzy +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "шинэ болзол илэрсэн, гэвч өмнөхөөсөө зааглагч байхгүй." + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "үл ойлгогдох alter үйлдэл байна." + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "%1$d утгууд хүссэн, гэвч %2$d утга олдсон." + +#: src/Components/Array2d.php:110 +#, fuzzy +msgid "An opening bracket followed by a set of values was expected." +msgstr "хаалт нээсний дараагаар утга оноох хэрэгтэй" + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "" + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "" + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "" + +#: src/Components/CaseExpression.php:225 +msgid "Potential duplicate alias of CASE expression." +msgstr "" + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "" + +#: src/Components/CaseExpression.php:262 +#, fuzzy +#| msgid "No databases selected." +msgid "An alias was expected after AS." +msgstr "ӨС сонгогдоогүй." + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" + +#: src/Components/CreateDefinition.php:266 +#, fuzzy +#| msgid "No databases selected." +msgid "A symbol name was expected!" +msgstr "ӨС сонгогдоогүй." + +#: src/Components/CreateDefinition.php:301 +#, fuzzy +#| msgid "No databases selected." +msgid "A comma or a closing bracket was expected." +msgstr "ӨС сонгогдоогүй." + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "" + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "" + +#: src/Components/ExpressionArray.php:101 +#, fuzzy +#| msgid "No rows selected" +msgid "An expression was expected." +msgstr "Сонгогдсон мөргүй" + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +#, fuzzy +#| msgid "No databases selected." +msgid "An alias was expected." +msgstr "ӨС сонгогдоогүй." + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "" + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "" + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "" + +#: src/Components/LockExpression.php:91 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of LOCK expression." +msgstr "Хүснэгтийн эхэнд" + +#: src/Components/LockExpression.php:199 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of Lock expression." +msgstr "Хүснэгтийн эхэнд" + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "" + +#: src/Components/RenameOperation.php:105 +msgid "The old name of the table was expected." +msgstr "" + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "" + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "" + +#: src/Components/RenameOperation.php:151 +#, fuzzy +#| msgid "The row has been deleted." +msgid "A rename operation was expected." +msgstr "Мөр устгагдсан" + +#: src/Components/SetOperation.php:121 +#, fuzzy +#| msgid "PHP Version" +msgid "Missing expression." +msgstr "PHP хувилбар" + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "" + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "" + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "" + +#: src/Lexer.php:909 +#, fuzzy, php-format +#| msgid "Table %s has been dropped." +msgid "Ending quote %1$s was expected." +msgstr "Хүснэгт %s нь устгагдлаа" + +#: src/Lexer.php:955 +msgid "Variable name was expected." +msgstr "" + +#: src/Parser.php:451 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected beginning of statement." +msgstr "Хүснэгтийн эхэнд" + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "" + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "" + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "" + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "" + +#: src/Statement.php:407 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Keyword at end of statement." +msgstr "Хүснэгтийн эхэнд" + +#: src/Statement.php:551 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected ordering of clauses." +msgstr "Хүснэгтийн эхэнд" + +#: src/Statements/CreateStatement.php:492 +msgid "The name of the entity was expected." +msgstr "" + +#: src/Statements/CreateStatement.php:542 +#, fuzzy +#| msgid "No databases selected." +msgid "A table name was expected." +msgstr "ӨС сонгогдоогүй." + +#: src/Statements/CreateStatement.php:550 +#, fuzzy +#| msgid "The row has been deleted." +msgid "At least one column definition was expected." +msgstr "Мөр устгагдсан" + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "" + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "" + +#: src/Statements/LockStatement.php:116 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of LOCK statement." +msgstr "Хүснэгтийн эхэнд" + +#: src/Statements/PurgeStatement.php:136 +msgid "Unexpected keyword" +msgstr "" + +#, fuzzy +#~| msgid "Error" +#~ msgid "error #1" +#~ msgstr "Алдаа" + +#, fuzzy +#~| msgid "Query type" +#~ msgid "strict error" +#~ msgstr "Асуултын төрөл" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ms/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ms/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..b446c14d84 Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ms/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ms/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ms/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..0abfedb868 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ms/LC_MESSAGES/sqlparser.po @@ -0,0 +1,286 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2015-10-15 11:06+0200\n" +"Last-Translator: Michal Čihař \n" +"Language-Team: Malay \n" +"Language: ms\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 2.5-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "" + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "" + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "" + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "" + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "" + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "" + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "" + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "" + +#: src/Components/CaseExpression.php:225 +msgid "Potential duplicate alias of CASE expression." +msgstr "" + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "" + +#: src/Components/CaseExpression.php:262 +#, fuzzy +#| msgid "With selected:" +msgid "An alias was expected after AS." +msgstr "Dengan pilihan:" + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" + +#: src/Components/CreateDefinition.php:266 +#, fuzzy +#| msgid "With selected:" +msgid "A symbol name was expected!" +msgstr "Dengan pilihan:" + +#: src/Components/CreateDefinition.php:301 +#, fuzzy +#| msgid "With selected:" +msgid "A comma or a closing bracket was expected." +msgstr "Dengan pilihan:" + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "" + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "" + +#: src/Components/ExpressionArray.php:101 +#, fuzzy +#| msgid "With selected:" +msgid "An expression was expected." +msgstr "Dengan pilihan:" + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +#, fuzzy +#| msgid "With selected:" +msgid "An alias was expected." +msgstr "Dengan pilihan:" + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "" + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "" + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "" + +#: src/Components/LockExpression.php:91 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of LOCK expression." +msgstr "Pada Awalan Jadual" + +#: src/Components/LockExpression.php:199 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of Lock expression." +msgstr "Pada Awalan Jadual" + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "" + +#: src/Components/RenameOperation.php:105 +msgid "The old name of the table was expected." +msgstr "" + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "" + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "" + +#: src/Components/RenameOperation.php:151 +#, fuzzy +#| msgid "The row has been deleted." +msgid "A rename operation was expected." +msgstr "Baris telah dipadam" + +#: src/Components/SetOperation.php:121 +#, fuzzy +#| msgid "as regular expression" +msgid "Missing expression." +msgstr "sebagai penyataan regular (regexp)" + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "" + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "" + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "" + +#: src/Lexer.php:909 +#, fuzzy, php-format +msgid "Ending quote %1$s was expected." +msgstr "Jadual %s telah digugurkan" + +#: src/Lexer.php:955 +msgid "Variable name was expected." +msgstr "" + +#: src/Parser.php:451 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected beginning of statement." +msgstr "Pada Awalan Jadual" + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "" + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "" + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "" + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "" + +#: src/Statement.php:407 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Keyword at end of statement." +msgstr "Pada Awalan Jadual" + +#: src/Statement.php:551 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected ordering of clauses." +msgstr "Pada Awalan Jadual" + +#: src/Statements/CreateStatement.php:492 +msgid "The name of the entity was expected." +msgstr "" + +#: src/Statements/CreateStatement.php:542 +#, fuzzy +#| msgid "With selected:" +msgid "A table name was expected." +msgstr "Dengan pilihan:" + +#: src/Statements/CreateStatement.php:550 +#, fuzzy +#| msgid "The row has been deleted." +msgid "At least one column definition was expected." +msgstr "Baris telah dipadam" + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "" + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "" + +#: src/Statements/LockStatement.php:116 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of LOCK statement." +msgstr "Pada Awalan Jadual" + +#: src/Statements/PurgeStatement.php:136 +msgid "Unexpected keyword" +msgstr "" + +#, fuzzy +#~| msgid "Error" +#~ msgid "error #1" +#~ msgstr "Ralat" + +#, fuzzy +#~| msgid "Query type" +#~ msgid "strict error" +#~ msgstr "Jenis Kueri" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/nb/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/nb/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..f5e9bb2145 Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/nb/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/nb/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/nb/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..64efdb9d63 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/nb/LC_MESSAGES/sqlparser.po @@ -0,0 +1,255 @@ +# Automatically generated <>, 2010. +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2020-06-24 17:41+0000\n" +"Last-Translator: Sebastian \n" +"Language-Team: Norwegian Bokmål \n" +"Language: nb\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.2-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "Ikke implementert ennå." + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "" +"En ny uttalelse ble funnet, men ingen skilletegn mellom det og den forrige." + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "Mangler komma før starten av ny endringsoperasjon." + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "Ukjent endringsoperasjon." + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "%1$d verdier var forventet, men fant %2$d." + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "Åpningsklamme etterfulgt av et sett verdier forventet." + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "Åpningsklamme forventet." + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "Uventede karakterer på linje %sd." + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "Uventet slutt av CASE-uttrykket" + +#: src/Components/CaseExpression.php:225 +msgid "Potential duplicate alias of CASE expression." +msgstr "Mulig duplisert alias av CASE-uttrykk." + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "Forventet et alias etter AS, men ble gitt " + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "Et alias ble tidligere funnet." + +#: src/Components/CaseExpression.php:262 +msgid "An alias was expected after AS." +msgstr "Et alias var forventet etter AS." + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" +"Forventet et symbolnavn! Reserverte nøkkelord kan bare bli brukt som " +"kolonnenavn ved å sette gravistegn (`) før og etter navnet." + +#: src/Components/CreateDefinition.php:266 +msgid "A symbol name was expected!" +msgstr "Forventet et symbolnavn!" + +#: src/Components/CreateDefinition.php:301 +msgid "A comma or a closing bracket was expected." +msgstr "Forventet et komma eller en lukkingsklamme." + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "Forventet en lukkingsklamme." + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "Ukjent datatype." + +#: src/Components/ExpressionArray.php:101 +msgid "An expression was expected." +msgstr "Uttrykk forventet." + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +msgid "An alias was expected." +msgstr "Alias forventet." + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "Uventet dott." + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "Uventet tegn." + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "En forskyvning var forventet." + +#: src/Components/LockExpression.php:91 +msgid "Unexpected end of LOCK expression." +msgstr "Uventet slutt av LOCK-uttrykket." + +#: src/Components/LockExpression.php:199 +msgid "Unexpected end of Lock expression." +msgstr "Uventet slutt av LOCK-uttrykket." + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "Denne operasjonen konflikter med \"%1$s\"." + +#: src/Components/RenameOperation.php:105 +msgid "The old name of the table was expected." +msgstr "Forventet gammelt tabellnavn." + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "Søkeordet \"TIL\" var forventet." + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "Forventet nytt tabellnavn." + +#: src/Components/RenameOperation.php:151 +msgid "A rename operation was expected." +msgstr "En navneenringsoperasjon var forventet." + +#: src/Components/SetOperation.php:121 +msgid "Missing expression." +msgstr "Manglende uttrykk." + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "Uventet tegn." + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "Forventet blanktegn før skilletegn." + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "Forventet avgrensning." + +#: src/Lexer.php:909 +#, php-format +msgid "Ending quote %1$s was expected." +msgstr "Sluttsitat %1$s forventet." + +#: src/Lexer.php:955 +msgid "Variable name was expected." +msgstr "Variabelnavn forventet." + +#: src/Parser.php:451 +msgid "Unexpected beginning of statement." +msgstr "Uventet begynnelse på uttykket." + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "Ukjent setningstype." + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "Ingen transaksjon ble tidligere startet." + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "Denne typen klausul ble tidligere analysert." + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "Ukjent nøkkelord." + +#: src/Statement.php:407 +msgid "Keyword at end of statement." +msgstr "Nøkkelord ved slutten av uttalelsen." + +#: src/Statement.php:551 +msgid "Unexpected ordering of clauses." +msgstr "Uventet klausulrekkefølge." + +#: src/Statements/CreateStatement.php:492 +msgid "The name of the entity was expected." +msgstr "Enhetsnavn forventet." + +#: src/Statements/CreateStatement.php:542 +msgid "A table name was expected." +msgstr "Tabellnavn forventet." + +#: src/Statements/CreateStatement.php:550 +msgid "At least one column definition was expected." +msgstr "Minst én kolonnedefinisjon forventet." + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "Et \"RETURNS\" søkeord ble forventet." + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "Denne typen klausul er ikke gyldig i Multi-tabell-spørringer." + +#: src/Statements/LockStatement.php:116 +msgid "Unexpected end of LOCK statement." +msgstr "Uventet slutt på LOCK-uttrykket." + +#: src/Statements/PurgeStatement.php:136 +msgid "Unexpected keyword" +msgstr "Uventet nøkkelord" + +#~ msgid "error #1" +#~ msgstr "feil #1" + +#~ msgid "strict error" +#~ msgstr "streng feil" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ne/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ne/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..b9eadb09de Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ne/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ne/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ne/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..dc8704953a --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ne/LC_MESSAGES/sqlparser.po @@ -0,0 +1,254 @@ +# phpMyAdmin translation. +# Copyright (C) 2003 - 2014 phpMyAdmin devel team +# This file is distributed under the same license as the phpMyAdmin package. +# Automatically generated, 2014. +# +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2015-10-15 11:03+0200\n" +"Last-Translator: Michal Čihař \n" +"Language-Team: Nepali \n" +"Language: ne\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 2.5-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "" + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "" + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "" + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "" + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "" + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "" + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "" + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "" + +#: src/Components/CaseExpression.php:225 +msgid "Potential duplicate alias of CASE expression." +msgstr "" + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "" + +#: src/Components/CaseExpression.php:262 +#, fuzzy +#| msgid "No tables selected." +msgid "An alias was expected after AS." +msgstr "कुनैपनि डेटाबेस चयन गरिएको छैन।" + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" + +#: src/Components/CreateDefinition.php:266 +msgid "A symbol name was expected!" +msgstr "" + +#: src/Components/CreateDefinition.php:301 +msgid "A comma or a closing bracket was expected." +msgstr "" + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "" + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "" + +#: src/Components/ExpressionArray.php:101 +msgid "An expression was expected." +msgstr "" + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +msgid "An alias was expected." +msgstr "" + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "" + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "" + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "" + +#: src/Components/LockExpression.php:91 +msgid "Unexpected end of LOCK expression." +msgstr "" + +#: src/Components/LockExpression.php:199 +msgid "Unexpected end of Lock expression." +msgstr "" + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "" + +#: src/Components/RenameOperation.php:105 +msgid "The old name of the table was expected." +msgstr "" + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "" + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "" + +#: src/Components/RenameOperation.php:151 +msgid "A rename operation was expected." +msgstr "" + +#: src/Components/SetOperation.php:121 +msgid "Missing expression." +msgstr "" + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "" + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "" + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "" + +#: src/Lexer.php:909 +#, php-format +msgid "Ending quote %1$s was expected." +msgstr "" + +#: src/Lexer.php:955 +msgid "Variable name was expected." +msgstr "" + +#: src/Parser.php:451 +msgid "Unexpected beginning of statement." +msgstr "" + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "" + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "" + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "" + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "" + +#: src/Statement.php:407 +msgid "Keyword at end of statement." +msgstr "" + +#: src/Statement.php:551 +msgid "Unexpected ordering of clauses." +msgstr "" + +#: src/Statements/CreateStatement.php:492 +msgid "The name of the entity was expected." +msgstr "" + +#: src/Statements/CreateStatement.php:542 +#, fuzzy +#| msgid "No tables selected." +msgid "A table name was expected." +msgstr "कुनैपनि डेटाबेस चयन गरिएको छैन।" + +#: src/Statements/CreateStatement.php:550 +msgid "At least one column definition was expected." +msgstr "" + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "" + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "" + +#: src/Statements/LockStatement.php:116 +msgid "Unexpected end of LOCK statement." +msgstr "" + +#: src/Statements/PurgeStatement.php:136 +msgid "Unexpected keyword" +msgstr "" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/nl/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/nl/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..929858c4c1 Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/nl/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/nl/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/nl/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..d7b572da33 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/nl/LC_MESSAGES/sqlparser.po @@ -0,0 +1,256 @@ +# Automatically generated <>, 2010. +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2020-06-16 13:41+0000\n" +"Last-Translator: dingo thirteen \n" +"Language-Team: Dutch \n" +"Language: nl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.1.1-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "Nog niet geïmplementeerd." + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "" +"Een nieuwe opdracht werd gevonden, maar zonder scheidingsteken tussen deze " +"en de vorige opdracht." + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "Ontbrekende komma voor de start van een wijzigingsbewerking." + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "Onbekende bewerking." + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "%1$d waarden werden verwacht, maar %2$d gevonden." + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "Een openingshaakje gevolgd door een set met waardes werd verwacht." + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "Een openingshaakje werd verwacht." + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "Onverwacht sleutelwoord." + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "Onverwacht einde van CASE expressie" + +#: src/Components/CaseExpression.php:225 +msgid "Potential duplicate alias of CASE expression." +msgstr "Potentiële dubbele alias van CASE expressie." + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "Een alias werd verwacht na AS maar kreeg " + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "Een alias was eerder al gevonden." + +#: src/Components/CaseExpression.php:262 +msgid "An alias was expected after AS." +msgstr "Een alias werd verwacht na AS." + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" +"Een symbool naam werd verwacht! Een gereserveerd sleutelwoord kan niet als " +"kolomnaam gebruikt worden zonder achterwaartse aanhalingstekens." + +#: src/Components/CreateDefinition.php:266 +msgid "A symbol name was expected!" +msgstr "Een symbool naam werd verwacht!" + +#: src/Components/CreateDefinition.php:301 +msgid "A comma or a closing bracket was expected." +msgstr "Een komma of een sluitingshaakje werd verwacht." + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "Een sluitingshaakje werd verwacht." + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "Onbekend gegevenstype." + +#: src/Components/ExpressionArray.php:101 +msgid "An expression was expected." +msgstr "Een expressie werd verwacht." + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +msgid "An alias was expected." +msgstr "Een alias werd verwacht." + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "Onverwachte punt." + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "Onverwacht token." + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "Een offset werd verwacht." + +#: src/Components/LockExpression.php:91 +msgid "Unexpected end of LOCK expression." +msgstr "Onverwacht einde van LOCK expressie." + +#: src/Components/LockExpression.php:199 +msgid "Unexpected end of Lock expression." +msgstr "Onverwacht einde van CASE expressie." + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "Deze optie conflicteert met \"%1$s\"." + +#: src/Components/RenameOperation.php:105 +msgid "The old name of the table was expected." +msgstr "De oude naam van de tabel werd verwacht." + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "Sleutelwoord \"TO\" werd verwacht." + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "De nieuwe naam van de tabel werd verwacht." + +#: src/Components/RenameOperation.php:151 +msgid "A rename operation was expected." +msgstr "Een hernoem bewerking werd verwacht." + +#: src/Components/SetOperation.php:121 +msgid "Missing expression." +msgstr "Expressie ontbreekt." + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "Onverwachte letter." + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "Spatie(s) werd(en) verwacht voor het scheidingsteken." + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "Scheidingsteken verwacht." + +#: src/Lexer.php:909 +#, php-format +msgid "Ending quote %1$s was expected." +msgstr "Eindquote %1$s werd verwacht." + +#: src/Lexer.php:955 +msgid "Variable name was expected." +msgstr "Naam van variabele werd verwacht." + +#: src/Parser.php:451 +msgid "Unexpected beginning of statement." +msgstr "Onverwacht begin van opdracht." + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "Opdrachttype niet herkend." + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "Er is geen transactie gestart." + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "Dit type van voorwaarde is eerder uitgevoerd." + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "Sleutelwoord niet herkend." + +#: src/Statement.php:407 +msgid "Keyword at end of statement." +msgstr "Sleutelwoord aan eind van opdracht." + +#: src/Statement.php:551 +msgid "Unexpected ordering of clauses." +msgstr "Onverwachte volgorde van voorwaarden." + +#: src/Statements/CreateStatement.php:492 +msgid "The name of the entity was expected." +msgstr "De naam van de entiteit werd verwacht." + +#: src/Statements/CreateStatement.php:542 +msgid "A table name was expected." +msgstr "Een tabel naam werd verwacht." + +#: src/Statements/CreateStatement.php:550 +msgid "At least one column definition was expected." +msgstr "Er werd minimaal één kolomdefinitie verwacht." + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "Een \"RETURNS\" sleutelwoord werd verwacht." + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "Dit type van voorwaarde is niet bruikbaar in multi-tabel queries." + +#: src/Statements/LockStatement.php:116 +msgid "Unexpected end of LOCK statement." +msgstr "Onverwacht einde van LOCK opdracht." + +#: src/Statements/PurgeStatement.php:136 +msgid "Unexpected keyword" +msgstr "Onverwacht sleutelwoord" + +#~ msgid "error #1" +#~ msgstr "fout #1" + +#~ msgid "strict error" +#~ msgstr "strikte fout" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/pa/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/pa/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..9a08ff3dba Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/pa/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/pa/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/pa/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..d08fc696c2 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/pa/LC_MESSAGES/sqlparser.po @@ -0,0 +1,264 @@ +# phpMyAdmin translation. +# Copyright (C) 2003 - 2012 phpMyAdmin devel team +# This file is distributed under the same license as the phpMyAdmin package. +# Automatically generated, 2012. +# +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2014-01-06 12:13+0200\n" +"Last-Translator: Michal Čihař \n" +"Language-Team: Punjabi \n" +"Language: pa\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 1.9-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "" + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "" + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "" + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "" + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "" + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "" + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "" + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "" + +#: src/Components/CaseExpression.php:225 +msgid "Potential duplicate alias of CASE expression." +msgstr "" + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "" + +#: src/Components/CaseExpression.php:262 +#, fuzzy +#| msgid "Database %1$s has been created." +msgid "An alias was expected after AS." +msgstr "%1$s ਡਾਟਾਬੇਸ ਬਣ ਚੁੱਕਾ ਹੈ." + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" + +#: src/Components/CreateDefinition.php:266 +#, fuzzy +#| msgid "Database %1$s has been created." +msgid "A symbol name was expected!" +msgstr "%1$s ਡਾਟਾਬੇਸ ਬਣ ਚੁੱਕਾ ਹੈ." + +#: src/Components/CreateDefinition.php:301 +#, fuzzy +#| msgid "Database %1$s has been created." +msgid "A comma or a closing bracket was expected." +msgstr "%1$s ਡਾਟਾਬੇਸ ਬਣ ਚੁੱਕਾ ਹੈ." + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "" + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "" + +#: src/Components/ExpressionArray.php:101 +msgid "An expression was expected." +msgstr "" + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +#, fuzzy +#| msgid "Database %1$s has been created." +msgid "An alias was expected." +msgstr "%1$s ਡਾਟਾਬੇਸ ਬਣ ਚੁੱਕਾ ਹੈ." + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "" + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "" + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "" + +#: src/Components/LockExpression.php:91 +msgid "Unexpected end of LOCK expression." +msgstr "" + +#: src/Components/LockExpression.php:199 +msgid "Unexpected end of Lock expression." +msgstr "" + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "" + +#: src/Components/RenameOperation.php:105 +msgid "The old name of the table was expected." +msgstr "" + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "" + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "" + +#: src/Components/RenameOperation.php:151 +#, fuzzy +#| msgid "Database %1$s has been created." +msgid "A rename operation was expected." +msgstr "%1$s ਡਾਟਾਬੇਸ ਬਣ ਚੁੱਕਾ ਹੈ." + +#: src/Components/SetOperation.php:121 +msgid "Missing expression." +msgstr "" + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "" + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "" + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "" + +#: src/Lexer.php:909 +#, php-format +msgid "Ending quote %1$s was expected." +msgstr "" + +#: src/Lexer.php:955 +msgid "Variable name was expected." +msgstr "" + +#: src/Parser.php:451 +msgid "Unexpected beginning of statement." +msgstr "" + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "" + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "" + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "" + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "" + +#: src/Statement.php:407 +msgid "Keyword at end of statement." +msgstr "" + +#: src/Statement.php:551 +msgid "Unexpected ordering of clauses." +msgstr "" + +#: src/Statements/CreateStatement.php:492 +msgid "The name of the entity was expected." +msgstr "" + +#: src/Statements/CreateStatement.php:542 +#, fuzzy +#| msgid "Database %1$s has been created." +msgid "A table name was expected." +msgstr "%1$s ਡਾਟਾਬੇਸ ਬਣ ਚੁੱਕਾ ਹੈ." + +#: src/Statements/CreateStatement.php:550 +#, fuzzy +#| msgid "Database %1$s has been created." +msgid "At least one column definition was expected." +msgstr "%1$s ਡਾਟਾਬੇਸ ਬਣ ਚੁੱਕਾ ਹੈ." + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "" + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "" + +#: src/Statements/LockStatement.php:116 +msgid "Unexpected end of LOCK statement." +msgstr "" + +#: src/Statements/PurgeStatement.php:136 +msgid "Unexpected keyword" +msgstr "" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/pl/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/pl/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..76f0a7200c Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/pl/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/pl/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/pl/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..d7f0f8dd61 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/pl/LC_MESSAGES/sqlparser.po @@ -0,0 +1,258 @@ +# iMutrix , 2012. +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2021-04-17 13:26+0000\n" +"Last-Translator: WaldiS \n" +"Language-Team: Polish \n" +"Language: pl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 " +"|| n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 4.6-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "Jeszcze nie zaimplementowane." + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "Znaleziono kolejne polecenie, ale brakuje między nimi rozgranicznika." + +#: src/Components/AlterOperation.php:290 +#, fuzzy +msgid "Missing comma before start of a new alter operation." +msgstr "Brak przecinka przed rozpoczęciem nowej operacji zmiany." + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "Nierozpoznana zmiana operacji." + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "Oczekiwano następującej wartości: %1$d; znaleziono %2$d." + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "Oczekiwano nawiasu otwierającego i listy wartości." + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "Brak nawiasu otwierającego." + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "Nieznane słowo kluczowe." + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "Nieoczekiwany koniec polecenia CASE" + +#: src/Components/CaseExpression.php:225 +msgid "Potential duplicate alias of CASE expression." +msgstr "Potencjalny zduplikowany alias wyrażenia CASE" + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "Wcześniej znaleziono alias." + +#: src/Components/CaseExpression.php:262 +#, fuzzy +#| msgid "An alias was expected." +msgid "An alias was expected after AS." +msgstr "Oczekiwano aliasu." + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" +"Oczekiwano nazwy symbolu! Zarezerwowane słowo kluczowe nie może być używane " +"jako nazwa kolumny bez cudzysłowów." + +#: src/Components/CreateDefinition.php:266 +msgid "A symbol name was expected!" +msgstr "Oczekiwano nazwy symbolu!" + +#: src/Components/CreateDefinition.php:301 +msgid "A comma or a closing bracket was expected." +msgstr "Oczekiwano przecinka lub nawiasu zamykającego." + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "Brak nawiasu zamykającego." + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "Nierozpoznany typ danych." + +#: src/Components/ExpressionArray.php:101 +msgid "An expression was expected." +msgstr "Oczekiwano wyrażenia." + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +msgid "An alias was expected." +msgstr "Oczekiwano aliasu." + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "Nieoczekiwana kropka." + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "Nieoczekiwany znak." + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "Oczekiwano przesunięcia." + +#: src/Components/LockExpression.php:91 +msgid "Unexpected end of LOCK expression." +msgstr "Nieoczekiwany koniec wyrażenia LOCK." + +#: src/Components/LockExpression.php:199 +msgid "Unexpected end of Lock expression." +msgstr "Nieoczekiwany koniec wyrażenia Lock." + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "Ta opcja zawiera konflikt z \"%1$s\"." + +#: src/Components/RenameOperation.php:105 +msgid "The old name of the table was expected." +msgstr "Oczekiwano starej nazwy tabeli." + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "Oczekiwano słowa kluczowego \"TO\"." + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "Oczekiwano nowej nazwy tabeli." + +#: src/Components/RenameOperation.php:151 +msgid "A rename operation was expected." +msgstr "Oczekiwano polecenia zmiany nazwy." + +#: src/Components/SetOperation.php:121 +msgid "Missing expression." +msgstr "Brakujace wyrazenie." + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "Nieoczekiwany znak." + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "Oczekiwano spacji przez rozgranicznikiem." + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "Oczekiwano rozgranicznika." + +#: src/Lexer.php:909 +#, php-format +msgid "Ending quote %1$s was expected." +msgstr "Oczekiwano znaku końca %1$s." + +#: src/Lexer.php:955 +msgid "Variable name was expected." +msgstr "Oczekiwano nazwy zmiennej." + +#: src/Parser.php:451 +msgid "Unexpected beginning of statement." +msgstr "Oczekiwano początku polecenia." + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "Nierozpoznany typ polecenia." + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "Żadna transakcja nie została wcześniej uruchomiona." + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "Tego typu klauzula została wcześniej przeanalizowana." + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "Nierozpoznane słowo kluczowe." + +#: src/Statement.php:407 +msgid "Keyword at end of statement." +msgstr "Słowo kluczowe na końcu wyciągu." + +#: src/Statement.php:551 +msgid "Unexpected ordering of clauses." +msgstr "Nieoczekiwana kolejność klauzul." + +#: src/Statements/CreateStatement.php:492 +msgid "The name of the entity was expected." +msgstr "Oczekiwano nazwy obiektu." + +#: src/Statements/CreateStatement.php:542 +msgid "A table name was expected." +msgstr "Oczekiwano nazwy tabeli." + +#: src/Statements/CreateStatement.php:550 +msgid "At least one column definition was expected." +msgstr "Oczekiwano definicji co najmniej jednej kolumny." + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "Oczekiwano słowa kluczowego \"RETURNS\"." + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "Ta klauzula nie może być stosowana w poleceniach międzytabelowych." + +#: src/Statements/LockStatement.php:116 +msgid "Unexpected end of LOCK statement." +msgstr "Nieoczekiwane zakończenie instrukcji LOCK." + +#: src/Statements/PurgeStatement.php:136 +msgid "Unexpected keyword" +msgstr "Nieznane słowo kluczowe" + +#~ msgid "error #1" +#~ msgstr "Błąd #1" + +#~ msgid "strict error" +#~ msgstr "ścisły błąd" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/pt/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/pt/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..11670c99b9 Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/pt/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/pt/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/pt/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..c421e525d7 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/pt/LC_MESSAGES/sqlparser.po @@ -0,0 +1,257 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2020-04-19 10:11+0000\n" +"Last-Translator: ssantos \n" +"Language-Team: Portuguese \n" +"Language: pt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.0.2-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "Ainda não foi implementado." + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "" +"Uma nova instrução foi encontrada, mas nenhum delimitador entre ela e a " +"anterior." + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "Falta uma vírgula antes do início de uma nova operação de alteração." + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "Operação de alteração não reconhecida." + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "Eram esperados %1$d valores, mas foram encontrados %2$d." + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "" +"Uma abertura de chaveta seguida de um conjunto de valores era esperada." + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "Uma abertura de chaveta era esperada." + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "Palavra-chave inesperada." + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "Fim da expressão CASE inesperada" + +#: src/Components/CaseExpression.php:225 +msgid "Potential duplicate alias of CASE expression." +msgstr "Pseudónimo potencialmente duplicado da expressão CASE." + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "Um pseudónimo esperado após AS, mas tem " + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "Um alias foi previamente encontrado." + +#: src/Components/CaseExpression.php:262 +msgid "An alias was expected after AS." +msgstr "Um pseudónimo foi esperado depois do AS." + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" +"Um nome de símbolo era esperado! Uma chave reservada não pode ser usada como " +"um nome de coluna sem as chaves." + +#: src/Components/CreateDefinition.php:266 +msgid "A symbol name was expected!" +msgstr "Um nome do símbolo era esperado!" + +#: src/Components/CreateDefinition.php:301 +msgid "A comma or a closing bracket was expected." +msgstr "Uma vírgula ou um colchete de fechamento era esperado." + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "Um colchete ou parenteses era esperado." + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "Tipo de dado desconhecido." + +#: src/Components/ExpressionArray.php:101 +msgid "An expression was expected." +msgstr "Uma expressão era esperada." + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +msgid "An alias was expected." +msgstr "Um alias era esperado." + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "Ponto inesperado." + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "Token inesperado." + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "Um offset era esperado." + +#: src/Components/LockExpression.php:91 +msgid "Unexpected end of LOCK expression." +msgstr "Fim inesperado da expressão LOCK." + +#: src/Components/LockExpression.php:199 +msgid "Unexpected end of Lock expression." +msgstr "Fim inesperado da expressão CASE." + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "Essa opção conflita com \"%1$s1\"." + +#: src/Components/RenameOperation.php:105 +msgid "The old name of the table was expected." +msgstr "O nome antigo da tabela era esperado." + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "Palavra-chave \"TO\" era esperada." + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "O novo nome da tabela era esperado." + +#: src/Components/RenameOperation.php:151 +msgid "A rename operation was expected." +msgstr "Uma operação rename era esperada." + +#: src/Components/SetOperation.php:121 +msgid "Missing expression." +msgstr "Faltando expressão." + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "Caractere inesperado." + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "Espaço(s) em Branco(s) esperado antes do delimitador." + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "Delimitador esperado." + +#: src/Lexer.php:909 +#, php-format +msgid "Ending quote %1$s was expected." +msgstr "Citação final %1$s1 era esperada." + +#: src/Lexer.php:955 +msgid "Variable name was expected." +msgstr "Nome da variável era esperado." + +#: src/Parser.php:451 +msgid "Unexpected beginning of statement." +msgstr "Inesperado começo da declaração." + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "Tipo de declaração desconhecida." + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "Nenhuma transação foi iniciada anteriormente." + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "Este tipo de cláusula foi previamente analisado." + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "Palavra-chave desconhecida." + +#: src/Statement.php:407 +msgid "Keyword at end of statement." +msgstr "Palavra-chave no final da declaração." + +#: src/Statement.php:551 +msgid "Unexpected ordering of clauses." +msgstr "Ordenação inesperada de cláusulas." + +#: src/Statements/CreateStatement.php:492 +msgid "The name of the entity was expected." +msgstr "O nome da entidade era esperado." + +#: src/Statements/CreateStatement.php:542 +msgid "A table name was expected." +msgstr "Um nome para a tabela era esperado." + +#: src/Statements/CreateStatement.php:550 +msgid "At least one column definition was expected." +msgstr "Pelo menos uma definição de coluna era esperada." + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "Uma palavra-chave \"RETURNS\" era esperada." + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "Esse tipo de clausula não é válida em queries Multi-tabela." + +#: src/Statements/LockStatement.php:116 +msgid "Unexpected end of LOCK statement." +msgstr "Fim inesperado da declaração LOCK." + +#: src/Statements/PurgeStatement.php:136 +msgid "Unexpected keyword" +msgstr "Palavra-chave inesperada" + +#~ msgid "error #1" +#~ msgstr "Erro #1" + +#~ msgid "strict error" +#~ msgstr "Erro severo" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/pt_BR/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/pt_BR/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..b99058820c Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/pt_BR/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/pt_BR/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/pt_BR/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..e13736c71f --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/pt_BR/LC_MESSAGES/sqlparser.po @@ -0,0 +1,257 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2020-08-14 00:37+0000\n" +"Last-Translator: Alexsandro Thomas \n" +"Language-Team: Portuguese (Brazil) \n" +"Language: pt_BR\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.2-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "Ainda não implementado." + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "" +"Uma nova declaração foi encontrada, porém não há delimitador entre esta e a " +"anterior." + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "Falta uma vírgula antes do início de uma nova operação de alteração." + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "Operação de alteração desconhecida." + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "Eram esperados %1$d valores, mas foram encontrados %2$d." + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "" +"Era esperado um colchete de abertura seguido por um conjunto de valores." + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "Era esperado um colchete de abertura." + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "Caracter inesperado." + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "Final inesperado da expressão CASE" + +#: src/Components/CaseExpression.php:225 +msgid "Potential duplicate alias of CASE expression." +msgstr "Pseudônimo potencialmente duplicado da expressão CASE." + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "Um pseudônimo esperado após AS, mas tem " + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "Um nome correlação foi encontrado anteriormente." + +#: src/Components/CaseExpression.php:262 +msgid "An alias was expected after AS." +msgstr "Um pseudônimo foi esperado depois do AS." + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" +"Era esperado um nome de símbolo! Um caracter reservado não pode ser usado " +"como um nome de coluna sem apóstrofo." + +#: src/Components/CreateDefinition.php:266 +msgid "A symbol name was expected!" +msgstr "Era esperado um nome de símbolo!" + +#: src/Components/CreateDefinition.php:301 +msgid "A comma or a closing bracket was expected." +msgstr "Era esperado uma vírgula ou um colchete de fechamento." + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "Era esperado um colchete de fechamento." + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "Tipo de dado desconhecido." + +#: src/Components/ExpressionArray.php:101 +msgid "An expression was expected." +msgstr "Era esperado uma expressão." + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +msgid "An alias was expected." +msgstr "Era esperado um nome de correlação." + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "Ponto inesperado." + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "Símbolo (token) inesperado." + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "Era esperado um espaçamento." + +#: src/Components/LockExpression.php:91 +msgid "Unexpected end of LOCK expression." +msgstr "Final inesperado da expressão LOCK." + +#: src/Components/LockExpression.php:199 +msgid "Unexpected end of Lock expression." +msgstr "Final inesperado da expressão Lock." + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "Esta opção está em conflito com \"%1$s\"." + +#: src/Components/RenameOperation.php:105 +msgid "The old name of the table was expected." +msgstr "Era esperado o nome anterior da tabela." + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "Era esperado o caracter \"TO\"." + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "Era esperado o novo nome da tabela." + +#: src/Components/RenameOperation.php:151 +msgid "A rename operation was expected." +msgstr "Era esperado uma operação renomear." + +#: src/Components/SetOperation.php:121 +msgid "Missing expression." +msgstr "Faltando expressão." + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "Caracter inesperado." + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "Era(m) esperado(s) espaço(s) em branco antes do delimitador." + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "Esperado delimitador." + +#: src/Lexer.php:909 +#, php-format +msgid "Ending quote %1$s was expected." +msgstr "Era esperado fechar aspas %1$s." + +#: src/Lexer.php:955 +msgid "Variable name was expected." +msgstr "Era perado nome de variável." + +#: src/Parser.php:451 +msgid "Unexpected beginning of statement." +msgstr "Início de declaração inesperado." + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "Tipo de declaração desconhecido." + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "Nenhuma operação foi iniciada anteriormente." + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "Este tipo de sentença foi previamente analisado." + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "Comando desconhecido." + +#: src/Statement.php:407 +msgid "Keyword at end of statement." +msgstr "Palavra-chave no final da declaração." + +#: src/Statement.php:551 +msgid "Unexpected ordering of clauses." +msgstr "Ordenamento de sentenças inesperado." + +#: src/Statements/CreateStatement.php:492 +msgid "The name of the entity was expected." +msgstr "Era esperado o nome da entidade." + +#: src/Statements/CreateStatement.php:542 +msgid "A table name was expected." +msgstr "Era esperado um nome de tabela." + +#: src/Statements/CreateStatement.php:550 +msgid "At least one column definition was expected." +msgstr "Era esperado a definição de pelo menos uma coluna." + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "Era esperado um comando \"RETURNS\"." + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "Este tipo de sentença não é válida em consultas à várias tabelas." + +#: src/Statements/LockStatement.php:116 +msgid "Unexpected end of LOCK statement." +msgstr "Fim inesperado da declaração LOCK." + +#: src/Statements/PurgeStatement.php:136 +msgid "Unexpected keyword" +msgstr "Palavra-chave inesperada" + +#~ msgid "error #1" +#~ msgstr "erro #1" + +#~ msgid "strict error" +#~ msgstr "Erro estrito" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/rcf/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/rcf/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..81075421de Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/rcf/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/rcf/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/rcf/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..f7b340bc26 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/rcf/LC_MESSAGES/sqlparser.po @@ -0,0 +1,247 @@ +# phpMyAdmin SQL parser translation. +# Copyright (C) 2015 - 2020 phpMyAdmin devel team +# This file is distributed under the same license as the SQL parser package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:09+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: Automatically generated\n" +"Language-Team: none\n" +"Language: rcf\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "" + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "" + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "" + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "" + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "" + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "" + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "" + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "" + +#: src/Components/CaseExpression.php:225 +msgid "Potential duplicate alias of CASE expression." +msgstr "" + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "" + +#: src/Components/CaseExpression.php:262 +msgid "An alias was expected after AS." +msgstr "" + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" + +#: src/Components/CreateDefinition.php:266 +msgid "A symbol name was expected!" +msgstr "" + +#: src/Components/CreateDefinition.php:301 +msgid "A comma or a closing bracket was expected." +msgstr "" + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "" + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "" + +#: src/Components/ExpressionArray.php:101 +msgid "An expression was expected." +msgstr "" + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +msgid "An alias was expected." +msgstr "" + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "" + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "" + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "" + +#: src/Components/LockExpression.php:91 +msgid "Unexpected end of LOCK expression." +msgstr "" + +#: src/Components/LockExpression.php:199 +msgid "Unexpected end of Lock expression." +msgstr "" + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "" + +#: src/Components/RenameOperation.php:105 +msgid "The old name of the table was expected." +msgstr "" + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "" + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "" + +#: src/Components/RenameOperation.php:151 +msgid "A rename operation was expected." +msgstr "" + +#: src/Components/SetOperation.php:121 +msgid "Missing expression." +msgstr "" + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "" + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "" + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "" + +#: src/Lexer.php:909 +#, php-format +msgid "Ending quote %1$s was expected." +msgstr "" + +#: src/Lexer.php:955 +msgid "Variable name was expected." +msgstr "" + +#: src/Parser.php:451 +msgid "Unexpected beginning of statement." +msgstr "" + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "" + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "" + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "" + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "" + +#: src/Statement.php:407 +msgid "Keyword at end of statement." +msgstr "" + +#: src/Statement.php:551 +msgid "Unexpected ordering of clauses." +msgstr "" + +#: src/Statements/CreateStatement.php:492 +msgid "The name of the entity was expected." +msgstr "" + +#: src/Statements/CreateStatement.php:542 +msgid "A table name was expected." +msgstr "" + +#: src/Statements/CreateStatement.php:550 +msgid "At least one column definition was expected." +msgstr "" + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "" + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "" + +#: src/Statements/LockStatement.php:116 +msgid "Unexpected end of LOCK statement." +msgstr "" + +#: src/Statements/PurgeStatement.php:136 +msgid "Unexpected keyword" +msgstr "" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ro/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ro/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..7ae3721847 Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ro/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ro/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ro/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..a6d9576df9 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ro/LC_MESSAGES/sqlparser.po @@ -0,0 +1,269 @@ +# Automatically generated <>, 2010. +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2018-07-24 05:41+0000\n" +"Last-Translator: Dan Caragea \n" +"Language-Team: Romanian \n" +"Language: ro\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n==1 ? 0 : (n==0 || (n%100 > 0 && n%100 < " +"20)) ? 1 : 2;\n" +"X-Generator: Weblate 3.1-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "Neimplementat încă." + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "" +"A fost găsită o nouă activitate, dar nu există niciun delimitator între " +"aceasta și cea anterioară." + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "Activitate de modificare necunoscută." + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "Au fost așteptate %1$d valori, dar s-au găsit %2$d." + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "Era așteptată o paranteză de deschidere urmată de un set de valori." + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "Era așteptată o paranteza de deschidere." + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "Cuvinte cheie neașteptate." + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "Sirsit neasteptat al expresiei \"CASE\"" + +#: src/Components/CaseExpression.php:225 +#, fuzzy +#| msgid "Unexpected end of CASE expression" +msgid "Potential duplicate alias of CASE expression." +msgstr "Sirsit neasteptat al expresiei \"CASE\"" + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "A fost găsit anterior un alias." + +#: src/Components/CaseExpression.php:262 +#, fuzzy +#| msgid "An alias was expected." +msgid "An alias was expected after AS." +msgstr "Era așteptat un alias." + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" +"Era așteptat nume de simbol! Un cuvânt cheie rezervat nu poate fi folosit ca " +"nume de coloană fără ghilimele." + +#: src/Components/CreateDefinition.php:266 +msgid "A symbol name was expected!" +msgstr "Era așteptat un nume de simbol!" + +#: src/Components/CreateDefinition.php:301 +msgid "A comma or a closing bracket was expected." +msgstr "Era așteptată o virgulă sau o paranteză de închidere." + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "Era așteptată o paranteza de închidere." + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "Tip de date nerecunoscut." + +#: src/Components/ExpressionArray.php:101 +msgid "An expression was expected." +msgstr "Era așteptată o expresie." + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +msgid "An alias was expected." +msgstr "Era așteptat un alias." + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "Punct neașteptat." + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "Token neașteptat." + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "Era așteptat un decalaj." + +#: src/Components/LockExpression.php:91 +#, fuzzy +#| msgid "Unexpected end of CASE expression" +msgid "Unexpected end of LOCK expression." +msgstr "Sirsit neasteptat al expresiei \"CASE\"" + +#: src/Components/LockExpression.php:199 +#, fuzzy +#| msgid "Unexpected end of CASE expression" +msgid "Unexpected end of Lock expression." +msgstr "Sirsit neasteptat al expresiei \"CASE\"" + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "Aceasta opțiune intră în conflict cu „%1$s”." + +#: src/Components/RenameOperation.php:105 +msgid "The old name of the table was expected." +msgstr "Era așteptat numele vechi al tabelului." + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "Cuvantul cheie \"TO\" este cerut." + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "Era așteptat numele nou al tabelului." + +#: src/Components/RenameOperation.php:151 +msgid "A rename operation was expected." +msgstr "Era așteptată o operație de redenumire." + +#: src/Components/SetOperation.php:121 +msgid "Missing expression." +msgstr "Lipsește expresia." + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "Caracter neașteptat." + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "S-au așteptat spații goale înainte de delimitator." + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "A fost așteptat delimitatorul." + +#: src/Lexer.php:909 +#, php-format +msgid "Ending quote %1$s was expected." +msgstr "Erau așteptate ghilimele la sfârșit %1$s." + +#: src/Lexer.php:955 +msgid "Variable name was expected." +msgstr "Era așteptat numele variabilei." + +#: src/Parser.php:451 +msgid "Unexpected beginning of statement." +msgstr "Început neașteptat al declarației." + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "Tip de activitate nerecunoscut." + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "Nu a fost începută anterior nicio tranzacție." + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "Acest tip de clauză a fost analizat anterior." + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "Cuvânt cheie nerecunoscut." + +#: src/Statement.php:407 +msgid "Keyword at end of statement." +msgstr "Cuvânt cheie la sfârșitul declarației." + +#: src/Statement.php:551 +msgid "Unexpected ordering of clauses." +msgstr "Ordonare neașteptată a clauzelor." + +#: src/Statements/CreateStatement.php:492 +msgid "The name of the entity was expected." +msgstr "Era așteptat numele entității." + +#: src/Statements/CreateStatement.php:542 +msgid "A table name was expected." +msgstr "Era așteptat un nume de tabel." + +#: src/Statements/CreateStatement.php:550 +msgid "At least one column definition was expected." +msgstr "Era așteptată cel puțin o definiție a coloanei." + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "Un cuvânt cheie \"RETURNS\" era de aşteptat." + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "Acest tip de clauză nu este valid în interogările mai multor tabele." + +#: src/Statements/LockStatement.php:116 +#, fuzzy +#| msgid "Unexpected beginning of statement." +msgid "Unexpected end of LOCK statement." +msgstr "Început neașteptat al declarației." + +#: src/Statements/PurgeStatement.php:136 +#, fuzzy +#| msgid "Unexpected keyword." +msgid "Unexpected keyword" +msgstr "Cuvinte cheie neașteptate." + +#~ msgid "error #1" +#~ msgstr "eroare #1" + +#~ msgid "strict error" +#~ msgstr "eroare strictă" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ru/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ru/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..216a639f29 Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ru/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ru/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ru/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..f49e8af2b1 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ru/LC_MESSAGES/sqlparser.po @@ -0,0 +1,257 @@ +# Automatically generated <>, 2010. +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2020-08-31 15:34+0000\n" +"Last-Translator: Mingun \n" +"Language-Team: Russian \n" +"Language: ru\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 4.2.1-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "Ещё не реализовано." + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "" +"Было найдено новое утверждение, но не было разделителя между ним и " +"предыдущим." + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "Отсутствует запятая перед началом новой операции alter." + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "Нераспознанная операция изменения." + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "Ожидалось %1$d значений, найдено %2$d." + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "Ожидалась открывающая скобка и список значений." + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "Ожидалась открывающая скобка." + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "Неожиданное ключевое слово." + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "Неожиданное окончание CASE выражения" + +#: src/Components/CaseExpression.php:225 +msgid "Potential duplicate alias of CASE expression." +msgstr "Потенциальный дубликат псевдонима в выражении CASE." + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "После AS ожидается псевдоним, однако получено " + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "Псевдоним был найден ранее." + +#: src/Components/CaseExpression.php:262 +msgid "An alias was expected after AS." +msgstr "После AS ожидался псевдоним." + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" +"Ожидалось имя символа! Зарезервированное ключевое слово не может " +"использоваться как имя столбца без обратных запросов." + +#: src/Components/CreateDefinition.php:266 +msgid "A symbol name was expected!" +msgstr "Ожидалось имя символа!" + +#: src/Components/CreateDefinition.php:301 +msgid "A comma or a closing bracket was expected." +msgstr "Ожидалась запятая или закрывающая скобка." + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "Ожидалась закрывающая скобка." + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "Нераспознанный тип данных." + +#: src/Components/ExpressionArray.php:101 +msgid "An expression was expected." +msgstr "Ожидалось выражение." + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +msgid "An alias was expected." +msgstr "Ожидался псевдоним." + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "Неожиданная точка." + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "Неожиданный токен." + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "Ожидалось смещение." + +#: src/Components/LockExpression.php:91 +msgid "Unexpected end of LOCK expression." +msgstr "Неожиданное окончание выражения LOCK." + +#: src/Components/LockExpression.php:199 +msgid "Unexpected end of Lock expression." +msgstr "Неожиданное окончание выражения Lock." + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "Этот параметр конфликтует с \"%1$s\"." + +#: src/Components/RenameOperation.php:105 +msgid "The old name of the table was expected." +msgstr "Ожидалось старое имя таблицы." + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "Ожидалось ключевое слово \"TO\"." + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "Ожидалось новое имя таблицы." + +#: src/Components/RenameOperation.php:151 +msgid "A rename operation was expected." +msgstr "Ожидалась операция переименования." + +#: src/Components/SetOperation.php:121 +msgid "Missing expression." +msgstr "Отсутствует выражение." + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "Неожиданный символ." + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "Ожидался пробел перед разделителем." + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "Ожидается разделитель." + +#: src/Lexer.php:909 +#, php-format +msgid "Ending quote %1$s was expected." +msgstr "Ожидалась закрывающая кавычка %1$s." + +#: src/Lexer.php:955 +msgid "Variable name was expected." +msgstr "Ожидалось имя переменной." + +#: src/Parser.php:451 +msgid "Unexpected beginning of statement." +msgstr "Неожиданное начало выражения." + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "Неизвестный оператор." + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "Ни одна транзакция не была ранее начата." + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "Этот тип предложения ранее анализировался." + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "Неизвестное ключевое слово." + +#: src/Statement.php:407 +msgid "Keyword at end of statement." +msgstr "Ключевое слово в конце инструкции." + +#: src/Statement.php:551 +msgid "Unexpected ordering of clauses." +msgstr "Неожиданный порядок предложений." + +#: src/Statements/CreateStatement.php:492 +msgid "The name of the entity was expected." +msgstr "Ожидалось имя сущности." + +#: src/Statements/CreateStatement.php:542 +msgid "A table name was expected." +msgstr "Ожидалось имя таблицы." + +#: src/Statements/CreateStatement.php:550 +msgid "At least one column definition was expected." +msgstr "Ожидалось объявление, по крайней мере, одного столбца." + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "Ожидалось ключевое слово \"RETURNS\"." + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "Такого рода выражения не поддерживаются в мульти-табличных запросах." + +#: src/Statements/LockStatement.php:116 +msgid "Unexpected end of LOCK statement." +msgstr "Неожиданное окончание инструкции LOCK." + +#: src/Statements/PurgeStatement.php:136 +msgid "Unexpected keyword" +msgstr "Неожиданное ключевое слово" + +#~ msgid "error #1" +#~ msgstr "ошибка #1" + +#~ msgid "strict error" +#~ msgstr "строгая ошибка" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/si/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/si/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..bb821e7812 Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/si/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/si/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/si/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..0b6c06fa78 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/si/LC_MESSAGES/sqlparser.po @@ -0,0 +1,293 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2020-10-04 21:34+0000\n" +"Last-Translator: Michal Čihař \n" +"Language-Team: Sinhala \n" +"Language: si\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.3-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "තවම නිර්මාණය කර නොමැත." + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "" + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "හදුනානොගත් වෙනස් කිරීමේ මෙහෙයුමක්." + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "" + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "" + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "" + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +#, fuzzy +#| msgid "Unexpected characters on line %s." +msgid "Unexpected keyword." +msgstr "%s වන පේළියේ අනපේක්ෂිත අනුලකුණකි." + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "'CASE' ප්‍රකාශය නොසිතු ලෙස අවසන් විය." + +#: src/Components/CaseExpression.php:225 +#, fuzzy +#| msgid "Unexpected end of CASE expression" +msgid "Potential duplicate alias of CASE expression." +msgstr "'CASE' ප්‍රකාශය නොසිතු ලෙස අවසන් විය." + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "" + +#: src/Components/CaseExpression.php:262 +#, fuzzy +#| msgid "An alias was expected." +msgid "An alias was expected after AS." +msgstr "අනවර්ථ නාමයක් බලාපොරොත්තු වේ." + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" + +#: src/Components/CreateDefinition.php:266 +msgid "A symbol name was expected!" +msgstr "සංකේත නාමයක් බලාපොරොත්තු වේ!" + +#: src/Components/CreateDefinition.php:301 +msgid "A comma or a closing bracket was expected." +msgstr "කොමාවක් හෝ අවසන් කිරීමේ වරහනක් බලාපොරොත්තු වේ." + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "අවසන් කිරීමේ වරහනක් බලාපොරොත්තු වේ." + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "" + +#: src/Components/ExpressionArray.php:101 +msgid "An expression was expected." +msgstr "ප්‍රකාශයක් බලපොරොත්තු වේ." + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +msgid "An alias was expected." +msgstr "අනවර්ථ නාමයක් බලාපොරොත්තු වේ." + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "බලාපොරොත්තු නොවූ ඩොට් සලකුණක්." + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +#, fuzzy +#| msgid "Unexpected characters on line %s." +msgid "Unexpected token." +msgstr "%s වන පේළියේ අනපේක්ෂිත අනුලකුණකි." + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "" + +#: src/Components/LockExpression.php:91 +#, fuzzy +#| msgid "Unexpected end of CASE expression" +msgid "Unexpected end of LOCK expression." +msgstr "'CASE' ප්‍රකාශය නොසිතු ලෙස අවසන් විය." + +#: src/Components/LockExpression.php:199 +#, fuzzy +#| msgid "Unexpected end of CASE expression" +msgid "Unexpected end of Lock expression." +msgstr "'CASE' ප්‍රකාශය නොසිතු ලෙස අවසන් විය." + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "" + +#: src/Components/RenameOperation.php:105 +#, fuzzy +#| msgid "Title of browser window when a table is selected" +msgid "The old name of the table was expected." +msgstr "වගුවක් තෝරා ඇති විට බ්‍රව්සර කවුළුවේ මාතෘකාව" + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "" + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "" + +#: src/Components/RenameOperation.php:151 +#, fuzzy +#| msgid "The row has been deleted." +msgid "A rename operation was expected." +msgstr "පේළිය ඉවත් කරන ලදි." + +#: src/Components/SetOperation.php:121 +#, fuzzy +#| msgid "as regular expression" +msgid "Missing expression." +msgstr "regular expression ලෙස" + +#: src/Lexer.php:244 +#, fuzzy +#| msgid "Unexpected characters on line %s." +msgid "Unexpected character." +msgstr "%s වන පේළියේ අනපේක්ෂිත අනුලකුණකි." + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "" + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "" + +#: src/Lexer.php:909 +#, fuzzy, php-format +#| msgid "Event %1$s has been created." +msgid "Ending quote %1$s was expected." +msgstr "%1$s සිද්ධිය සාදන ලදි." + +#: src/Lexer.php:955 +#, fuzzy +#| msgid "Table name template" +msgid "Variable name was expected." +msgstr "ගොනු නාම ටෙම්ප්ලේටය" + +#: src/Parser.php:451 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected beginning of statement." +msgstr "වගුව මුලදී" + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "" + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "" + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "" + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "" + +#: src/Statement.php:407 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Keyword at end of statement." +msgstr "වගුව මුලදී" + +#: src/Statement.php:551 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected ordering of clauses." +msgstr "වගුව මුලදී" + +#: src/Statements/CreateStatement.php:492 +msgid "The name of the entity was expected." +msgstr "" + +#: src/Statements/CreateStatement.php:542 +#, fuzzy +#| msgid "Table name template" +msgid "A table name was expected." +msgstr "ගොනු නාම ටෙම්ප්ලේටය" + +#: src/Statements/CreateStatement.php:550 +#, fuzzy +#| msgid "The row has been deleted." +msgid "At least one column definition was expected." +msgstr "පේළිය ඉවත් කරන ලදි." + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "" + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "" + +#: src/Statements/LockStatement.php:116 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of LOCK statement." +msgstr "වගුව මුලදී" + +#: src/Statements/PurgeStatement.php:136 +#, fuzzy +#| msgid "Unexpected characters on line %s." +msgid "Unexpected keyword" +msgstr "%s වන පේළියේ අනපේක්ෂිත අනුලකුණකි." + +#, fuzzy +#~| msgid "errors." +#~ msgid "error #1" +#~ msgstr "දෝෂ." + +#, fuzzy +#~| msgid "Gather errors" +#~ msgid "strict error" +#~ msgstr "දෝෂ රැස්කරන්න" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/sk/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/sk/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..866ee0d821 Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/sk/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/sk/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/sk/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..19b40d7c0d --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/sk/LC_MESSAGES/sqlparser.po @@ -0,0 +1,268 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2020-10-04 21:34+0000\n" +"Last-Translator: Michal Čihař \n" +"Language-Team: Slovak \n" +"Language: sk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" +"X-Generator: Weblate 4.3-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "Zatiaľ neimplementované." + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "" +"Nový príkaz bol nájdený, ale nenašiel sa oddeľovač medzi týmto a predošlým " +"príkazom." + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "Nerozpoznaná operácia zmeny." + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "Očakávali sa hodnoty %1$d, ale našli sa %2$d." + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "Očakávala sa otvárajúca zátvorka nasledovaná sadou hodnôt." + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "Očakávala sa otvárajúca zátvorka." + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "Neočakávaný znak." + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "Neočakávaný koniec CASE výrazu" + +#: src/Components/CaseExpression.php:225 +#, fuzzy +#| msgid "Unexpected end of CASE expression" +msgid "Potential duplicate alias of CASE expression." +msgstr "Neočakávaný koniec CASE výrazu" + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "Alias bol predtým najdený." + +#: src/Components/CaseExpression.php:262 +#, fuzzy +#| msgid "An alias was expected." +msgid "An alias was expected after AS." +msgstr "Bol očakávaný alias." + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" +"Očakávalo sa meno symbolu! Rezervované kľúčové slovo nemôže byt použité ako " +"meno stĺpca bez spätných uvodzoviek." + +#: src/Components/CreateDefinition.php:266 +msgid "A symbol name was expected!" +msgstr "Očakávalo sa meno symbolu!" + +#: src/Components/CreateDefinition.php:301 +msgid "A comma or a closing bracket was expected." +msgstr "Bola očakávaná čiarka alebo uzatváracia zátvorka." + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "Očakávalo sa uzatvorenie zátvorky." + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "Nerozpoznaný typ dát." + +#: src/Components/ExpressionArray.php:101 +msgid "An expression was expected." +msgstr "Bol očakávaný výraz." + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +msgid "An alias was expected." +msgstr "Bol očakávaný alias." + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "Neočakávaná bodka." + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "Neočakávaný token." + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "Odstup bol očakávaný." + +#: src/Components/LockExpression.php:91 +#, fuzzy +#| msgid "Unexpected end of CASE expression" +msgid "Unexpected end of LOCK expression." +msgstr "Neočakávaný koniec CASE výrazu" + +#: src/Components/LockExpression.php:199 +#, fuzzy +#| msgid "Unexpected end of CASE expression" +msgid "Unexpected end of Lock expression." +msgstr "Neočakávaný koniec CASE výrazu" + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "Táto možnosť je v rozpore s %1$s." + +#: src/Components/RenameOperation.php:105 +msgid "The old name of the table was expected." +msgstr "Bolo očakávané staré meno tabuľky." + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "Kľúčové slovo \"TO\" bolo očakávané." + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "Bolo očakávané nové meno tabuľky." + +#: src/Components/RenameOperation.php:151 +msgid "A rename operation was expected." +msgstr "Očakávala sa operácia premenovania." + +#: src/Components/SetOperation.php:121 +msgid "Missing expression." +msgstr "Chýbajúci výraz." + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "Neočakávaný znak." + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "Očakávala sa medzera pred oddelovačom." + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "Očakával sa oddeľovač." + +#: src/Lexer.php:909 +#, php-format +msgid "Ending quote %1$s was expected." +msgstr "Ukončujúca úvodzovka %1$s sa očakávala." + +#: src/Lexer.php:955 +msgid "Variable name was expected." +msgstr "Očakávalo sa meno premennej." + +#: src/Parser.php:451 +msgid "Unexpected beginning of statement." +msgstr "Neočakávaný začiatok výrazu." + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "Nerozpoznaný typ výrazu." + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "Transakcia sa predtým nezačala." + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "Tento typ vety bol predtým rozobraný." + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "Nerozpoznané kľúčové slovo." + +#: src/Statement.php:407 +msgid "Keyword at end of statement." +msgstr "Kľúčové slovo na konci výrazu." + +#: src/Statement.php:551 +msgid "Unexpected ordering of clauses." +msgstr "Neočakávané poradie výrazov." + +#: src/Statements/CreateStatement.php:492 +msgid "The name of the entity was expected." +msgstr "Meno celku bolo očakávané." + +#: src/Statements/CreateStatement.php:542 +msgid "A table name was expected." +msgstr "Očakávalo sa meno tabuľky." + +#: src/Statements/CreateStatement.php:550 +msgid "At least one column definition was expected." +msgstr "Očakávala sa aspoň jedna definícia stĺpca." + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "Očakávalo sa kľúčové slovo \"RETURNS\"." + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "Takýto typ výrazu nie je platný vo viac tabuľkových dotazoch." + +#: src/Statements/LockStatement.php:116 +#, fuzzy +#| msgid "Unexpected beginning of statement." +msgid "Unexpected end of LOCK statement." +msgstr "Neočakávaný začiatok výrazu." + +#: src/Statements/PurgeStatement.php:136 +#, fuzzy +#| msgid "Unexpected keyword." +msgid "Unexpected keyword" +msgstr "Neočakávaný znak." + +#~ msgid "error #1" +#~ msgstr "Chyba #1" + +#~ msgid "strict error" +#~ msgstr "Striktná chyba" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/sl/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/sl/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..55a43d27dd Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/sl/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/sl/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/sl/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..001ca82532 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/sl/LC_MESSAGES/sqlparser.po @@ -0,0 +1,257 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2020-07-24 20:41+0000\n" +"Last-Translator: Domen \n" +"Language-Team: Slovenian \n" +"Language: sl\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=4; plural=n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n" +"%100==4 ? 2 : 3;\n" +"X-Generator: Weblate 4.2-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "Ni še implementirano." + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "" +"Naleteli smo na nov stavek, vendar med njim in prejšnjim stavkom ni " +"ločilnega znaka." + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "Manjkajoča vejica pred začetkom nove operacije alter." + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "Neprepoznan poseg spremembe." + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "Pričakovali smo %1$d vrednosti, vendar smo jih našli %2$d." + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "Pričakovali smo začetni oklepaj, ki mu sledi množica vrednosti." + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "Pričakovali smo začetni oklepaj." + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "Nepričakovana ključna beseda." + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "Nepričakovan konec izraza CASE" + +#: src/Components/CaseExpression.php:225 +msgid "Potential duplicate alias of CASE expression." +msgstr "Morebiti podvojen vzdevek izraza CASE." + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "Po AS smo pričakovali vzdevek, dobili pa " + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "Vzdevek smo našli že prej." + +#: src/Components/CaseExpression.php:262 +msgid "An alias was expected after AS." +msgstr "Po AS smo pričakovali vzdevek." + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" +"Pričakovali smo ime simbola! Rezervirane besede ne morete uporabiti kot ime " +"stolpca brez ustreznih narekovajev." + +#: src/Components/CreateDefinition.php:266 +msgid "A symbol name was expected!" +msgstr "Pričakovali smo ime znaka!" + +#: src/Components/CreateDefinition.php:301 +msgid "A comma or a closing bracket was expected." +msgstr "Pričakovali smo vejico ali zaklepaj." + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "Pričakovali smo zaklepaj." + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "Neprepoznana vrsta podatkov." + +#: src/Components/ExpressionArray.php:101 +msgid "An expression was expected." +msgstr "Pričakovali smo izraz." + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +msgid "An alias was expected." +msgstr "Pričakovali smo vzdevek." + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "Nepričakovana pika." + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "Nepričakovan žeton." + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "Pričakovali smo odmik." + +#: src/Components/LockExpression.php:91 +msgid "Unexpected end of LOCK expression." +msgstr "Nepričakovan konec izraza LOCK." + +#: src/Components/LockExpression.php:199 +msgid "Unexpected end of Lock expression." +msgstr "Nepričakovan konec izraza Lock." + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "Izbira je v sporu z \"%1$s\"." + +#: src/Components/RenameOperation.php:105 +msgid "The old name of the table was expected." +msgstr "Pričakovali smo staro ime tabele." + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "Pričakovali smo ključno besedo \"TO\"." + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "Pričakovali smo novo ime tabele." + +#: src/Components/RenameOperation.php:151 +msgid "A rename operation was expected." +msgstr "Pričakovali smo poseg preimenovanja." + +#: src/Components/SetOperation.php:121 +msgid "Missing expression." +msgstr "Manjkajoč izraz." + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "Nepričakovan znak." + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "Pred ločitvenim znakom smo pričakoval prazne znake." + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "Pričakovali smo ločitveni znak." + +#: src/Lexer.php:909 +#, php-format +msgid "Ending quote %1$s was expected." +msgstr "Pričakovali smo končni narekovaj %1$s." + +#: src/Lexer.php:955 +msgid "Variable name was expected." +msgstr "Pričakovali smo ime spremenljivke." + +#: src/Parser.php:451 +msgid "Unexpected beginning of statement." +msgstr "Nepričakovan začetek stavka." + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "Neprepoznana vrsta stavka." + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "Začeli niste nobene transakcije." + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "To vrsto stavka smo prej razčlenili." + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "Nepričakovana ključna beseda." + +#: src/Statement.php:407 +msgid "Keyword at end of statement." +msgstr "Ključna beseda na koncu stavka." + +#: src/Statement.php:551 +msgid "Unexpected ordering of clauses." +msgstr "Nepričakovan vrstni red stavkov." + +#: src/Statements/CreateStatement.php:492 +msgid "The name of the entity was expected." +msgstr "Pričakovali smo ime entitete." + +#: src/Statements/CreateStatement.php:542 +msgid "A table name was expected." +msgstr "Pričakovali smo ime tabele." + +#: src/Statements/CreateStatement.php:550 +msgid "At least one column definition was expected." +msgstr "Pričakovali smo vsaj eno opredelitev stolpca." + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "Pričakovali smo ključno besedo \"RETURNS\"." + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "Ta vrsta stavka ni veljavna v večtabelnih poizvedbah." + +#: src/Statements/LockStatement.php:116 +msgid "Unexpected end of LOCK statement." +msgstr "Nepričakovan konec izjave LOCK." + +#: src/Statements/PurgeStatement.php:136 +msgid "Unexpected keyword" +msgstr "Nepričakovana ključna beseda" + +#~ msgid "error #1" +#~ msgstr "napaka #1" + +#~ msgid "strict error" +#~ msgstr "stroga napaka" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/sq/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/sq/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..0ba3ae6ca9 Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/sq/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/sq/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/sq/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..a20908bae3 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/sq/LC_MESSAGES/sqlparser.po @@ -0,0 +1,268 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2018-03-20 00:34+0000\n" +"Last-Translator: M. M. \n" +"Language-Team: Albanian \n" +"Language: sq\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 2.20-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "Nuk është implementuar ende." + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "" +"Një deklaratë e re është gjetur, por nuk ka delimiter ndërmjet asaj dhe " +"tjetrës më përpara." + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "Veprim alter i panjohur." + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "Vlerat %1$d u pritën, por u gjetën %2$d." + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "Pritej një kllapë e hapur, e ndjekur nga një set vlerash." + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "Pritej një kllapë e hapur." + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "Fjalë kyçe e papritur." + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "Fund i papritur i shprehjes së CASE" + +#: src/Components/CaseExpression.php:225 +#, fuzzy +#| msgid "Unexpected end of CASE expression" +msgid "Potential duplicate alias of CASE expression." +msgstr "Fund i papritur i shprehjes së CASE" + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "Një pseudonim është gjetur më përpara." + +#: src/Components/CaseExpression.php:262 +#, fuzzy +#| msgid "An alias was expected." +msgid "An alias was expected after AS." +msgstr "Pritej një alias (pseudonim)." + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" +"Pritej një emër simboli! Një fjalë kyçe e rezervuar nuk mund të përdoret si " +"një emër kolone pa backquotes." + +#: src/Components/CreateDefinition.php:266 +msgid "A symbol name was expected!" +msgstr "Pritej emri i një simboli!" + +#: src/Components/CreateDefinition.php:301 +msgid "A comma or a closing bracket was expected." +msgstr "Pritej një presje ose një kllapë mbyllëse." + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "Pritej një kllapë mbyllëse." + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "Tip të dhënash i panjohur." + +#: src/Components/ExpressionArray.php:101 +msgid "An expression was expected." +msgstr "Pritej një shprehje." + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +msgid "An alias was expected." +msgstr "Pritej një alias (pseudonim)." + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "Pikë e papritur." + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "Shenjë e papritur." + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "Pritej një rezultat (offset)." + +#: src/Components/LockExpression.php:91 +#, fuzzy +#| msgid "Unexpected end of CASE expression" +msgid "Unexpected end of LOCK expression." +msgstr "Fund i papritur i shprehjes së CASE" + +#: src/Components/LockExpression.php:199 +#, fuzzy +#| msgid "Unexpected end of CASE expression" +msgid "Unexpected end of Lock expression." +msgstr "Fund i papritur i shprehjes së CASE" + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "Ky opsion ndeshet me \"%1$s\"." + +#: src/Components/RenameOperation.php:105 +msgid "The old name of the table was expected." +msgstr "Pritej emri i vjetër i tabelës." + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "Pritej fjala kyçe \"TO\" (për)." + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "Pritej emri i ri i tabelës." + +#: src/Components/RenameOperation.php:151 +msgid "A rename operation was expected." +msgstr "Pritej një veprim riemërimi." + +#: src/Components/SetOperation.php:121 +msgid "Missing expression." +msgstr "Shprehje që mungon." + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "Karakter i papritur." + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "Pritej hapësirë(a) e bardhë para delimiterit." + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "Delimitues i pritshëm." + +#: src/Lexer.php:909 +#, php-format +msgid "Ending quote %1$s was expected." +msgstr "Pritej thonjëza e fundit %1$s." + +#: src/Lexer.php:955 +msgid "Variable name was expected." +msgstr "Pritej emri i ndryshores." + +#: src/Parser.php:451 +msgid "Unexpected beginning of statement." +msgstr "Fillim i papritur i deklaratës." + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "Tip deklarate i panjohur." + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "Deri më tani nuk ka filluar ndonjë transaksion." + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "Ky tip i klauzolës është parsuar më parë." + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "Fjalë kyçe e panjohur." + +#: src/Statement.php:407 +msgid "Keyword at end of statement." +msgstr "Fillim i papritur i deklaratës." + +#: src/Statement.php:551 +msgid "Unexpected ordering of clauses." +msgstr "Urdhërimi i papritur i klauzolave." + +#: src/Statements/CreateStatement.php:492 +msgid "The name of the entity was expected." +msgstr "Pritej emri i entitetit." + +#: src/Statements/CreateStatement.php:542 +msgid "A table name was expected." +msgstr "Pritej një emër tabele." + +#: src/Statements/CreateStatement.php:550 +msgid "At least one column definition was expected." +msgstr "Pritej së paku një përcaktim kolone." + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "Pritej një fjalë kyçe \"RETURNS\"." + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "Ky lloj i klauzolës nuk është i vlefshëm në pyetjet me shumë tavolina." + +#: src/Statements/LockStatement.php:116 +#, fuzzy +#| msgid "Unexpected beginning of statement." +msgid "Unexpected end of LOCK statement." +msgstr "Fillim i papritur i deklaratës." + +#: src/Statements/PurgeStatement.php:136 +#, fuzzy +#| msgid "Unexpected keyword." +msgid "Unexpected keyword" +msgstr "Fjalë kyçe e papritur." + +#~ msgid "error #1" +#~ msgstr "gabim # 1" + +#~ msgid "strict error" +#~ msgstr "gabim i rreptë" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/sqlparser.pot b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/sqlparser.pot new file mode 100644 index 0000000000..260f3e7c42 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/sqlparser.pot @@ -0,0 +1,248 @@ +# phpMyAdmin SQL parser translation. +# Copyright (C) 2015 - 2020 phpMyAdmin devel team +# This file is distributed under the same license as the SQL parser package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:09+0100\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "" + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "" + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "" + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "" + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "" + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "" + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "" + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "" + +#: src/Components/CaseExpression.php:225 +msgid "Potential duplicate alias of CASE expression." +msgstr "" + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "" + +#: src/Components/CaseExpression.php:262 +msgid "An alias was expected after AS." +msgstr "" + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" + +#: src/Components/CreateDefinition.php:266 +msgid "A symbol name was expected!" +msgstr "" + +#: src/Components/CreateDefinition.php:301 +msgid "A comma or a closing bracket was expected." +msgstr "" + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "" + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "" + +#: src/Components/ExpressionArray.php:101 +msgid "An expression was expected." +msgstr "" + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +msgid "An alias was expected." +msgstr "" + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "" + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "" + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "" + +#: src/Components/LockExpression.php:91 +msgid "Unexpected end of LOCK expression." +msgstr "" + +#: src/Components/LockExpression.php:199 +msgid "Unexpected end of Lock expression." +msgstr "" + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "" + +#: src/Components/RenameOperation.php:105 +msgid "The old name of the table was expected." +msgstr "" + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "" + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "" + +#: src/Components/RenameOperation.php:151 +msgid "A rename operation was expected." +msgstr "" + +#: src/Components/SetOperation.php:121 +msgid "Missing expression." +msgstr "" + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "" + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "" + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "" + +#: src/Lexer.php:909 +#, php-format +msgid "Ending quote %1$s was expected." +msgstr "" + +#: src/Lexer.php:955 +msgid "Variable name was expected." +msgstr "" + +#: src/Parser.php:451 +msgid "Unexpected beginning of statement." +msgstr "" + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "" + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "" + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "" + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "" + +#: src/Statement.php:407 +msgid "Keyword at end of statement." +msgstr "" + +#: src/Statement.php:551 +msgid "Unexpected ordering of clauses." +msgstr "" + +#: src/Statements/CreateStatement.php:492 +msgid "The name of the entity was expected." +msgstr "" + +#: src/Statements/CreateStatement.php:542 +msgid "A table name was expected." +msgstr "" + +#: src/Statements/CreateStatement.php:550 +msgid "At least one column definition was expected." +msgstr "" + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "" + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "" + +#: src/Statements/LockStatement.php:116 +msgid "Unexpected end of LOCK statement." +msgstr "" + +#: src/Statements/PurgeStatement.php:136 +msgid "Unexpected keyword" +msgstr "" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/sr/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/sr/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..337eeb2f4a Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/sr/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/sr/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/sr/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..d86c1afaa8 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/sr/LC_MESSAGES/sqlparser.po @@ -0,0 +1,292 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2015-10-15 11:25+0200\n" +"Last-Translator: Michal Čihař \n" +"Language-Team: Serbian \n" +"Language: sr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 2.5-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "" + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "" + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "" + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "" + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "" + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "" + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "" + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "" + +#: src/Components/CaseExpression.php:225 +msgid "Potential duplicate alias of CASE expression." +msgstr "" + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "" + +#: src/Components/CaseExpression.php:262 +#, fuzzy +#| msgid "No databases selected." +msgid "An alias was expected after AS." +msgstr "Није изабрана ни једна база." + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" + +#: src/Components/CreateDefinition.php:266 +#, fuzzy +msgid "A symbol name was expected!" +msgstr "Шаблон имена датотеке" + +#: src/Components/CreateDefinition.php:301 +#, fuzzy +#| msgid "No databases selected." +msgid "A comma or a closing bracket was expected." +msgstr "Није изабрана ни једна база." + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "" + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "" + +#: src/Components/ExpressionArray.php:101 +#, fuzzy +#| msgid "No rows selected" +msgid "An expression was expected." +msgstr "Нема одабраних редова" + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +#, fuzzy +#| msgid "No databases selected." +msgid "An alias was expected." +msgstr "Није изабрана ни једна база." + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "" + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "" + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "" + +#: src/Components/LockExpression.php:91 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of LOCK expression." +msgstr "На почетку табеле" + +#: src/Components/LockExpression.php:199 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of Lock expression." +msgstr "На почетку табеле" + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "" + +#: src/Components/RenameOperation.php:105 +#, fuzzy +#| msgid "The number of tables that are open." +msgid "The old name of the table was expected." +msgstr "Број отворених табела." + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "" + +#: src/Components/RenameOperation.php:132 +#, fuzzy +#| msgid "The number of tables that are open." +msgid "The new name of the table was expected." +msgstr "Број отворених табела." + +#: src/Components/RenameOperation.php:151 +#, fuzzy +#| msgid "The row has been deleted." +msgid "A rename operation was expected." +msgstr "Ред је обрисан" + +#: src/Components/SetOperation.php:121 +#, fuzzy +#| msgid "as regular expression" +msgid "Missing expression." +msgstr "као регуларни израз" + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "" + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "" + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "" + +#: src/Lexer.php:909 +#, fuzzy, php-format +msgid "Ending quote %1$s was expected." +msgstr "Табела %s је одбачена" + +#: src/Lexer.php:955 +#, fuzzy +msgid "Variable name was expected." +msgstr "Шаблон имена датотеке" + +#: src/Parser.php:451 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected beginning of statement." +msgstr "На почетку табеле" + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "" + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "" + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "" + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "" + +#: src/Statement.php:407 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Keyword at end of statement." +msgstr "На почетку табеле" + +#: src/Statement.php:551 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected ordering of clauses." +msgstr "На почетку табеле" + +#: src/Statements/CreateStatement.php:492 +#, fuzzy +#| msgid "The number of tables that are open." +msgid "The name of the entity was expected." +msgstr "Број отворених табела." + +#: src/Statements/CreateStatement.php:542 +#, fuzzy +msgid "A table name was expected." +msgstr "Шаблон имена датотеке" + +#: src/Statements/CreateStatement.php:550 +#, fuzzy +#| msgid "The row has been deleted." +msgid "At least one column definition was expected." +msgstr "Ред је обрисан" + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "" + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "" + +#: src/Statements/LockStatement.php:116 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of LOCK statement." +msgstr "На почетку табеле" + +#: src/Statements/PurgeStatement.php:136 +msgid "Unexpected keyword" +msgstr "" + +#, fuzzy +#~| msgid "Error" +#~ msgid "error #1" +#~ msgstr "Грешка" + +#, fuzzy +#~| msgid "Query type" +#~ msgid "strict error" +#~ msgstr "Врста упита" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/sr@latin/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/sr@latin/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..981d1b7f60 Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/sr@latin/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/sr@latin/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/sr@latin/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..8dcc9147b9 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/sr@latin/LC_MESSAGES/sqlparser.po @@ -0,0 +1,296 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2015-10-15 11:24+0200\n" +"Last-Translator: Michal Čihař \n" +"Language-Team: Serbian (latin) \n" +"Language: sr@latin\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 2.5-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "" + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "" + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "" + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "" + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "" + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "" + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "" + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "" + +#: src/Components/CaseExpression.php:225 +msgid "Potential duplicate alias of CASE expression." +msgstr "" + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "" + +#: src/Components/CaseExpression.php:262 +#, fuzzy +#| msgid "No databases selected." +msgid "An alias was expected after AS." +msgstr "Nije izabrana ni jedna baza." + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" + +#: src/Components/CreateDefinition.php:266 +#, fuzzy +#| msgid "Table name template" +msgid "A symbol name was expected!" +msgstr "Šablon imena tabele" + +#: src/Components/CreateDefinition.php:301 +#, fuzzy +#| msgid "No databases selected." +msgid "A comma or a closing bracket was expected." +msgstr "Nije izabrana ni jedna baza." + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "" + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "" + +#: src/Components/ExpressionArray.php:101 +#, fuzzy +#| msgid "No rows selected" +msgid "An expression was expected." +msgstr "Nema odabranih redova" + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +#, fuzzy +#| msgid "No databases selected." +msgid "An alias was expected." +msgstr "Nije izabrana ni jedna baza." + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "" + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "" + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "" + +#: src/Components/LockExpression.php:91 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of LOCK expression." +msgstr "Na početku tabele" + +#: src/Components/LockExpression.php:199 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of Lock expression." +msgstr "Na početku tabele" + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "" + +#: src/Components/RenameOperation.php:105 +#, fuzzy +#| msgid "The number of tables that are open." +msgid "The old name of the table was expected." +msgstr "Broj otvorenih tabela." + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "" + +#: src/Components/RenameOperation.php:132 +#, fuzzy +#| msgid "The number of tables that are open." +msgid "The new name of the table was expected." +msgstr "Broj otvorenih tabela." + +#: src/Components/RenameOperation.php:151 +#, fuzzy +#| msgid "The row has been deleted." +msgid "A rename operation was expected." +msgstr "Red je obrisan" + +#: src/Components/SetOperation.php:121 +#, fuzzy +#| msgid "as regular expression" +msgid "Missing expression." +msgstr "kao regularni izraz" + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "" + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "" + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "" + +#: src/Lexer.php:909 +#, fuzzy, php-format +#| msgid "Event %1$s has been created." +msgid "Ending quote %1$s was expected." +msgstr "Događaj %1$s je kreiran." + +#: src/Lexer.php:955 +#, fuzzy +#| msgid "Table name template" +msgid "Variable name was expected." +msgstr "Šablon imena tabele" + +#: src/Parser.php:451 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected beginning of statement." +msgstr "Na početku tabele" + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "" + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "" + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "" + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "" + +#: src/Statement.php:407 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Keyword at end of statement." +msgstr "Na početku tabele" + +#: src/Statement.php:551 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected ordering of clauses." +msgstr "Na početku tabele" + +#: src/Statements/CreateStatement.php:492 +#, fuzzy +#| msgid "The number of tables that are open." +msgid "The name of the entity was expected." +msgstr "Broj otvorenih tabela." + +#: src/Statements/CreateStatement.php:542 +#, fuzzy +#| msgid "Table name template" +msgid "A table name was expected." +msgstr "Šablon imena tabele" + +#: src/Statements/CreateStatement.php:550 +#, fuzzy +#| msgid "The row has been deleted." +msgid "At least one column definition was expected." +msgstr "Red je obrisan" + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "" + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "" + +#: src/Statements/LockStatement.php:116 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of LOCK statement." +msgstr "Na početku tabele" + +#: src/Statements/PurgeStatement.php:136 +msgid "Unexpected keyword" +msgstr "" + +#, fuzzy +#~| msgid "Error" +#~ msgid "error #1" +#~ msgstr "Greška" + +#, fuzzy +#~| msgid "Gather errors" +#~ msgid "strict error" +#~ msgstr "Prikupljanje grešaka" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/sv/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/sv/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..982f0e8c96 Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/sv/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/sv/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/sv/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..55442551d3 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/sv/LC_MESSAGES/sqlparser.po @@ -0,0 +1,279 @@ +# Automatically generated <>, 2010. +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2015-11-12 10:41+0000\n" +"Last-Translator: Michal Čihař \n" +"Language-Team: Swedish \n" +"Language: sv\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 2.5-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "Ännu inte implementerat." + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "" +"En ny sats hittades, men ingen avgränsare mellan det och den föregående." + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "Okänd operation." + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "%1$d värden var väntat, men hittade %2$d." + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "En inledande hakparentes följt av en uppsättning värden förväntades." + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "En inledande hakparentes förväntades." + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +#, fuzzy +#| msgid "Unexpected token." +msgid "Unexpected keyword." +msgstr "Oväntad token." + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "" + +#: src/Components/CaseExpression.php:225 +msgid "Potential duplicate alias of CASE expression." +msgstr "" + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "Ett alias hittades tidigare." + +#: src/Components/CaseExpression.php:262 +#, fuzzy +#| msgid "An alias was expected." +msgid "An alias was expected after AS." +msgstr "Ett alias förväntades." + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" + +#: src/Components/CreateDefinition.php:266 +#, fuzzy +#| msgid "Variable name was expected." +msgid "A symbol name was expected!" +msgstr "Variabel namn förväntades." + +#: src/Components/CreateDefinition.php:301 +msgid "A comma or a closing bracket was expected." +msgstr "Semikolon eller en avslutande hakparentes förväntades." + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "En avslutande hakparentes förväntades." + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "Okänd datatyp." + +#: src/Components/ExpressionArray.php:101 +msgid "An expression was expected." +msgstr "Ett uttryck förväntades." + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +msgid "An alias was expected." +msgstr "Ett alias förväntades." + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "Oväntad punkt." + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "Oväntad token." + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "En förskjutning förväntades." + +#: src/Components/LockExpression.php:91 +#, fuzzy +#| msgid "Unexpected beginning of statement." +msgid "Unexpected end of LOCK expression." +msgstr "Oväntad början av satsen." + +#: src/Components/LockExpression.php:199 +#, fuzzy +#| msgid "Unexpected beginning of statement." +msgid "Unexpected end of Lock expression." +msgstr "Oväntad början av satsen." + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "Det här alternativet är i konflikt med \"%1$s\"." + +#: src/Components/RenameOperation.php:105 +msgid "The old name of the table was expected." +msgstr "Det gamla namnet på tabellen förväntades." + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "Sökordet \"Till\" förväntades." + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "Det nya namnet på tabellen förväntades." + +#: src/Components/RenameOperation.php:151 +msgid "A rename operation was expected." +msgstr "Ett namnbyte förväntades." + +#: src/Components/SetOperation.php:121 +#, fuzzy +#| msgid "as regular expression" +msgid "Missing expression." +msgstr "som reguljärt uttryck" + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "Oväntade tecken." + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "" + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "Förväntade avgränsare." + +#: src/Lexer.php:909 +#, php-format +msgid "Ending quote %1$s was expected." +msgstr "Slut citat %1$s förväntades." + +#: src/Lexer.php:955 +msgid "Variable name was expected." +msgstr "Variabel namn förväntades." + +#: src/Parser.php:451 +msgid "Unexpected beginning of statement." +msgstr "Oväntad början av satsen." + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "Okänd uttryckstyp." + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "Ingen transaktion startades tidigare." + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "" + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "Okänt nyckelord." + +#: src/Statement.php:407 +#, fuzzy +#| msgid "Unexpected beginning of statement." +msgid "Keyword at end of statement." +msgstr "Oväntad början av satsen." + +#: src/Statement.php:551 +#, fuzzy +#| msgid "Unexpected beginning of statement." +msgid "Unexpected ordering of clauses." +msgstr "Oväntad början av satsen." + +#: src/Statements/CreateStatement.php:492 +msgid "The name of the entity was expected." +msgstr "Namnet på entiteten förväntades." + +#: src/Statements/CreateStatement.php:542 +#, fuzzy +#| msgid "Variable name was expected." +msgid "A table name was expected." +msgstr "Variabel namn förväntades." + +#: src/Statements/CreateStatement.php:550 +msgid "At least one column definition was expected." +msgstr "Minst en kolumndefinition förväntades." + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "Ett nyckelord förväntades." + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "" + +#: src/Statements/LockStatement.php:116 +#, fuzzy +#| msgid "Unexpected beginning of statement." +msgid "Unexpected end of LOCK statement." +msgstr "Oväntad början av satsen." + +#: src/Statements/PurgeStatement.php:136 +#, fuzzy +#| msgid "Unexpected token." +msgid "Unexpected keyword" +msgstr "Oväntad token." + +#, fuzzy +#~| msgid "errors." +#~ msgid "error #1" +#~ msgstr "fel." + +#, fuzzy +#~| msgid "Gather errors" +#~ msgid "strict error" +#~ msgstr "Samla fel" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ta/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ta/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..df0fe9a6aa Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ta/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ta/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ta/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..b8aa5c56aa --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ta/LC_MESSAGES/sqlparser.po @@ -0,0 +1,295 @@ +# phpMyAdmin translation. +# Copyright (C) 2003 - 2010 phpMyAdmin devel team +# This file is distributed under the same license as the phpMyAdmin package. +# FIRST AUTHOR , YEAR. +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2017-07-21 09:33+0000\n" +"Last-Translator: Murshid Ahmed \n" +"Language-Team: Tamil \n" +"Language: ta\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 2.16-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "இன்னும் அமுலாக்கப்படவில்லை." + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "" + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "" + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "" + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "" + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "" + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "எதிர்பாராத சிறப்புச்சொல்." + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "" + +#: src/Components/CaseExpression.php:225 +msgid "Potential duplicate alias of CASE expression." +msgstr "" + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "" + +#: src/Components/CaseExpression.php:262 +#, fuzzy +#| msgid "No tables selected." +msgid "An alias was expected after AS." +msgstr "எந்த தரவுத்தளமும் தேர்ந்தெடுக்கப்படவில்லை." + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" + +#: src/Components/CreateDefinition.php:266 +#, fuzzy +#| msgid "No tables selected." +msgid "A symbol name was expected!" +msgstr "எந்த தரவுத்தளமும் தேர்ந்தெடுக்கப்படவில்லை." + +#: src/Components/CreateDefinition.php:301 +#, fuzzy +#| msgid "No tables selected." +msgid "A comma or a closing bracket was expected." +msgstr "எந்த தரவுத்தளமும் தேர்ந்தெடுக்கப்படவில்லை." + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "" + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "" + +#: src/Components/ExpressionArray.php:101 +#, fuzzy +#| msgid "No rows selected" +msgid "An expression was expected." +msgstr "தெரிவுசெய்யப்பட வரிசைகள் இல்லை" + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +#, fuzzy +#| msgid "No tables selected." +msgid "An alias was expected." +msgstr "எந்த தரவுத்தளமும் தேர்ந்தெடுக்கப்படவில்லை." + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "" + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +#, fuzzy +#| msgid "Unexpected characters on line %s." +msgid "Unexpected token." +msgstr "%sம் வரியில் எதிர்பாராத எழுத்துக்கள் உள்ளன." + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "" + +#: src/Components/LockExpression.php:91 +#, fuzzy +#| msgid "Rate of table open" +msgid "Unexpected end of LOCK expression." +msgstr "திறந்தநிலை அட்டவணைகளின் விழுக்காடு" + +#: src/Components/LockExpression.php:199 +#, fuzzy +#| msgid "Rate of table open" +msgid "Unexpected end of Lock expression." +msgstr "திறந்தநிலை அட்டவணைகளின் விழுக்காடு" + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "" + +#: src/Components/RenameOperation.php:105 +msgid "The old name of the table was expected." +msgstr "" + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "" + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "" + +#: src/Components/RenameOperation.php:151 +#, fuzzy +#| msgid "The row has been deleted." +msgid "A rename operation was expected." +msgstr "இந்நிரைவரிசை அழிக்கப்பட்டது." + +#: src/Components/SetOperation.php:121 +#, fuzzy +#| msgid "as regular expression" +msgid "Missing expression." +msgstr "வழக்கமான வெளிப்பாடு" + +#: src/Lexer.php:244 +#, fuzzy +#| msgid "Unexpected characters on line %s." +msgid "Unexpected character." +msgstr "%sம் வரியில் எதிர்பாராத எழுத்துக்கள் உள்ளன." + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "" + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "" + +#: src/Lexer.php:909 +#, php-format +msgid "Ending quote %1$s was expected." +msgstr "" + +#: src/Lexer.php:955 +msgid "Variable name was expected." +msgstr "" + +#: src/Parser.php:451 +#, fuzzy +#| msgid "Rate of table open" +msgid "Unexpected beginning of statement." +msgstr "திறந்தநிலை அட்டவணைகளின் விழுக்காடு" + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "" + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "" + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "" + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "" + +#: src/Statement.php:407 +#, fuzzy +#| msgid "Rate of table open" +msgid "Keyword at end of statement." +msgstr "திறந்தநிலை அட்டவணைகளின் விழுக்காடு" + +#: src/Statement.php:551 +#, fuzzy +#| msgid "Rate of table open" +msgid "Unexpected ordering of clauses." +msgstr "திறந்தநிலை அட்டவணைகளின் விழுக்காடு" + +#: src/Statements/CreateStatement.php:492 +msgid "The name of the entity was expected." +msgstr "" + +#: src/Statements/CreateStatement.php:542 +#, fuzzy +#| msgid "No tables selected." +msgid "A table name was expected." +msgstr "எந்த தரவுத்தளமும் தேர்ந்தெடுக்கப்படவில்லை." + +#: src/Statements/CreateStatement.php:550 +#, fuzzy +#| msgid "The row has been deleted." +msgid "At least one column definition was expected." +msgstr "இந்நிரைவரிசை அழிக்கப்பட்டது." + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "" + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "" + +#: src/Statements/LockStatement.php:116 +#, fuzzy +#| msgid "Rate of table open" +msgid "Unexpected end of LOCK statement." +msgstr "திறந்தநிலை அட்டவணைகளின் விழுக்காடு" + +#: src/Statements/PurgeStatement.php:136 +#, fuzzy +#| msgid "Unexpected keyword." +msgid "Unexpected keyword" +msgstr "எதிர்பாராத சிறப்புச்சொல்." + +#, fuzzy +#~| msgid "Error" +#~ msgid "error #1" +#~ msgstr "வலு" + +#, fuzzy +#~| msgid "Query error" +#~ msgid "strict error" +#~ msgstr "வினவல் வழு" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/te/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/te/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..2e6fb50c6a Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/te/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/te/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/te/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..469ac8927d --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/te/LC_MESSAGES/sqlparser.po @@ -0,0 +1,298 @@ +# phpMyAdmin translation. +# Copyright (C) 2003 - 2010 phpMyAdmin devel team +# This file is distributed under the same license as the phpMyAdmin package. +# FIRST AUTHOR , YEAR. +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2017-04-12 15:19+0000\n" +"Last-Translator: bhargavi sabbisetty \n" +"Language-Team: Telugu \n" +"Language: te\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 2.13\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "ఇంకా అమలు కాలేదు." + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "ఒక కొత్త వాక్యం కనిపించింది, కానీ దీనికి మరియు మునుపటి దానికి మధ్య ఎటువంటి డీలిమిటర్ లేదు ." + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "గుర్తించబడని మారు ఆపరేషన్." + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "" + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "" + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "" + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "" + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "" + +#: src/Components/CaseExpression.php:225 +msgid "Potential duplicate alias of CASE expression." +msgstr "" + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "" + +#: src/Components/CaseExpression.php:262 +#, fuzzy +#| msgid "Table name" +msgid "An alias was expected after AS." +msgstr "పట్టిక పేరు" + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" + +#: src/Components/CreateDefinition.php:266 +#, fuzzy +#| msgid "Table name" +msgid "A symbol name was expected!" +msgstr "పట్టిక పేరు" + +#: src/Components/CreateDefinition.php:301 +#, fuzzy +#| msgid "Table name" +msgid "A comma or a closing bracket was expected." +msgstr "పట్టిక పేరు" + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "" + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "" + +#: src/Components/ExpressionArray.php:101 +#, fuzzy +#| msgid "Table name" +msgid "An expression was expected." +msgstr "పట్టిక పేరు" + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +#, fuzzy +#| msgid "Table name" +msgid "An alias was expected." +msgstr "పట్టిక పేరు" + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "" + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "" + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "" + +# మొదటి అనువాదము +#: src/Components/LockExpression.php:91 +#, fuzzy +#| msgctxt "short form" +#| msgid "Create table" +msgid "Unexpected end of LOCK expression." +msgstr "పట్టికను సృష్టించు" + +# మొదటి అనువాదము +#: src/Components/LockExpression.php:199 +#, fuzzy +#| msgctxt "short form" +#| msgid "Create table" +msgid "Unexpected end of Lock expression." +msgstr "పట్టికను సృష్టించు" + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "" + +#: src/Components/RenameOperation.php:105 +msgid "The old name of the table was expected." +msgstr "" + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "" + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "" + +#: src/Components/RenameOperation.php:151 +#, fuzzy +#| msgid "Database %s has been dropped." +msgid "A rename operation was expected." +msgstr "%s డేటాబేస్ తుడిచివేయడమైనది" + +#: src/Components/SetOperation.php:121 +#, fuzzy +#| msgid "Last version" +msgid "Missing expression." +msgstr "చివరి కూర్పు" + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "" + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "" + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "" + +# మొదటి అనువాదము +#: src/Lexer.php:909 +#, fuzzy, php-format +#| msgid "Page has been created." +msgid "Ending quote %1$s was expected." +msgstr "పుటను సృష్టించడమైనది" + +#: src/Lexer.php:955 +msgid "Variable name was expected." +msgstr "" + +# మొదటి అనువాదము +#: src/Parser.php:451 +#, fuzzy +#| msgctxt "short form" +#| msgid "Create table" +msgid "Unexpected beginning of statement." +msgstr "పట్టికను సృష్టించు" + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "" + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "" + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "" + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "" + +# మొదటి అనువాదము +#: src/Statement.php:407 +#, fuzzy +#| msgctxt "short form" +#| msgid "Create table" +msgid "Keyword at end of statement." +msgstr "పట్టికను సృష్టించు" + +# మొదటి అనువాదము +#: src/Statement.php:551 +#, fuzzy +#| msgctxt "short form" +#| msgid "Create table" +msgid "Unexpected ordering of clauses." +msgstr "పట్టికను సృష్టించు" + +#: src/Statements/CreateStatement.php:492 +msgid "The name of the entity was expected." +msgstr "" + +#: src/Statements/CreateStatement.php:542 +#, fuzzy +#| msgid "Table name" +msgid "A table name was expected." +msgstr "పట్టిక పేరు" + +#: src/Statements/CreateStatement.php:550 +#, fuzzy +#| msgid "Database %s has been dropped." +msgid "At least one column definition was expected." +msgstr "%s డేటాబేస్ తుడిచివేయడమైనది" + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "" + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "" + +# మొదటి అనువాదము +#: src/Statements/LockStatement.php:116 +#, fuzzy +#| msgctxt "short form" +#| msgid "Create table" +msgid "Unexpected end of LOCK statement." +msgstr "పట్టికను సృష్టించు" + +#: src/Statements/PurgeStatement.php:136 +msgid "Unexpected keyword" +msgstr "" + +#, fuzzy +#~| msgid "Error" +#~ msgid "error #1" +#~ msgstr "పొరపాటు" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/th/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/th/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..7e97abe52b Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/th/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/th/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/th/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..6345cab1e4 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/th/LC_MESSAGES/sqlparser.po @@ -0,0 +1,266 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2019-07-19 00:04+0000\n" +"Last-Translator: Kongfa Warorot \n" +"Language-Team: Thai \n" +"Language: th\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 3.8-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "ยังไม่มีการดำเนินการ" + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "ตรวจพบประพจน์ใหม่ แต่ไม่มีตัวคั่นระหว่างข้อความนี้กับข้อความก่อนหน้า" + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "ไม่รู้จักการปฏิบัติการนอกเหนือจากนี้" + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "ค่าของ %1$d ได้รับการคาดเดา แต่สิ่งที่พบคือ %2$d" + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "เปิดวงเล็บเหลี่ยมแล้วตามด้วยชุดของค่าที่จะคาดเดา" + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "วงเล็บเหลี่ยมเปิดได้รับการคาดเดา" + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "คำสำคัญที่ไม่ได้รับการคาดเดา" + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "จุดสิ้นสุดนิพจน์ CASE ไม่ได้รับการคาดเดา" + +#: src/Components/CaseExpression.php:225 +#, fuzzy +#| msgid "Unexpected end of CASE expression" +msgid "Potential duplicate alias of CASE expression." +msgstr "จุดสิ้นสุดนิพจน์ CASE ไม่ได้รับการคาดเดา" + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "ชื่อ alias มีอยู่ก่อนแล้ว" + +#: src/Components/CaseExpression.php:262 +#, fuzzy +#| msgid "An alias was expected." +msgid "An alias was expected after AS." +msgstr "ตัวแทนได้รับการคาดเดา" + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" +"ชื่อสัญลักษณ์ได้รับการคาดเดาแล้ว " +"คำสำคัญที่สงวนไว้ไม่สามารถใช้เป็นชื่อคอลัมน์โดยไม่มีอัญประกาศกลับหลังได้" + +#: src/Components/CreateDefinition.php:266 +msgid "A symbol name was expected!" +msgstr "ชื่อสัญลักษณ์ได้รับการคาดเดา!" + +#: src/Components/CreateDefinition.php:301 +msgid "A comma or a closing bracket was expected." +msgstr "จุลภาค หรือ วงเล็บปิด ได้รับการคาดเดา" + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "วงเล็บปิดได้รับการคาดเดา" + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "ไม่รู้จักชนิดข้อมูล" + +#: src/Components/ExpressionArray.php:101 +msgid "An expression was expected." +msgstr "หนึ่งนิพจน์ได้รับการคาดเดา" + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +msgid "An alias was expected." +msgstr "ตัวแทนได้รับการคาดเดา" + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "จุด ไม่ได้รับการคาดเดา" + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "โทเค็นที่ไม่ได้คาดหวังไว้" + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "หนึ่งออฟเซ็ตได้รับการคาดเดา" + +#: src/Components/LockExpression.php:91 +#, fuzzy +#| msgid "Unexpected end of CASE expression" +msgid "Unexpected end of LOCK expression." +msgstr "จุดสิ้นสุดนิพจน์ CASE ไม่ได้รับการคาดเดา" + +#: src/Components/LockExpression.php:199 +#, fuzzy +#| msgid "Unexpected end of CASE expression" +msgid "Unexpected end of Lock expression." +msgstr "จุดสิ้นสุดนิพจน์ CASE ไม่ได้รับการคาดเดา" + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "ตัวเลือกนี้ขัดแย้งกับ %1$s" + +#: src/Components/RenameOperation.php:105 +msgid "The old name of the table was expected." +msgstr "ชื่อเดิมของตารางได้รับการคาดเดา" + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "คำสำคัญ \"TO\" ได้รับการคาดเดา" + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "ชื่อตารางใหม่ได้รับการคาดเดา" + +#: src/Components/RenameOperation.php:151 +msgid "A rename operation was expected." +msgstr "การเปลี่ยนชื่อได้รับการคาดเดา" + +#: src/Components/SetOperation.php:121 +msgid "Missing expression." +msgstr "นิพจน์ขาดหาย" + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "ตัวอักษรที่คาดเดาไม่ได้" + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "วรรค(อาจจะมากกว่าหนึ่ง) ได้รับการคาดเดาก่อนตัวคั่น" + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "ตัวคั่นได้รับการคาดเดา" + +#: src/Lexer.php:909 +#, php-format +msgid "Ending quote %1$s was expected." +msgstr "อัญประกาศปิด %1$s ได้รับการคาดเดา" + +#: src/Lexer.php:955 +msgid "Variable name was expected." +msgstr "ชื่อตัวแปรได้รับการคาดเดา" + +#: src/Parser.php:451 +msgid "Unexpected beginning of statement." +msgstr "ไม่อาจคาดเดาจุดเริ่มต้นของประพจน์" + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "ไม่รู้จักชนิดของประพจน์" + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "ไม่มีข้อมูลเข้าออกได้เริ่มต้นมาก่อน" + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "ชนิดของประโยคนี้ถูกวิเคราะห์มาแล้วก่อนหน้านี้" + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "ไม่รู้จักชนิดของคีย์เวิร์ด" + +#: src/Statement.php:407 +msgid "Keyword at end of statement." +msgstr "คีย์เวิร์ดในตอนท้ายของคำสั่ง" + +#: src/Statement.php:551 +msgid "Unexpected ordering of clauses." +msgstr "การเรียงของประโยคที่ไม่ได้คาดหวังไว้" + +#: src/Statements/CreateStatement.php:492 +msgid "The name of the entity was expected." +msgstr "ชื่อเอนทิติได้รับการคาดหวัง" + +#: src/Statements/CreateStatement.php:542 +msgid "A table name was expected." +msgstr "ชื่อตารางได้รับการคาดหวัง" + +#: src/Statements/CreateStatement.php:550 +msgid "At least one column definition was expected." +msgstr "การกำหนดคอลัมน์อย่างน้อยหนึ่งคอลัมน์ได้รับการคาดหวัง" + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "คีย์เวิร์ด \"RETURNS\" ได้รับการคาดหวัง" + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "ประโยคชนิดนี้ไม่ถูกต้องในการเรียกใช้แบบหลายตาราง" + +#: src/Statements/LockStatement.php:116 +#, fuzzy +#| msgid "Unexpected beginning of statement." +msgid "Unexpected end of LOCK statement." +msgstr "ไม่อาจคาดเดาจุดเริ่มต้นของประพจน์" + +#: src/Statements/PurgeStatement.php:136 +#, fuzzy +#| msgid "Unexpected keyword." +msgid "Unexpected keyword" +msgstr "คำสำคัญที่ไม่ได้รับการคาดเดา" + +#~ msgid "error #1" +#~ msgstr "ผิดพลาด #1" + +#~ msgid "strict error" +#~ msgstr "ข้อผิดพลาดที่ครัดเคร้ง" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/tk/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/tk/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..add4581e29 Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/tk/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/tk/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/tk/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..4280f1db8a --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/tk/LC_MESSAGES/sqlparser.po @@ -0,0 +1,264 @@ +# phpMyAdmin translation. +# Copyright (C) 2003 - 2011 phpMyAdmin devel team +# This file is distributed under the same license as the phpMyAdmin package. +# FIRST AUTHOR , YEAR. +# +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2013-05-07 17:12+0200\n" +"Last-Translator: Michal Čihař \n" +"Language-Team: Turkmen \n" +"Language: tk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 1.6-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "" + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "" + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "" + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "" + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "" + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "" + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "" + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "" + +#: src/Components/CaseExpression.php:225 +msgid "Potential duplicate alias of CASE expression." +msgstr "" + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "" + +#: src/Components/CaseExpression.php:262 +#, fuzzy +#| msgid "Database %1$s has been created." +msgid "An alias was expected after AS." +msgstr "%1$s maglumatlar ulgamy döredildi." + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" + +#: src/Components/CreateDefinition.php:266 +#, fuzzy +#| msgid "Database %1$s has been created." +msgid "A symbol name was expected!" +msgstr "%1$s maglumatlar ulgamy döredildi." + +#: src/Components/CreateDefinition.php:301 +#, fuzzy +#| msgid "Database %1$s has been created." +msgid "A comma or a closing bracket was expected." +msgstr "%1$s maglumatlar ulgamy döredildi." + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "" + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "" + +#: src/Components/ExpressionArray.php:101 +msgid "An expression was expected." +msgstr "" + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +#, fuzzy +#| msgid "Database %1$s has been created." +msgid "An alias was expected." +msgstr "%1$s maglumatlar ulgamy döredildi." + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "" + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "" + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "" + +#: src/Components/LockExpression.php:91 +msgid "Unexpected end of LOCK expression." +msgstr "" + +#: src/Components/LockExpression.php:199 +msgid "Unexpected end of Lock expression." +msgstr "" + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "" + +#: src/Components/RenameOperation.php:105 +msgid "The old name of the table was expected." +msgstr "" + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "" + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "" + +#: src/Components/RenameOperation.php:151 +#, fuzzy +#| msgid "Database %1$s has been created." +msgid "A rename operation was expected." +msgstr "%1$s maglumatlar ulgamy döredildi." + +#: src/Components/SetOperation.php:121 +msgid "Missing expression." +msgstr "" + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "" + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "" + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "" + +#: src/Lexer.php:909 +#, php-format +msgid "Ending quote %1$s was expected." +msgstr "" + +#: src/Lexer.php:955 +msgid "Variable name was expected." +msgstr "" + +#: src/Parser.php:451 +msgid "Unexpected beginning of statement." +msgstr "" + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "" + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "" + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "" + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "" + +#: src/Statement.php:407 +msgid "Keyword at end of statement." +msgstr "" + +#: src/Statement.php:551 +msgid "Unexpected ordering of clauses." +msgstr "" + +#: src/Statements/CreateStatement.php:492 +msgid "The name of the entity was expected." +msgstr "" + +#: src/Statements/CreateStatement.php:542 +#, fuzzy +#| msgid "Database %1$s has been created." +msgid "A table name was expected." +msgstr "%1$s maglumatlar ulgamy döredildi." + +#: src/Statements/CreateStatement.php:550 +#, fuzzy +#| msgid "Database %1$s has been created." +msgid "At least one column definition was expected." +msgstr "%1$s maglumatlar ulgamy döredildi." + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "" + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "" + +#: src/Statements/LockStatement.php:116 +msgid "Unexpected end of LOCK statement." +msgstr "" + +#: src/Statements/PurgeStatement.php:136 +msgid "Unexpected keyword" +msgstr "" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/tr/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/tr/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..e4f9d33cec Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/tr/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/tr/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/tr/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..ee895eb22b --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/tr/LC_MESSAGES/sqlparser.po @@ -0,0 +1,255 @@ +# Automatically generated <>, 2010. +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2020-03-23 20:53+0000\n" +"Last-Translator: Burak Yavuz \n" +"Language-Team: Turkish \n" +"Language: tr\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n > 1;\n" +"X-Generator: Weblate 4.0-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "Henüz uygulanmadı." + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "" +"Yeni bir ifade bulundu, ancak bu ve önceki arasında hiç sınırlayıcı yok." + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "Yeni bir alter işlemi başlamadan önce eksik virgül." + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "Kategorilenmemiş değiştirme işlemi." + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "%1$d değer beklenmekte, ancak %2$d bulundu." + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "Açık bir köşeli parantez ardından bir grup değer beklenmekte." + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "Açık bir köşeli parantez beklenmekte." + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "Beklenmeyen anahtar kelime." + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "Beklenmeyen CASE ifadesi sonu" + +#: src/Components/CaseExpression.php:225 +msgid "Potential duplicate alias of CASE expression." +msgstr "CASE ifadesinin olası kopya kod adı." + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "AS'den sonra beklenen ancak var olan bir kod adı " + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "Bir kodadı daha önce bulundu." + +#: src/Components/CaseExpression.php:262 +msgid "An alias was expected after AS." +msgstr "AS'den sonra bir kod adı beklenmekte." + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" +"Bir sembol adı beklenmekte! Ayrılmış bir anahtar kelime ters eğik tırnakları " +"olmadan bir sütun adı olarak kullanılamaz." + +#: src/Components/CreateDefinition.php:266 +msgid "A symbol name was expected!" +msgstr "Bir sembol adı beklenmekte!" + +#: src/Components/CreateDefinition.php:301 +msgid "A comma or a closing bracket was expected." +msgstr "Bir virgül ya da kapalı bir köşeli parantez beklenmekte." + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "Kapalı bir köşeli parantez beklenmekte." + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "Tanınmayan veri türü." + +#: src/Components/ExpressionArray.php:101 +msgid "An expression was expected." +msgstr "Bir ifade beklenmekte." + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +msgid "An alias was expected." +msgstr "Bir kodadı beklenmekte." + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "Beklenmeyen nokta." + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "Beklenmeyen belirteç." + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "Bir karşılık beklenmekte." + +#: src/Components/LockExpression.php:91 +msgid "Unexpected end of LOCK expression." +msgstr "Beklenmeyen LOCK ifadesi sonu." + +#: src/Components/LockExpression.php:199 +msgid "Unexpected end of Lock expression." +msgstr "Beklenmeyen LOCK ifadesi sonu." + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "Bu seçenek \"%1$s\" ile çakışıyor." + +#: src/Components/RenameOperation.php:105 +msgid "The old name of the table was expected." +msgstr "Tablonun eski adı beklenmekte." + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "\"TO\" anahtar kelimesi beklenmekte." + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "Tablonun yeni adı beklenmekte." + +#: src/Components/RenameOperation.php:151 +msgid "A rename operation was expected." +msgstr "Yeniden adlandırma işlemi beklenmekte." + +#: src/Components/SetOperation.php:121 +msgid "Missing expression." +msgstr "Eksik ifade." + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "Beklenmeyen karakter." + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "Sınırlayıcıdan önce beklenen boşluk(lar)." + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "Beklenen sınırlayıcı." + +#: src/Lexer.php:909 +#, php-format +msgid "Ending quote %1$s was expected." +msgstr "Sonlandırma tırnak işareti %1$s beklenmekte." + +#: src/Lexer.php:955 +msgid "Variable name was expected." +msgstr "Değişken adı beklenmekte." + +#: src/Parser.php:451 +msgid "Unexpected beginning of statement." +msgstr "Beklenmeyen ifade başlangıcı." + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "Tanınmayan ifade türü." + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "Daha önce hiç işlem başlatılmadı." + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "Bu tür yan tümce daha önce ayrıştırıldı." + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "Tanınmayan anahtar kelime." + +#: src/Statement.php:407 +msgid "Keyword at end of statement." +msgstr "İfade sonundaki anahtar kelime." + +#: src/Statement.php:551 +msgid "Unexpected ordering of clauses." +msgstr "Beklenmeyen yan tümce sıralaması." + +#: src/Statements/CreateStatement.php:492 +msgid "The name of the entity was expected." +msgstr "Varlığın adı beklenmekte." + +#: src/Statements/CreateStatement.php:542 +msgid "A table name was expected." +msgstr "Tablo adı beklenmekte." + +#: src/Statements/CreateStatement.php:550 +msgid "At least one column definition was expected." +msgstr "En az bir sütun tanımı beklenmekte." + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "\"RETURNS\" anahtar kelimesi beklenmekte." + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "Bu tür yan tümce Çoklu tablo sorgularında geçerli değil." + +#: src/Statements/LockStatement.php:116 +msgid "Unexpected end of LOCK statement." +msgstr "Beklenmeyen LOCK deyimi sonu." + +#: src/Statements/PurgeStatement.php:136 +msgid "Unexpected keyword" +msgstr "Beklenmeyen anahtar kelime" + +#~ msgid "error #1" +#~ msgstr "hata #1" + +#~ msgid "strict error" +#~ msgstr "kesin hata" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/tt/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/tt/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..89a3bd1d4b Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/tt/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/tt/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/tt/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..b870eb617f --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/tt/LC_MESSAGES/sqlparser.po @@ -0,0 +1,291 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2015-10-15 11:22+0200\n" +"Last-Translator: Michal Čihař \n" +"Language-Team: Tatar \n" +"Language: tt\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 2.5-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "" + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "" + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "" + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "" + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "" + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "" + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "" + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "" + +#: src/Components/CaseExpression.php:225 +msgid "Potential duplicate alias of CASE expression." +msgstr "" + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "" + +#: src/Components/CaseExpression.php:262 +#, fuzzy +#| msgid "No databases selected." +msgid "An alias was expected after AS." +msgstr "Biremlek saylanmağan." + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" + +#: src/Components/CreateDefinition.php:266 +#, fuzzy +msgid "A symbol name was expected!" +msgstr "Birem adınıñ tözeleşe" + +#: src/Components/CreateDefinition.php:301 +#, fuzzy +#| msgid "No databases selected." +msgid "A comma or a closing bracket was expected." +msgstr "Biremlek saylanmağan." + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "" + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "" + +#: src/Components/ExpressionArray.php:101 +#, fuzzy +#| msgid "No rows selected" +msgid "An expression was expected." +msgstr "Kertemnär sayladı" + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +#, fuzzy +#| msgid "No databases selected." +msgid "An alias was expected." +msgstr "Biremlek saylanmağan." + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "" + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "" + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "" + +#: src/Components/LockExpression.php:91 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of LOCK expression." +msgstr "Tüşämä Başına" + +#: src/Components/LockExpression.php:199 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of Lock expression." +msgstr "Tüşämä Başına" + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "" + +#: src/Components/RenameOperation.php:105 +#, fuzzy +#| msgid "The number of tables that are open." +msgid "The old name of the table was expected." +msgstr "Açıq toruçı tüşämä sanı." + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "" + +#: src/Components/RenameOperation.php:132 +#, fuzzy +#| msgid "The number of tables that are open." +msgid "The new name of the table was expected." +msgstr "Açıq toruçı tüşämä sanı." + +#: src/Components/RenameOperation.php:151 +#, fuzzy +#| msgid "The row has been deleted." +msgid "A rename operation was expected." +msgstr "Bu yazma salınğan buldı" + +#: src/Components/SetOperation.php:121 +#, fuzzy +#| msgid "as regular expression" +msgid "Missing expression." +msgstr "regexp kileş" + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "" + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "" + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "" + +#: src/Lexer.php:909 +#, fuzzy, php-format +msgid "Ending quote %1$s was expected." +msgstr "\"%s\" atlı tüşämä beterelde" + +#: src/Lexer.php:955 +#, fuzzy +msgid "Variable name was expected." +msgstr "Birem adınıñ tözeleşe" + +#: src/Parser.php:451 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected beginning of statement." +msgstr "Tüşämä Başına" + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "" + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "" + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "" + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "" + +#: src/Statement.php:407 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Keyword at end of statement." +msgstr "Tüşämä Başına" + +#: src/Statement.php:551 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected ordering of clauses." +msgstr "Tüşämä Başına" + +#: src/Statements/CreateStatement.php:492 +#, fuzzy +#| msgid "The number of tables that are open." +msgid "The name of the entity was expected." +msgstr "Açıq toruçı tüşämä sanı." + +#: src/Statements/CreateStatement.php:542 +#, fuzzy +msgid "A table name was expected." +msgstr "Birem adınıñ tözeleşe" + +#: src/Statements/CreateStatement.php:550 +#, fuzzy +#| msgid "The row has been deleted." +msgid "At least one column definition was expected." +msgstr "Bu yazma salınğan buldı" + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "" + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "" + +#: src/Statements/LockStatement.php:116 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of LOCK statement." +msgstr "Tüşämä Başına" + +#: src/Statements/PurgeStatement.php:136 +msgid "Unexpected keyword" +msgstr "" + +#, fuzzy +#~| msgid "Error" +#~ msgid "error #1" +#~ msgstr "Xata" + +#, fuzzy +#~| msgid "Query type" +#~ msgid "strict error" +#~ msgstr "Soraw töre" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ug/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ug/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..f17dfb6895 Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ug/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ug/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ug/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..3e14fc25b1 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ug/LC_MESSAGES/sqlparser.po @@ -0,0 +1,290 @@ +# phpMyAdmin translation. +# Copyright (C) 2003 - 2010 phpMyAdmin devel team +# This file is distributed under the same license as the phpMyAdmin package. +# FIRST AUTHOR , YEAR. +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2020-08-03 18:42+0000\n" +"Last-Translator: Abdusalam <1810010207@s.upc.edu.cn>\n" +"Language-Team: Uyghur \n" +"Language: ug\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 4.2-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "تېخى يولغا قويۇلمىدى." + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "" +"يېڭى بايانات تېپىلدى ، ئەمما ئۇنىڭ بىلەن ئالدىنقىسىنىڭ ئوتتۇرىسىدا ئېنىقلىما " +"يوق." + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "يېڭى ئۆزگەرتىش مەشغۇلاتى باشلىنىشتىن بۇرۇن پەش يوقاپ كەتتى." + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "تونۇلمىغان ئۆزگەرتىش مەشغۇلاتى." + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "" + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "" + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "" + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "" + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "" + +#: src/Components/CaseExpression.php:225 +msgid "Potential duplicate alias of CASE expression." +msgstr "" + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "" + +#: src/Components/CaseExpression.php:262 +#, fuzzy +#| msgid "With selected:" +msgid "An alias was expected after AS." +msgstr "تاللانغىنى:" + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" + +#: src/Components/CreateDefinition.php:266 +#, fuzzy +#| msgid "With selected:" +msgid "A symbol name was expected!" +msgstr "تاللانغىنى:" + +#: src/Components/CreateDefinition.php:301 +#, fuzzy +#| msgid "With selected:" +msgid "A comma or a closing bracket was expected." +msgstr "تاللانغىنى:" + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "" + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "" + +#: src/Components/ExpressionArray.php:101 +#, fuzzy +#| msgid "With selected:" +msgid "An expression was expected." +msgstr "تاللانغىنى:" + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +#, fuzzy +#| msgid "With selected:" +msgid "An alias was expected." +msgstr "تاللانغىنى:" + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "" + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "" + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "" + +#: src/Components/LockExpression.php:91 +#, fuzzy +#| msgid "Show dimension of tables" +msgid "Unexpected end of LOCK expression." +msgstr "جەدېۋەلنىڭ چوڭ-كىچىكلىكىنى كۆرسىتىش" + +#: src/Components/LockExpression.php:199 +#, fuzzy +#| msgid "Show dimension of tables" +msgid "Unexpected end of Lock expression." +msgstr "جەدېۋەلنىڭ چوڭ-كىچىكلىكىنى كۆرسىتىش" + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "" + +#: src/Components/RenameOperation.php:105 +msgid "The old name of the table was expected." +msgstr "" + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "" + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "" + +#: src/Components/RenameOperation.php:151 +#, fuzzy +#| msgid "The bookmark has been deleted." +msgid "A rename operation was expected." +msgstr "خەتكۈچ ئۆچۈرۈلدى." + +#: src/Components/SetOperation.php:121 +#, fuzzy +#| msgid "as regular expression" +msgid "Missing expression." +msgstr "مۇنتىزىم ئىپادە" + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "" + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "" + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "" + +#: src/Lexer.php:909 +#, fuzzy, php-format +#| msgid "Database %1$s has been created." +msgid "Ending quote %1$s was expected." +msgstr "%1$s ساندان غەلبىلىك قۇرۇلدى" + +#: src/Lexer.php:955 +msgid "Variable name was expected." +msgstr "" + +#: src/Parser.php:451 +#, fuzzy +#| msgid "Show dimension of tables" +msgid "Unexpected beginning of statement." +msgstr "جەدېۋەلنىڭ چوڭ-كىچىكلىكىنى كۆرسىتىش" + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "" + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "" + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "" + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "" + +#: src/Statement.php:407 +#, fuzzy +#| msgid "Show dimension of tables" +msgid "Keyword at end of statement." +msgstr "جەدېۋەلنىڭ چوڭ-كىچىكلىكىنى كۆرسىتىش" + +#: src/Statement.php:551 +#, fuzzy +#| msgid "Show dimension of tables" +msgid "Unexpected ordering of clauses." +msgstr "جەدېۋەلنىڭ چوڭ-كىچىكلىكىنى كۆرسىتىش" + +#: src/Statements/CreateStatement.php:492 +msgid "The name of the entity was expected." +msgstr "" + +#: src/Statements/CreateStatement.php:542 +#, fuzzy +#| msgid "With selected:" +msgid "A table name was expected." +msgstr "تاللانغىنى:" + +#: src/Statements/CreateStatement.php:550 +#, fuzzy +#| msgid "The bookmark has been deleted." +msgid "At least one column definition was expected." +msgstr "خەتكۈچ ئۆچۈرۈلدى." + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "" + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "" + +#: src/Statements/LockStatement.php:116 +#, fuzzy +#| msgid "Show dimension of tables" +msgid "Unexpected end of LOCK statement." +msgstr "جەدېۋەلنىڭ چوڭ-كىچىكلىكىنى كۆرسىتىش" + +#: src/Statements/PurgeStatement.php:136 +msgid "Unexpected keyword" +msgstr "" + +#~ msgid "error #1" +#~ msgstr "خاتالىق #1" + +#, fuzzy +#~| msgid "Query" +#~ msgid "strict error" +#~ msgstr "تەكشۈرۈش" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/uk/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/uk/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..36311c9430 Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/uk/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/uk/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/uk/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..83d58062f5 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/uk/LC_MESSAGES/sqlparser.po @@ -0,0 +1,255 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2021-03-10 16:02+0000\n" +"Last-Translator: Tymofij Lytvynenko \n" +"Language-Team: Ukrainian \n" +"Language: uk\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" +"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" +"X-Generator: Weblate 4.5.2-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "Ще не реалізовано." + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "Новий оператор знайдено, але між ним і попереднім немає роздільника." + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "Відсутня кома перед початком нової операції зміни." + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "Нерозпізнана операція зміни." + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "Очікувалося %1$d значення, а знайдено %2$d ." + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "Очікувалося відкриття дужки з набором значень." + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "Очікувалося відкриття дужки." + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "Неочікуване ключове слово." + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "Неочікуваний кінець виразу CASE" + +#: src/Components/CaseExpression.php:225 +msgid "Potential duplicate alias of CASE expression." +msgstr "Потенційний повторюваний псевдонім виразу CASE." + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "Псевдонім очікується після AS, але отримано " + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "Псевдонім був раніше знайдений." + +#: src/Components/CaseExpression.php:262 +msgid "An alias was expected after AS." +msgstr "Псевдонім очікувався після AS." + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" +"Очікувалося ім'я ідентифікатора! Зарезервоване ключове слово не може " +"використовуватися, як ім'я стовпця, без зворотніх лапок." + +#: src/Components/CreateDefinition.php:266 +msgid "A symbol name was expected!" +msgstr "Очікувалося ім'я ідентифікатора!" + +#: src/Components/CreateDefinition.php:301 +msgid "A comma or a closing bracket was expected." +msgstr "Очікувалося, кома або закривна дужка." + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "Очікувалася закривна дужка." + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "Нерозпізнаний тип даних." + +#: src/Components/ExpressionArray.php:101 +msgid "An expression was expected." +msgstr "Очікувався оператор." + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +msgid "An alias was expected." +msgstr "Очікувався псевдонім." + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "Неочікувана крапка." + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "Неочікуваний маркер." + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "Очікувалося зміщення." + +#: src/Components/LockExpression.php:91 +msgid "Unexpected end of LOCK expression." +msgstr "Неочікуваний кінець виразу LOCK." + +#: src/Components/LockExpression.php:199 +msgid "Unexpected end of Lock expression." +msgstr "Несподіваний кінець виразу Lock." + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "Цей параметр конфліктує з \"%1$s\"." + +#: src/Components/RenameOperation.php:105 +msgid "The old name of the table was expected." +msgstr "Очікувалося стара назва таблиці." + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "Очікувалося ключове слово \"TO\"." + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "Очікувалося нове ім'я таблиці." + +#: src/Components/RenameOperation.php:151 +msgid "A rename operation was expected." +msgstr "Очікувалася операція перейменування." + +#: src/Components/SetOperation.php:121 +msgid "Missing expression." +msgstr "Відсутній оператор." + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "Неочікуваний символ." + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "Очікувалося пробіл(и) перед роздільником." + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "Очікувалося роздільник." + +#: src/Lexer.php:909 +#, php-format +msgid "Ending quote %1$s was expected." +msgstr "Очікувалося закриваюча лапка %1$s ." + +#: src/Lexer.php:955 +msgid "Variable name was expected." +msgstr "Очікувалося ім'я змінної." + +#: src/Parser.php:451 +msgid "Unexpected beginning of statement." +msgstr "Неочікуваний початок виразу оператора." + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "Нерозпізнаний тип оператора." + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "Жодна транзакція не була раніше запущена." + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "Цей тип оператора був раніше проаналізований." + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "Нерозпізнане ключове слово." + +#: src/Statement.php:407 +msgid "Keyword at end of statement." +msgstr "Ключове слово в кінці виразу." + +#: src/Statement.php:551 +msgid "Unexpected ordering of clauses." +msgstr "Неочікуваний порядок операторів." + +#: src/Statements/CreateStatement.php:492 +msgid "The name of the entity was expected." +msgstr "Очікувалося ім'я об'єкта." + +#: src/Statements/CreateStatement.php:542 +msgid "A table name was expected." +msgstr "Очікувалося ім'я таблиці." + +#: src/Statements/CreateStatement.php:550 +msgid "At least one column definition was expected." +msgstr "Очікувалося, принаймні одне визначення стовпчика." + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "Очікувалося ключове слово \"RETURNS\"." + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "Цей тип оператора не діє для запитів групових таблиць." + +#: src/Statements/LockStatement.php:116 +msgid "Unexpected end of LOCK statement." +msgstr "Несподіваний кінець оператора LOCK." + +#: src/Statements/PurgeStatement.php:136 +msgid "Unexpected keyword" +msgstr "Неочікуване ключове слово" + +#~ msgid "error #1" +#~ msgstr "помилка #1" + +#~ msgid "strict error" +#~ msgstr "недопустима помилка" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ur/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ur/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..605b5a5f3b Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ur/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ur/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ur/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..4fd9c0400d --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/ur/LC_MESSAGES/sqlparser.po @@ -0,0 +1,294 @@ +# phpMyAdmin translation. +# Copyright (C) 2003 - 2010 phpMyAdmin devel team +# This file is distributed under the same license as the phpMyAdmin package. +# FIRST AUTHOR , YEAR. +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2015-10-15 11:05+0200\n" +"Last-Translator: Michal Čihař \n" +"Language-Team: Urdu \n" +"Language: ur\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Weblate 2.5-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "" + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "" + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:302 +#, fuzzy +#| msgid "Iconic table operations" +msgid "Unrecognized alter operation." +msgstr "شبیہاتی جدول عملیات" + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "" + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "" + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "" + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "" + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "" + +#: src/Components/CaseExpression.php:225 +msgid "Potential duplicate alias of CASE expression." +msgstr "" + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "" + +#: src/Components/CaseExpression.php:262 +#, fuzzy +#| msgid "Removing Selected Users" +msgid "An alias was expected after AS." +msgstr "منتخب صارفین حذف کیے جا رہے ہیں" + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" + +#: src/Components/CreateDefinition.php:266 +#, fuzzy +#| msgid "Table name template" +msgid "A symbol name was expected!" +msgstr "جدول نام سانچا" + +#: src/Components/CreateDefinition.php:301 +#, fuzzy +#| msgid "Removing Selected Users" +msgid "A comma or a closing bracket was expected." +msgstr "منتخب صارفین حذف کیے جا رہے ہیں" + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "" + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "" + +#: src/Components/ExpressionArray.php:101 +#, fuzzy +#| msgid "Removing Selected Users" +msgid "An expression was expected." +msgstr "منتخب صارفین حذف کیے جا رہے ہیں" + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +#, fuzzy +#| msgid "Removing Selected Users" +msgid "An alias was expected." +msgstr "منتخب صارفین حذف کیے جا رہے ہیں" + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "" + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "" + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "" + +#: src/Components/LockExpression.php:91 +#, fuzzy +#| msgid "Show dimension of tables" +msgid "Unexpected end of LOCK expression." +msgstr "ٹیبلز کی جسامت دیکھیں" + +#: src/Components/LockExpression.php:199 +#, fuzzy +#| msgid "Show dimension of tables" +msgid "Unexpected end of Lock expression." +msgstr "ٹیبلز کی جسامت دیکھیں" + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "" + +#: src/Components/RenameOperation.php:105 +msgid "The old name of the table was expected." +msgstr "" + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "" + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "" + +#: src/Components/RenameOperation.php:151 +#, fuzzy +#| msgid "The bookmark has been deleted." +msgid "A rename operation was expected." +msgstr "نشانی حذف ہو چکی ہے۔" + +#: src/Components/SetOperation.php:121 +#, fuzzy +#| msgid "as regular expression" +msgid "Missing expression." +msgstr "بطور باقاعدہ اظہار" + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "" + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "" + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "" + +#: src/Lexer.php:909 +#, fuzzy, php-format +#| msgid "Database %1$s has been created." +msgid "Ending quote %1$s was expected." +msgstr "کوائفیہ $1%s بن گئی ہے۔" + +#: src/Lexer.php:955 +#, fuzzy +#| msgid "Table name template" +msgid "Variable name was expected." +msgstr "جدول نام سانچا" + +#: src/Parser.php:451 +#, fuzzy +#| msgid "Show dimension of tables" +msgid "Unexpected beginning of statement." +msgstr "ٹیبلز کی جسامت دیکھیں" + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "" + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "" + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "" + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "" + +#: src/Statement.php:407 +#, fuzzy +#| msgid "Show dimension of tables" +msgid "Keyword at end of statement." +msgstr "ٹیبلز کی جسامت دیکھیں" + +#: src/Statement.php:551 +#, fuzzy +#| msgid "Show dimension of tables" +msgid "Unexpected ordering of clauses." +msgstr "ٹیبلز کی جسامت دیکھیں" + +#: src/Statements/CreateStatement.php:492 +msgid "The name of the entity was expected." +msgstr "" + +#: src/Statements/CreateStatement.php:542 +#, fuzzy +#| msgid "Table name template" +msgid "A table name was expected." +msgstr "جدول نام سانچا" + +#: src/Statements/CreateStatement.php:550 +#, fuzzy +#| msgid "The bookmark has been deleted." +msgid "At least one column definition was expected." +msgstr "نشانی حذف ہو چکی ہے۔" + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "" + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "" + +#: src/Statements/LockStatement.php:116 +#, fuzzy +#| msgid "Show dimension of tables" +msgid "Unexpected end of LOCK statement." +msgstr "ٹیبلز کی جسامت دیکھیں" + +#: src/Statements/PurgeStatement.php:136 +msgid "Unexpected keyword" +msgstr "" + +#, fuzzy +#~| msgid "Error" +#~ msgid "error #1" +#~ msgstr "نقص" + +#, fuzzy +#~| msgid "Gather errors" +#~ msgid "strict error" +#~ msgstr "نقائص اکھٹی کریں" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/uz/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/uz/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..bf68fbd85e Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/uz/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/uz/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/uz/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..d659901114 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/uz/LC_MESSAGES/sqlparser.po @@ -0,0 +1,297 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2015-10-15 11:39+0200\n" +"Last-Translator: Michal Čihař \n" +"Language-Team: Uzbek \n" +"Language: uz\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n > 1);\n" +"X-Generator: Weblate 2.5-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "" + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "" + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:302 +#, fuzzy +#| msgid "Iconic table operations" +msgid "Unrecognized alter operation." +msgstr "Жадвал операцияларини пиктограммалар ёрдамида амалга ошириш" + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "" + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "" + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "" + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "" + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "" + +#: src/Components/CaseExpression.php:225 +msgid "Potential duplicate alias of CASE expression." +msgstr "" + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "" + +#: src/Components/CaseExpression.php:262 +#, fuzzy +#| msgid "No databases selected." +msgid "An alias was expected after AS." +msgstr "Биронта ҳам маълумотлар базаси танланмаган." + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" + +#: src/Components/CreateDefinition.php:266 +#, fuzzy +#| msgid "Table name template" +msgid "A symbol name was expected!" +msgstr "Жадвал номи шаблони" + +#: src/Components/CreateDefinition.php:301 +#, fuzzy +#| msgid "No databases selected." +msgid "A comma or a closing bracket was expected." +msgstr "Биронта ҳам маълумотлар базаси танланмаган." + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "" + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "" + +#: src/Components/ExpressionArray.php:101 +#, fuzzy +#| msgid "No rows selected" +msgid "An expression was expected." +msgstr "Амални амалга ошириш учун битта ёки бир нечта қаторни танлаш керак." + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +#, fuzzy +#| msgid "No databases selected." +msgid "An alias was expected." +msgstr "Биронта ҳам маълумотлар базаси танланмаган." + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "" + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "" + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "" + +#: src/Components/LockExpression.php:91 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of LOCK expression." +msgstr "Жадвал бошига" + +#: src/Components/LockExpression.php:199 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of Lock expression." +msgstr "Жадвал бошига" + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "" + +#: src/Components/RenameOperation.php:105 +#, fuzzy +#| msgid "The number of tables that are open." +msgid "The old name of the table was expected." +msgstr "Очиқ жадваллар сони." + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "" + +#: src/Components/RenameOperation.php:132 +#, fuzzy +#| msgid "The number of tables that are open." +msgid "The new name of the table was expected." +msgstr "Очиқ жадваллар сони." + +#: src/Components/RenameOperation.php:151 +#, fuzzy +#| msgid "The row has been deleted." +msgid "A rename operation was expected." +msgstr "Ёзув ўчирилди" + +#: src/Components/SetOperation.php:121 +#, fuzzy +#| msgid "as regular expression" +msgid "Missing expression." +msgstr "мунтазам ибора" + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "" + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "" + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "" + +#: src/Lexer.php:909 +#, fuzzy, php-format +#| msgid "Table %1$s has been created." +msgid "Ending quote %1$s was expected." +msgstr "%1$s жадвали тузилди." + +#: src/Lexer.php:955 +#, fuzzy +#| msgid "Table name template" +msgid "Variable name was expected." +msgstr "Жадвал номи шаблони" + +#: src/Parser.php:451 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected beginning of statement." +msgstr "Жадвал бошига" + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "" + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "" + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "" + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "" + +#: src/Statement.php:407 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Keyword at end of statement." +msgstr "Жадвал бошига" + +#: src/Statement.php:551 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected ordering of clauses." +msgstr "Жадвал бошига" + +#: src/Statements/CreateStatement.php:492 +#, fuzzy +#| msgid "The number of tables that are open." +msgid "The name of the entity was expected." +msgstr "Очиқ жадваллар сони." + +#: src/Statements/CreateStatement.php:542 +#, fuzzy +#| msgid "Table name template" +msgid "A table name was expected." +msgstr "Жадвал номи шаблони" + +#: src/Statements/CreateStatement.php:550 +#, fuzzy +#| msgid "The row has been deleted." +msgid "At least one column definition was expected." +msgstr "Ёзув ўчирилди" + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "" + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "" + +#: src/Statements/LockStatement.php:116 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of LOCK statement." +msgstr "Жадвал бошига" + +#: src/Statements/PurgeStatement.php:136 +msgid "Unexpected keyword" +msgstr "" + +#, fuzzy +#~| msgid "errors." +#~ msgid "error #1" +#~ msgstr "хатоликлар." + +#, fuzzy +#~| msgid "Ignore errors" +#~ msgid "strict error" +#~ msgstr "Хатоларга эътибор бермаслик" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/uz@latin/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/uz@latin/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..471dd56ccf Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/uz@latin/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/uz@latin/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/uz@latin/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..c3dc132dcc --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/uz@latin/LC_MESSAGES/sqlparser.po @@ -0,0 +1,298 @@ +# Automatically generated <>, 2010. +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2015-12-29 19:19+0000\n" +"Last-Translator: Michal Čihař \n" +"Language-Team: Uzbek (latin) \n" +"Language: uz@latin\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 2.5-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "" + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "" + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:302 +#, fuzzy +#| msgid "Iconic table operations" +msgid "Unrecognized alter operation." +msgstr "Jadval operatsiyalarini piktogrammalar yordamida amalga oshirish" + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "" + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "" + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "" + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "" + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "" + +#: src/Components/CaseExpression.php:225 +msgid "Potential duplicate alias of CASE expression." +msgstr "" + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "" + +#: src/Components/CaseExpression.php:262 +#, fuzzy +#| msgid "No databases selected." +msgid "An alias was expected after AS." +msgstr "Bironta ham ma`lumotlar bazasi tanlanmagan." + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" + +#: src/Components/CreateDefinition.php:266 +#, fuzzy +#| msgid "Table name template" +msgid "A symbol name was expected!" +msgstr "Jadval nomi shabloni" + +#: src/Components/CreateDefinition.php:301 +#, fuzzy +#| msgid "No databases selected." +msgid "A comma or a closing bracket was expected." +msgstr "Bironta ham ma`lumotlar bazasi tanlanmagan." + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "" + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "" + +#: src/Components/ExpressionArray.php:101 +#, fuzzy +#| msgid "No rows selected" +msgid "An expression was expected." +msgstr "" +"Amalni amalga oshirish uchun bitta yoki bir nechta qatorni tanlash kerak" + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +#, fuzzy +#| msgid "No databases selected." +msgid "An alias was expected." +msgstr "Bironta ham ma`lumotlar bazasi tanlanmagan." + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "" + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "" + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "" + +#: src/Components/LockExpression.php:91 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of LOCK expression." +msgstr "Jadval boshiga" + +#: src/Components/LockExpression.php:199 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of Lock expression." +msgstr "Jadval boshiga" + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "" + +#: src/Components/RenameOperation.php:105 +#, fuzzy +#| msgid "The number of tables that are open." +msgid "The old name of the table was expected." +msgstr "Ochiq jadvallar soni." + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "" + +#: src/Components/RenameOperation.php:132 +#, fuzzy +#| msgid "The number of tables that are open." +msgid "The new name of the table was expected." +msgstr "Ochiq jadvallar soni." + +#: src/Components/RenameOperation.php:151 +#, fuzzy +#| msgid "The row has been deleted." +msgid "A rename operation was expected." +msgstr "Yozuv o‘chirildi" + +#: src/Components/SetOperation.php:121 +#, fuzzy +#| msgid "as regular expression" +msgid "Missing expression." +msgstr "muntazam ibora" + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "" + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "" + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "" + +#: src/Lexer.php:909 +#, fuzzy, php-format +#| msgid "Table %1$s has been created." +msgid "Ending quote %1$s was expected." +msgstr "%1$s jadvali tuzildi." + +#: src/Lexer.php:955 +#, fuzzy +#| msgid "Table name template" +msgid "Variable name was expected." +msgstr "Jadval nomi shabloni" + +#: src/Parser.php:451 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected beginning of statement." +msgstr "Jadval boshiga" + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "" + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "" + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "" + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "" + +#: src/Statement.php:407 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Keyword at end of statement." +msgstr "Jadval boshiga" + +#: src/Statement.php:551 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected ordering of clauses." +msgstr "Jadval boshiga" + +#: src/Statements/CreateStatement.php:492 +#, fuzzy +#| msgid "The number of tables that are open." +msgid "The name of the entity was expected." +msgstr "Ochiq jadvallar soni." + +#: src/Statements/CreateStatement.php:542 +#, fuzzy +#| msgid "Table name template" +msgid "A table name was expected." +msgstr "Jadval nomi shabloni" + +#: src/Statements/CreateStatement.php:550 +#, fuzzy +#| msgid "The row has been deleted." +msgid "At least one column definition was expected." +msgstr "Yozuv o‘chirildi" + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "" + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "" + +#: src/Statements/LockStatement.php:116 +#, fuzzy +#| msgid "At Beginning of Table" +msgid "Unexpected end of LOCK statement." +msgstr "Jadval boshiga" + +#: src/Statements/PurgeStatement.php:136 +msgid "Unexpected keyword" +msgstr "" + +#, fuzzy +#~| msgid "errors." +#~ msgid "error #1" +#~ msgstr "xatoliklar." + +#, fuzzy +#~| msgid "Ignore errors" +#~ msgid "strict error" +#~ msgstr "Xatolarga e`tibor bermaslik" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/vi/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/vi/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..7d07694d56 Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/vi/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/vi/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/vi/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..8e875ed2d6 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/vi/LC_MESSAGES/sqlparser.po @@ -0,0 +1,278 @@ +# phpMyAdmin translation. +# Bản dịch tiếng Việt dành cho phpMyAdmin. +# Copyright (C) 2003 - 2015 phpMyAdmin devel team +# This file is distributed under the same license as the phpMyAdmin package. +# Trần Ngọc Quân , 2015. +# +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2018-06-30 00:46+0000\n" +"Last-Translator: Name \n" +"Language-Team: Vietnamese \n" +"Language: vi\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 3.1-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "Chưa được viết mã thực thi." + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "" +"Tìm thấy câu lệnh mới, nhưng không có dấu ngăn cách giữa nó và lệnh trước." + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "Không nhận ra thao tác thay đổi." + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "Cần giá trị %1$d, nhưng lại nhận được %2$d." + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "Cần một dấu ngoặc ôm mở theo sau bởi một tập hợp các giá trị." + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "Cần dấu ngoặc ôm mở." + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "Từ khóa không mong muốn." + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "Kết thúc bất ngờ của biểu thức CASE" + +#: src/Components/CaseExpression.php:225 +#, fuzzy +#| msgid "Unexpected end of CASE expression" +msgid "Potential duplicate alias of CASE expression." +msgstr "Kết thúc bất ngờ của biểu thức CASE" + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "Một bí danh đã tìm thấy từ trước đây." + +#: src/Components/CaseExpression.php:262 +#, fuzzy +#| msgid "An alias was expected." +msgid "An alias was expected after AS." +msgstr "Cần một bí danh." + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" +"Cần tên biểu tượng. Một từ khoá truy ngược không thể được sử dụng như là một " +"tên cột mà không có các ngoặc sau." + +#: src/Components/CreateDefinition.php:266 +#, fuzzy +#| msgid "Variable name was expected." +msgid "A symbol name was expected!" +msgstr "Cần tên biến." + +#: src/Components/CreateDefinition.php:301 +msgid "A comma or a closing bracket was expected." +msgstr "Cần dấu phẩy hoặc dấu ngoặc ôm đóng." + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "Cần dấu ngoặc ôm đóng." + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "Không nhận ra kiểu dữ liệu." + +#: src/Components/ExpressionArray.php:101 +msgid "An expression was expected." +msgstr "Cần một biểu thức." + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +msgid "An alias was expected." +msgstr "Cần một bí danh." + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "Gặp dấu chấm không cần." + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "Gặp thẻ bài không cần." + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "Cần vị trí tương đối." + +#: src/Components/LockExpression.php:91 +#, fuzzy +#| msgid "Unexpected end of CASE expression" +msgid "Unexpected end of LOCK expression." +msgstr "Kết thúc bất ngờ của biểu thức CASE" + +#: src/Components/LockExpression.php:199 +#, fuzzy +#| msgid "Unexpected end of CASE expression" +msgid "Unexpected end of Lock expression." +msgstr "Kết thúc bất ngờ của biểu thức CASE" + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "Tùy chọn này xung đột với \"%1$s\"." + +#: src/Components/RenameOperation.php:105 +msgid "The old name of the table was expected." +msgstr "Cần tên cũ của bảng." + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "Cần từ khóa \"TO\"." + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "Cần tên mới của bảng." + +#: src/Components/RenameOperation.php:151 +msgid "A rename operation was expected." +msgstr "Cần thao tác đổi tên." + +#: src/Components/SetOperation.php:121 +msgid "Missing expression." +msgstr "Thiếu biểu thức chính quy." + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "Gặp ký tự không cần." + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "Cần các khoảng trắng trước dấu phân tách." + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "Cần dấu phân tách." + +#: src/Lexer.php:909 +#, php-format +msgid "Ending quote %1$s was expected." +msgstr "Cần trích dẫn đóng %1$s." + +#: src/Lexer.php:955 +msgid "Variable name was expected." +msgstr "Cần tên biến." + +#: src/Parser.php:451 +msgid "Unexpected beginning of statement." +msgstr "Gặp phần đầu mệnh đề không cần." + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "Không thừa nhận kiểu mệnh đề." + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "Chưa có giao địch nào đã bắt đầu trước đây." + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "Kiểu của mệnh đề này đã được phân tích trước đây." + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "Không nhận ra từ khóa." + +#: src/Statement.php:407 +#, fuzzy +#| msgid "Unexpected beginning of statement." +msgid "Keyword at end of statement." +msgstr "Gặp phần đầu mệnh đề không cần." + +#: src/Statement.php:551 +msgid "Unexpected ordering of clauses." +msgstr "Đặt mệnh đề không mong muốn." + +#: src/Statements/CreateStatement.php:492 +msgid "The name of the entity was expected." +msgstr "Cần tên của thực thể." + +#: src/Statements/CreateStatement.php:542 +#, fuzzy +#| msgid "Variable name was expected." +msgid "A table name was expected." +msgstr "Cần tên biến." + +#: src/Statements/CreateStatement.php:550 +msgid "At least one column definition was expected." +msgstr "Chưa có bảng nào được chọn." + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "Cần từ khóa \"RETURNS\"." + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "Mệnh đề loại này không hợp lệ trong các truy vấn Đa bảng." + +#: src/Statements/LockStatement.php:116 +#, fuzzy +#| msgid "Unexpected beginning of statement." +msgid "Unexpected end of LOCK statement." +msgstr "Gặp phần đầu mệnh đề không cần." + +#: src/Statements/PurgeStatement.php:136 +#, fuzzy +#| msgid "Unexpected keyword." +msgid "Unexpected keyword" +msgstr "Từ khóa không mong muốn." + +#~ msgid "error #1" +#~ msgstr "lỗi #1" + +#~ msgid "strict error" +#~ msgstr "lỗi nghiêm ngặt" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/vls/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/vls/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..100f85ed33 Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/vls/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/vls/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/vls/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..13cdcda841 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/vls/LC_MESSAGES/sqlparser.po @@ -0,0 +1,250 @@ +# phpMyAdmin translation. +# Copyright (C) 2003 - 2013 phpMyAdmin devel team +# This file is distributed under the same license as the phpMyAdmin package. +# Automatically generated, 2013. +# +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2014-12-23 23:39+0200\n" +"Last-Translator: Robin van der Vliet \n" +"Language-Team: West Flemish \n" +"Language: vls\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=n != 1;\n" +"X-Generator: Weblate 2.2-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "" + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "" + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "" + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "" + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "" + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "" + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "" + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "" + +#: src/Components/CaseExpression.php:225 +msgid "Potential duplicate alias of CASE expression." +msgstr "" + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "" + +#: src/Components/CaseExpression.php:262 +msgid "An alias was expected after AS." +msgstr "" + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "" + +#: src/Components/CreateDefinition.php:266 +msgid "A symbol name was expected!" +msgstr "" + +#: src/Components/CreateDefinition.php:301 +msgid "A comma or a closing bracket was expected." +msgstr "" + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "" + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "" + +#: src/Components/ExpressionArray.php:101 +msgid "An expression was expected." +msgstr "" + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +msgid "An alias was expected." +msgstr "" + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "" + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "" + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "" + +#: src/Components/LockExpression.php:91 +msgid "Unexpected end of LOCK expression." +msgstr "" + +#: src/Components/LockExpression.php:199 +msgid "Unexpected end of Lock expression." +msgstr "" + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "" + +#: src/Components/RenameOperation.php:105 +msgid "The old name of the table was expected." +msgstr "" + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "" + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "" + +#: src/Components/RenameOperation.php:151 +msgid "A rename operation was expected." +msgstr "" + +#: src/Components/SetOperation.php:121 +msgid "Missing expression." +msgstr "" + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "" + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "" + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "" + +#: src/Lexer.php:909 +#, php-format +msgid "Ending quote %1$s was expected." +msgstr "" + +#: src/Lexer.php:955 +msgid "Variable name was expected." +msgstr "" + +#: src/Parser.php:451 +msgid "Unexpected beginning of statement." +msgstr "" + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "" + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "" + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "" + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "" + +#: src/Statement.php:407 +msgid "Keyword at end of statement." +msgstr "" + +#: src/Statement.php:551 +msgid "Unexpected ordering of clauses." +msgstr "" + +#: src/Statements/CreateStatement.php:492 +msgid "The name of the entity was expected." +msgstr "" + +#: src/Statements/CreateStatement.php:542 +msgid "A table name was expected." +msgstr "" + +#: src/Statements/CreateStatement.php:550 +msgid "At least one column definition was expected." +msgstr "" + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "" + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "" + +#: src/Statements/LockStatement.php:116 +msgid "Unexpected end of LOCK statement." +msgstr "" + +#: src/Statements/PurgeStatement.php:136 +msgid "Unexpected keyword" +msgstr "" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/zh_CN/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/zh_CN/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..7a3e289503 Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/zh_CN/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/zh_CN/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/zh_CN/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..68d64378bf --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/zh_CN/LC_MESSAGES/sqlparser.po @@ -0,0 +1,252 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2021-03-16 14:02+0000\n" +"Last-Translator: xiao0yy \n" +"Language-Team: Chinese (Simplified) \n" +"Language: zh_CN\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 4.5.2-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "还未实现." + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "发现了一个新的声明,但它与前一声明之间没有分隔符。" + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "无法识别的变更(alter)操作。" + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "应有%1$d个值,但查找到了%2$d个。" + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "应该有一个开头括号后面跟着一组值。" + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "应该有一个左括号。" + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "不应出现的关键词。" + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "CASE表达式意外结束" + +#: src/Components/CaseExpression.php:225 +msgid "Potential duplicate alias of CASE expression." +msgstr "CASE表达式有潜在的重复别名。" + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "AS关键字后应跟随别名,但是发现 " + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "之前发现了一个别名。" + +#: src/Components/CaseExpression.php:262 +msgid "An alias was expected after AS." +msgstr "AS关键字后应跟随别名。" + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "应该有一个符号名称!保留的关键字不能用作没有反引号的列名。" + +#: src/Components/CreateDefinition.php:266 +msgid "A symbol name was expected!" +msgstr "应该有一个符号名称!" + +#: src/Components/CreateDefinition.php:301 +msgid "A comma or a closing bracket was expected." +msgstr "应该是有逗号或结束括号。" + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "应有一个右括号。" + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "无法识别的数据类型。" + +#: src/Components/ExpressionArray.php:101 +msgid "An expression was expected." +msgstr "应该为一个表达式。" + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +msgid "An alias was expected." +msgstr "应该有一个别名。" + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "不应出现的点。" + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "意外的标记." + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "应该为一个偏移。" + +#: src/Components/LockExpression.php:91 +msgid "Unexpected end of LOCK expression." +msgstr "LOCK表达式意外结束。" + +#: src/Components/LockExpression.php:199 +msgid "Unexpected end of Lock expression." +msgstr "lock表达式意外结束。" + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "此选项与“%1$s”冲突。" + +#: src/Components/RenameOperation.php:105 +msgid "The old name of the table was expected." +msgstr "需要有表的旧名称。" + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "应为关键词“TO”。" + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "应有表的新名称。" + +#: src/Components/RenameOperation.php:151 +msgid "A rename operation was expected." +msgstr "应进行重命名操作。" + +#: src/Components/SetOperation.php:121 +msgid "Missing expression." +msgstr "缺少正则表达式。" + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "缺少字符。" + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "分隔符之前应有空格。" + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "应有分隔符。" + +#: src/Lexer.php:909 +#, php-format +msgid "Ending quote %1$s was expected." +msgstr "应有结束引号 %1$s。" + +#: src/Lexer.php:955 +msgid "Variable name was expected." +msgstr "应有变量名。" + +#: src/Parser.php:451 +msgid "Unexpected beginning of statement." +msgstr "不应出现的开始声明。" + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "无法识别的声明形式。" + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "之前没有开始任何事务。" + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "之前已解析此类型的子句。" + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "不能识别的关键词。" + +#: src/Statement.php:407 +msgid "Keyword at end of statement." +msgstr "声明结尾处的关键字。" + +#: src/Statement.php:551 +msgid "Unexpected ordering of clauses." +msgstr "错误的语句顺序。" + +#: src/Statements/CreateStatement.php:492 +msgid "The name of the entity was expected." +msgstr "应有该实体的名称。" + +#: src/Statements/CreateStatement.php:542 +msgid "A table name was expected." +msgstr "应有表名。" + +#: src/Statements/CreateStatement.php:550 +msgid "At least one column definition was expected." +msgstr "至少应有一个字段定义。" + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "应有“RETURNS”关键字。" + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "此类型的子句在多表查询中无效。" + +#: src/Statements/LockStatement.php:116 +msgid "Unexpected end of LOCK statement." +msgstr "LOCK语句意外结束。" + +#: src/Statements/PurgeStatement.php:136 +msgid "Unexpected keyword" +msgstr "不应出现的关键词" + +#~ msgid "error #1" +#~ msgstr "错误 #1" + +#~ msgid "strict error" +#~ msgstr "严格错误" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/zh_TW/LC_MESSAGES/sqlparser.mo b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/zh_TW/LC_MESSAGES/sqlparser.mo new file mode 100644 index 0000000000..abe78e3b5e Binary files /dev/null and b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/zh_TW/LC_MESSAGES/sqlparser.mo differ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/zh_TW/LC_MESSAGES/sqlparser.po b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/zh_TW/LC_MESSAGES/sqlparser.po new file mode 100644 index 0000000000..543178b91c --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/locale/zh_TW/LC_MESSAGES/sqlparser.po @@ -0,0 +1,264 @@ +# +msgid "" +msgstr "" +"Project-Id-Version: SQL parser 5\n" +"Report-Msgid-Bugs-To: translators@phpmyadmin.net\n" +"POT-Creation-Date: 2020-03-20 21:01+0100\n" +"PO-Revision-Date: 2018-11-29 06:08+0000\n" +"Last-Translator: Walter Cheuk \n" +"Language-Team: Chinese (Traditional) \n" +"Language: zh_TW\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" +"X-Generator: Weblate 3.3-dev\n" + +#: src/Component.php:41 src/Component.php:61 +msgid "Not implemented yet." +msgstr "尚未實作。" + +#: src/Components/AlterOperation.php:278 src/Statement.php:351 +msgid "" +"A new statement was found, but no delimiter between it and the previous one." +msgstr "找到新的陳述句,但與前一陳述句之間沒有分隔符。" + +#: src/Components/AlterOperation.php:290 +msgid "Missing comma before start of a new alter operation." +msgstr "" + +#: src/Components/AlterOperation.php:302 +msgid "Unrecognized alter operation." +msgstr "無法識別的修改操作。" + +#: src/Components/Array2d.php:86 +#, php-format +msgid "%1$d values were expected, but found %2$d." +msgstr "預期 %1$d 個數值,但找到 %2$d 個。" + +#: src/Components/Array2d.php:110 +msgid "An opening bracket followed by a set of values was expected." +msgstr "預期開括號後有一組數值。" + +#: src/Components/ArrayObj.php:112 src/Components/CreateDefinition.php:230 +msgid "An opening bracket was expected." +msgstr "預期要有開始括號。" + +#: src/Components/CaseExpression.php:136 src/Components/CaseExpression.php:164 +#: src/Components/CaseExpression.php:177 src/Components/CaseExpression.php:191 +#: src/Components/IndexHint.php:131 src/Components/IndexHint.php:160 +#: src/Components/LockExpression.php:171 src/Components/LockExpression.php:181 +#: src/Components/LockExpression.php:189 src/Statements/DeleteStatement.php:254 +#: src/Statements/DeleteStatement.php:269 +#: src/Statements/DeleteStatement.php:313 +#: src/Statements/DeleteStatement.php:325 +#: src/Statements/DeleteStatement.php:356 +#: src/Statements/DeleteStatement.php:367 +#: src/Statements/InsertStatement.php:189 +#: src/Statements/InsertStatement.php:217 src/Statements/LoadStatement.php:271 +#: src/Statements/LockStatement.php:86 src/Statements/ReplaceStatement.php:155 +#: src/Statements/ReplaceStatement.php:183 +msgid "Unexpected keyword." +msgstr "預期之外的關鍵字。" + +#: src/Components/CaseExpression.php:200 +msgid "Unexpected end of CASE expression" +msgstr "預期之外的CASE陳述式" + +#: src/Components/CaseExpression.php:225 +#, fuzzy +#| msgid "Unexpected end of CASE expression" +msgid "Potential duplicate alias of CASE expression." +msgstr "預期之外的CASE陳述式" + +#: src/Components/CaseExpression.php:236 +msgid "An alias expected after AS but got " +msgstr "" + +#: src/Components/CaseExpression.php:248 src/Components/Expression.php:353 +#: src/Components/Expression.php:373 src/Components/Expression.php:408 +msgid "An alias was previously found." +msgstr "已於前面找到別名。" + +#: src/Components/CaseExpression.php:262 +#, fuzzy +#| msgid "An alias was expected." +msgid "An alias was expected after AS." +msgstr "預期要有別名。" + +#: src/Components/CreateDefinition.php:252 +msgid "" +"A symbol name was expected! A reserved keyword can not be used as a column " +"name without backquotes." +msgstr "預期有一個符號!保留字不可以在沒有反引號時用作欄位名稱。" + +#: src/Components/CreateDefinition.php:266 +msgid "A symbol name was expected!" +msgstr "預期要有符號名稱!" + +#: src/Components/CreateDefinition.php:301 +msgid "A comma or a closing bracket was expected." +msgstr "預期要有逗號或者結束括號。" + +#: src/Components/CreateDefinition.php:317 +msgid "A closing bracket was expected." +msgstr "預期要有結束括號。" + +#: src/Components/DataType.php:130 +msgid "Unrecognized data type." +msgstr "無法識別的資料類型。" + +#: src/Components/ExpressionArray.php:101 +msgid "An expression was expected." +msgstr "預期要有表示式。" + +#: src/Components/Expression.php:258 src/Components/Expression.php:420 +msgid "An alias was expected." +msgstr "預期要有別名。" + +#: src/Components/Expression.php:387 +msgid "Unexpected dot." +msgstr "預期之外的句點。" + +#: src/Components/IndexHint.php:137 src/Components/IndexHint.php:166 +#: src/Components/LockExpression.php:159 src/Components/SetOperation.php:138 +#: src/Statement.php:247 src/Statements/DeleteStatement.php:278 +#: src/Statements/DeleteStatement.php:329 +#: src/Statements/InsertStatement.php:227 +#: src/Statements/InsertStatement.php:247 src/Statements/LoadStatement.php:274 +#: src/Statements/LoadStatement.php:302 src/Statements/LoadStatement.php:323 +#: src/Statements/LockStatement.php:93 src/Statements/LockStatement.php:99 +#: src/Statements/PurgeStatement.php:109 src/Statements/PurgeStatement.php:119 +#: src/Statements/PurgeStatement.php:139 +#: src/Statements/ReplaceStatement.php:192 +msgid "Unexpected token." +msgstr "預期之外的符號。" + +#: src/Components/Limit.php:80 src/Components/Limit.php:108 +msgid "An offset was expected." +msgstr "預期要有偏移量(Offset)。" + +#: src/Components/LockExpression.php:91 +#, fuzzy +#| msgid "Unexpected end of CASE expression" +msgid "Unexpected end of LOCK expression." +msgstr "預期之外的CASE陳述式" + +#: src/Components/LockExpression.php:199 +#, fuzzy +#| msgid "Unexpected end of CASE expression" +msgid "Unexpected end of Lock expression." +msgstr "預期之外的CASE陳述式" + +#: src/Components/OptionsArray.php:145 +#, php-format +msgid "This option conflicts with \"%1$s\"." +msgstr "此選項與 \"%1$s\" 發生衝突。" + +#: src/Components/RenameOperation.php:105 +msgid "The old name of the table was expected." +msgstr "預期要有舊的資料表名稱。" + +#: src/Components/RenameOperation.php:116 +msgid "Keyword \"TO\" was expected." +msgstr "預期要有 \"TO\" 關鍵字。" + +#: src/Components/RenameOperation.php:132 +msgid "The new name of the table was expected." +msgstr "預期要有新的資料表名稱。" + +#: src/Components/RenameOperation.php:151 +msgid "A rename operation was expected." +msgstr "預期要有重新命名的操作。" + +#: src/Components/SetOperation.php:121 +msgid "Missing expression." +msgstr "缺少表達式。" + +#: src/Lexer.php:244 +msgid "Unexpected character." +msgstr "預期之外的字元。" + +#: src/Lexer.php:285 +msgid "Expected whitespace(s) before delimiter." +msgstr "預期要有空白於分隔符號之前。" + +#: src/Lexer.php:303 src/Lexer.php:325 +msgid "Expected delimiter." +msgstr "預期要有分隔符號。" + +#: src/Lexer.php:909 +#, php-format +msgid "Ending quote %1$s was expected." +msgstr "預期要於結束使用括號 %1$s。" + +#: src/Lexer.php:955 +msgid "Variable name was expected." +msgstr "預期要有變數名稱。" + +#: src/Parser.php:451 +msgid "Unexpected beginning of statement." +msgstr "預期之外的陳述句開頭。" + +#: src/Parser.php:476 +msgid "Unrecognized statement type." +msgstr "無法辨識的陳述句類型。" + +#: src/Parser.php:565 +msgid "No transaction was previously started." +msgstr "前面未開啟交易(Transaction)模式。" + +#: src/Statement.php:318 +msgid "This type of clause was previously parsed." +msgstr "此類型的子句已於前面解析過。" + +#: src/Statement.php:396 +msgid "Unrecognized keyword." +msgstr "無法辨識的關鍵字。" + +#: src/Statement.php:407 +msgid "Keyword at end of statement." +msgstr "陳述句結尾的關鍵字。" + +#: src/Statement.php:551 +msgid "Unexpected ordering of clauses." +msgstr "預期之外的排序語句。" + +#: src/Statements/CreateStatement.php:492 +msgid "The name of the entity was expected." +msgstr "預期要有實體名稱。" + +#: src/Statements/CreateStatement.php:542 +msgid "A table name was expected." +msgstr "預期有表格名稱。" + +#: src/Statements/CreateStatement.php:550 +msgid "At least one column definition was expected." +msgstr "預期要至少一個欄位定義。" + +#: src/Statements/CreateStatement.php:665 +msgid "A \"RETURNS\" keyword was expected." +msgstr "預期要使用 \"RETURNS\" 關鍵字。" + +#: src/Statements/DeleteStatement.php:337 +msgid "This type of clause is not valid in Multi-table queries." +msgstr "此類型的子句不可用於多表查詢。" + +#: src/Statements/LockStatement.php:116 +#, fuzzy +#| msgid "Unexpected beginning of statement." +msgid "Unexpected end of LOCK statement." +msgstr "預期之外的陳述句開頭。" + +#: src/Statements/PurgeStatement.php:136 +#, fuzzy +#| msgid "Unexpected keyword." +msgid "Unexpected keyword" +msgstr "預期之外的關鍵字。" + +#~ msgid "error #1" +#~ msgstr "錯誤 #1" + +#~ msgid "strict error" +#~ msgstr "嚴謹錯誤" diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/phpunit.xml.dist b/lib/sqlparser/vendor/phpmyadmin/sql-parser/phpunit.xml.dist new file mode 100644 index 0000000000..e7c424cd3a --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/phpunit.xml.dist @@ -0,0 +1,48 @@ + + + + + + + + + + ./tests/Builder + + + ./tests/Components + + + ./tests/Lexer + + + ./tests/Misc + + + ./tests/Parser + + + ./tests/Utils + + + + + src/ + + + + + + + + diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Component.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Component.php new file mode 100644 index 0000000000..94c621a495 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Component.php @@ -0,0 +1,76 @@ + [ + 1, + 'var', + ], + 'CHARSET' => [ + 1, + 'var', + ], + 'DEFAULT CHARACTER SET' => [ + 1, + 'var', + ], + 'DEFAULT CHARSET' => [ + 1, + 'var', + ], + 'UPGRADE' => [ + 1, + 'var', + ], + 'COLLATE' => [ + 2, + 'var', + ], + 'DEFAULT COLLATE' => [ + 2, + 'var', + ], + ]; + + /** + * All table options. + * + * @var array + */ + public static $TABLE_OPTIONS = [ + 'ENGINE' => [ + 1, + 'var=', + ], + 'AUTO_INCREMENT' => [ + 1, + 'var=', + ], + 'AVG_ROW_LENGTH' => [ + 1, + 'var', + ], + 'MAX_ROWS' => [ + 1, + 'var', + ], + 'ROW_FORMAT' => [ + 1, + 'var', + ], + 'COMMENT' => [ + 1, + 'var', + ], + 'ADD' => 1, + 'ALTER' => 1, + 'ANALYZE' => 1, + 'CHANGE' => 1, + 'CHARSET' => 1, + 'CHECK' => 1, + 'COALESCE' => 1, + 'CONVERT' => 1, + 'DEFAULT CHARSET' => 1, + 'DISABLE' => 1, + 'DISCARD' => 1, + 'DROP' => 1, + 'ENABLE' => 1, + 'IMPORT' => 1, + 'MODIFY' => 1, + 'OPTIMIZE' => 1, + 'ORDER' => 1, + 'PARTITION' => 1, + 'REBUILD' => 1, + 'REMOVE' => 1, + 'RENAME' => 1, + 'REORGANIZE' => 1, + 'REPAIR' => 1, + 'UPGRADE' => 1, + + 'COLUMN' => 2, + 'CONSTRAINT' => 2, + 'DEFAULT' => 2, + 'TO' => 2, + 'BY' => 2, + 'FOREIGN' => 2, + 'FULLTEXT' => 2, + 'KEY' => 2, + 'KEYS' => 2, + 'PARTITIONING' => 2, + 'PRIMARY KEY' => 2, + 'SPATIAL' => 2, + 'TABLESPACE' => 2, + 'INDEX' => 2, + + 'CHARACTER SET' => 3, + ]; + + /** + * All user options. + * + * @var array + */ + public static $USER_OPTIONS = [ + 'ATTRIBUTE' => [ + 1, + 'var', + ], + 'COMMENT' => [ + 1, + 'var', + ], + 'REQUIRE' => [ + 1, + 'var', + ], + 'BY' => [ + 2, + 'expr', + ], + 'PASSWORD' => [ + 2, + 'var', + ], + 'WITH' => [ + 2, + 'var', + ], + + 'ACCOUNT' => 1, + 'DEFAULT' => 1, + + 'LOCK' => 2, + 'UNLOCK' => 2, + + 'IDENTIFIED' => 3, + ]; + + /** + * All view options. + * + * @var array + */ + public static $VIEW_OPTIONS = ['AS' => 1]; + + /** + * Options of this operation. + * + * @var OptionsArray + */ + public $options; + + /** + * The altered field. + * + * @var Expression + */ + public $field; + + /** + * Unparsed tokens. + * + * @var Token[]|string + */ + public $unknown = []; + + /** + * @param OptionsArray $options options of alter operation + * @param Expression $field altered field + * @param array $unknown unparsed tokens found at the end of operation + */ + public function __construct( + $options = null, + $field = null, + $unknown = [] + ) { + $this->options = $options; + $this->field = $field; + $this->unknown = $unknown; + } + + /** + * @param Parser $parser the parser that serves as context + * @param TokensList $list the list of tokens that are being parsed + * @param array $options parameters for parsing + * + * @return AlterOperation + */ + public static function parse(Parser $parser, TokensList $list, array $options = []) + { + $ret = new static(); + + /** + * Counts brackets. + * + * @var int + */ + $brackets = 0; + + /** + * The state of the parser. + * + * Below are the states of the parser. + * + * 0 ---------------------[ options ]---------------------> 1 + * + * 1 ----------------------[ field ]----------------------> 2 + * + * 2 -------------------------[ , ]-----------------------> 0 + * + * @var int + */ + $state = 0; + + for (; $list->idx < $list->count; ++$list->idx) { + /** + * Token parsed at this moment. + * + * @var Token + */ + $token = $list->tokens[$list->idx]; + + // End of statement. + if ($token->type === Token::TYPE_DELIMITER) { + break; + } + + // Skipping comments. + if ($token->type === Token::TYPE_COMMENT) { + continue; + } + + // Skipping whitespaces. + if ($token->type === Token::TYPE_WHITESPACE) { + if ($state === 2) { + // When parsing the unknown part, the whitespaces are + // included to not break anything. + $ret->unknown[] = $token; + } + + continue; + } + + if ($state === 0) { + $ret->options = OptionsArray::parse($parser, $list, $options); + + if ($ret->options->has('AS')) { + for (; $list->idx < $list->count; ++$list->idx) { + if ($list->tokens[$list->idx]->type === Token::TYPE_DELIMITER) { + break; + } + + $ret->unknown[] = $list->tokens[$list->idx]; + } + + break; + } + + $state = 1; + } elseif ($state === 1) { + $ret->field = Expression::parse( + $parser, + $list, + [ + 'breakOnAlias' => true, + 'parseField' => 'column', + ] + ); + if ($ret->field === null) { + // No field was read. We go back one token so the next + // iteration will parse the same token, but in state 2. + --$list->idx; + } + + $state = 2; + } elseif ($state === 2) { + $arrayKey = ''; + if (is_string($token->value) || is_numeric($token->value)) { + $arrayKey = $token->value; + } else { + $arrayKey = $token->token; + } + + if ($token->type === Token::TYPE_OPERATOR) { + if ($token->value === '(') { + ++$brackets; + } elseif ($token->value === ')') { + --$brackets; + } elseif (($token->value === ',') && ($brackets === 0)) { + break; + } + } elseif (! self::checkIfTokenQuotedSymbol($token)) { + if (! empty(Parser::$STATEMENT_PARSERS[$token->value])) { + // We want to get the next non-comment and non-space token after $token + // therefore, the first getNext call will start with the current $idx which's $token, + // will return it and increase $idx by 1, which's not guaranteed to be non-comment + // and non-space, that's why we're calling getNext again. + + $list->getNext(); + $nextToken = $list->getNext(); + + if ($token->value === 'SET' && $nextToken !== null && $nextToken->value === '(') { + // To avoid adding the tokens between the SET() parentheses to the unknown tokens + $list->getNextOfTypeAndValue(Token::TYPE_OPERATOR, ')'); + } elseif ($token->value === 'SET' && $nextToken !== null && $nextToken->value === 'DEFAULT') { + // to avoid adding the `DEFAULT` token to the unknown tokens. + ++$list->idx; + } else { + // We have reached the end of ALTER operation and suddenly found + // a start to new statement, but have not find a delimiter between them + $parser->error( + 'A new statement was found, but no delimiter between it and the previous one.', + $token + ); + break; + } + } elseif ( + (array_key_exists($arrayKey, self::$DB_OPTIONS) + || array_key_exists($arrayKey, self::$TABLE_OPTIONS)) + && ! self::checkIfColumnDefinitionKeyword($arrayKey) + ) { + // This alter operation has finished, which means a comma + // was missing before start of new alter operation + $parser->error('Missing comma before start of a new alter operation.', $token); + break; + } + } + + $ret->unknown[] = $token; + } + } + + if ($ret->options->isEmpty()) { + $parser->error('Unrecognized alter operation.', $list->tokens[$list->idx]); + } + + --$list->idx; + + return $ret; + } + + /** + * @param AlterOperation $component the component to be built + * @param array $options parameters for building + * + * @return string + */ + public static function build($component, array $options = []) + { + $ret = $component->options . ' '; + if (isset($component->field) && ($component->field !== '')) { + $ret .= $component->field . ' '; + } + + $ret .= TokensList::build($component->unknown); + + return $ret; + } + + /** + * Check if token's value is one of the common keywords + * between column and table alteration + * + * @param string $tokenValue Value of current token + * + * @return bool + */ + private static function checkIfColumnDefinitionKeyword($tokenValue) + { + $commonOptions = [ + 'AUTO_INCREMENT', + 'COMMENT', + 'DEFAULT', + 'CHARACTER SET', + 'COLLATE', + 'PRIMARY', + 'UNIQUE', + 'PRIMARY KEY', + 'UNIQUE KEY', + ]; + + // Since these options can be used for + // both table as well as a specific column in the table + return in_array($tokenValue, $commonOptions); + } + + /** + * Check if token is symbol and quoted with backtick + * + * @param Token $token token to check + * + * @return bool + */ + private static function checkIfTokenQuotedSymbol($token) + { + return $token->type === Token::TYPE_SYMBOL && $token->flags === Token::FLAG_SYMBOL_BACKTICK; + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Components/Array2d.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Components/Array2d.php new file mode 100644 index 0000000000..2b42666b0b --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Components/Array2d.php @@ -0,0 +1,131 @@ + 1 + * + * 1 ------------------------[ , ]------------------------> 0 + * 1 -----------------------[ else ]----------------------> (END) + * + * @var int + */ + $state = 0; + + for (; $list->idx < $list->count; ++$list->idx) { + /** + * Token parsed at this moment. + * + * @var Token + */ + $token = $list->tokens[$list->idx]; + + // End of statement. + if ($token->type === Token::TYPE_DELIMITER) { + break; + } + + // Skipping whitespaces and comments. + if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { + continue; + } + + // No keyword is expected. + if (($token->type === Token::TYPE_KEYWORD) && ($token->flags & Token::FLAG_KEYWORD_RESERVED)) { + break; + } + + if ($state === 0) { + if ($token->value !== '(') { + break; + } + + $arr = ArrayObj::parse($parser, $list, $options); + $arrCount = count($arr->values); + if ($count === -1) { + $count = $arrCount; + } elseif ($arrCount !== $count) { + $parser->error( + sprintf( + Translator::gettext('%1$d values were expected, but found %2$d.'), + $count, + $arrCount + ), + $token + ); + } + + $ret[] = $arr; + $state = 1; + } elseif ($state === 1) { + if ($token->value !== ',') { + break; + } + + $state = 0; + } + } + + if ($state === 0) { + $parser->error('An opening bracket followed by a set of values was expected.', $list->tokens[$list->idx]); + } + + --$list->idx; + + return $ret; + } + + /** + * @param ArrayObj[] $component the component to be built + * @param array $options parameters for building + * + * @return string + */ + public static function build($component, array $options = []) + { + return ArrayObj::build($component); + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Components/ArrayObj.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Components/ArrayObj.php new file mode 100644 index 0000000000..20c2ecc7d9 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Components/ArrayObj.php @@ -0,0 +1,186 @@ +raw = $raw; + $this->values = $values; + } + + /** + * @param Parser $parser the parser that serves as context + * @param TokensList $list the list of tokens that are being parsed + * @param array $options parameters for parsing + * + * @return ArrayObj|Component[] + */ + public static function parse(Parser $parser, TokensList $list, array $options = []) + { + $ret = empty($options['type']) ? new static() : []; + + /** + * The last raw expression. + * + * @var string + */ + $lastRaw = ''; + + /** + * The last value. + * + * @var string + */ + $lastValue = ''; + + /** + * Counts brackets. + * + * @var int + */ + $brackets = 0; + + /** + * Last separator (bracket or comma). + * + * @var bool + */ + $isCommaLast = false; + + for (; $list->idx < $list->count; ++$list->idx) { + /** + * Token parsed at this moment. + * + * @var Token + */ + $token = $list->tokens[$list->idx]; + + // End of statement. + if ($token->type === Token::TYPE_DELIMITER) { + break; + } + + // Skipping whitespaces and comments. + if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { + $lastRaw .= $token->token; + $lastValue = trim($lastValue) . ' '; + continue; + } + + if (($brackets === 0) && (($token->type !== Token::TYPE_OPERATOR) || ($token->value !== '('))) { + $parser->error('An opening bracket was expected.', $token); + break; + } + + if ($token->type === Token::TYPE_OPERATOR) { + if ($token->value === '(') { + if (++$brackets === 1) { // 1 is the base level. + continue; + } + } elseif ($token->value === ')') { + if (--$brackets === 0) { // Array ended. + break; + } + } elseif ($token->value === ',') { + if ($brackets === 1) { + $isCommaLast = true; + if (empty($options['type'])) { + $ret->raw[] = trim($lastRaw); + $ret->values[] = trim($lastValue); + $lastRaw = $lastValue = ''; + } + } + + continue; + } + } + + if (empty($options['type'])) { + $lastRaw .= $token->token; + $lastValue .= $token->value; + } else { + $ret[] = $options['type']::parse( + $parser, + $list, + empty($options['typeOptions']) ? [] : $options['typeOptions'] + ); + } + } + + // Handling last element. + // + // This is treated differently to treat the following cases: + // + // => [] + // [,] => ['', ''] + // [] => [] + // [a,] => ['a', ''] + // [a] => ['a'] + $lastRaw = trim($lastRaw); + if (empty($options['type']) && ((strlen($lastRaw) > 0) || ($isCommaLast))) { + $ret->raw[] = $lastRaw; + $ret->values[] = trim($lastValue); + } + + return $ret; + } + + /** + * @param ArrayObj|ArrayObj[] $component the component to be built + * @param array $options parameters for building + * + * @return string + */ + public static function build($component, array $options = []) + { + if (is_array($component)) { + return implode(', ', $component); + } + + if (! empty($component->raw)) { + return '(' . implode(', ', $component->raw) . ')'; + } + + return '(' . implode(', ', $component->values) . ')'; + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Components/CaseExpression.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Components/CaseExpression.php new file mode 100644 index 0000000000..3033854e8b --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Components/CaseExpression.php @@ -0,0 +1,308 @@ +idx; // Skip 'CASE' + + for (; $list->idx < $list->count; ++$list->idx) { + /** + * Token parsed at this moment. + * + * @var Token + */ + $token = $list->tokens[$list->idx]; + + // Skipping whitespaces and comments. + if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { + continue; + } + + if ($state === 0) { + if ($token->type === Token::TYPE_KEYWORD) { + switch ($token->keyword) { + case 'WHEN': + ++$list->idx; // Skip 'WHEN' + $newCondition = Condition::parse($parser, $list); + $type = 1; + $state = 1; + $ret->conditions[] = $newCondition; + break; + case 'ELSE': + ++$list->idx; // Skip 'ELSE' + $ret->else_result = Expression::parse($parser, $list); + $state = 0; // last clause of CASE expression + break; + case 'END': + $state = 3; // end of CASE expression + ++$list->idx; + break 2; + default: + $parser->error('Unexpected keyword.', $token); + break 2; + } + } else { + $ret->value = Expression::parse($parser, $list); + $type = 0; + $state = 1; + } + } elseif ($state === 1) { + if ($type === 0) { + if ($token->type === Token::TYPE_KEYWORD) { + switch ($token->keyword) { + case 'WHEN': + ++$list->idx; // Skip 'WHEN' + $newValue = Expression::parse($parser, $list); + $state = 2; + $ret->compare_values[] = $newValue; + break; + case 'ELSE': + ++$list->idx; // Skip 'ELSE' + $ret->else_result = Expression::parse($parser, $list); + $state = 0; // last clause of CASE expression + break; + case 'END': + $state = 3; // end of CASE expression + ++$list->idx; + break 2; + default: + $parser->error('Unexpected keyword.', $token); + break 2; + } + } + } else { + if ($token->type === Token::TYPE_KEYWORD && $token->keyword === 'THEN') { + ++$list->idx; // Skip 'THEN' + $newResult = Expression::parse($parser, $list); + $state = 0; + $ret->results[] = $newResult; + } elseif ($token->type === Token::TYPE_KEYWORD) { + $parser->error('Unexpected keyword.', $token); + break; + } + } + } elseif ($state === 2) { + if ($type === 0) { + if ($token->type === Token::TYPE_KEYWORD && $token->keyword === 'THEN') { + ++$list->idx; // Skip 'THEN' + $newResult = Expression::parse($parser, $list); + $ret->results[] = $newResult; + $state = 1; + } elseif ($token->type === Token::TYPE_KEYWORD) { + $parser->error('Unexpected keyword.', $token); + break; + } + } + } + } + + if ($state !== 3) { + $parser->error('Unexpected end of CASE expression', $list->tokens[$list->idx - 1]); + } else { + // Parse for alias of CASE expression + $asFound = false; + for (; $list->idx < $list->count; ++$list->idx) { + $token = $list->tokens[$list->idx]; + + // End of statement. + if ($token->type === Token::TYPE_DELIMITER) { + break; + } + + // Skipping whitespaces and comments. + if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { + continue; + } + + // Handle optional AS keyword before alias + if ($token->type === Token::TYPE_KEYWORD && $token->keyword === 'AS') { + if ($asFound || ! empty($ret->alias)) { + $parser->error('Potential duplicate alias of CASE expression.', $token); + break; + } + + $asFound = true; + continue; + } + + if ( + $asFound + && $token->type === Token::TYPE_KEYWORD + && ($token->flags & Token::FLAG_KEYWORD_RESERVED || $token->flags & Token::FLAG_KEYWORD_FUNCTION) + ) { + $parser->error('An alias expected after AS but got ' . $token->value, $token); + $asFound = false; + break; + } + + if ( + $asFound + || $token->type === Token::TYPE_STRING + || ($token->type === Token::TYPE_SYMBOL && ! $token->flags & Token::FLAG_SYMBOL_VARIABLE) + || $token->type === Token::TYPE_NONE + ) { + // An alias is expected (the keyword `AS` was previously found). + if (! empty($ret->alias)) { + $parser->error('An alias was previously found.', $token); + break; + } + + $ret->alias = $token->value; + $asFound = false; + + continue; + } + + break; + } + + if ($asFound) { + $parser->error('An alias was expected after AS.', $list->tokens[$list->idx - 1]); + } + + $ret->expr = self::build($ret); + } + + --$list->idx; + + return $ret; + } + + /** + * @param CaseExpression $component the component to be built + * @param array $options parameters for building + * + * @return string + */ + public static function build($component, array $options = []) + { + $ret = 'CASE '; + if (isset($component->value)) { + // Syntax type 0 + $ret .= $component->value . ' '; + $valuesCount = count($component->compare_values); + $resultsCount = count($component->results); + for ($i = 0; $i < $valuesCount && $i < $resultsCount; ++$i) { + $ret .= 'WHEN ' . $component->compare_values[$i] . ' '; + $ret .= 'THEN ' . $component->results[$i] . ' '; + } + } else { + // Syntax type 1 + $valuesCount = count($component->conditions); + $resultsCount = count($component->results); + for ($i = 0; $i < $valuesCount && $i < $resultsCount; ++$i) { + $ret .= 'WHEN ' . Condition::build($component->conditions[$i]) . ' '; + $ret .= 'THEN ' . $component->results[$i] . ' '; + } + } + + if (isset($component->else_result)) { + $ret .= 'ELSE ' . $component->else_result . ' '; + } + + $ret .= 'END'; + + if ($component->alias) { + $ret .= ' AS ' . Context::escape($component->alias); + } + + return $ret; + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Components/Condition.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Components/Condition.php new file mode 100644 index 0000000000..28121cc57d --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Components/Condition.php @@ -0,0 +1,244 @@ + 1, + 'AND' => 1, + 'BETWEEN' => 1, + 'EXISTS' => 1, + 'IF' => 1, + 'IN' => 1, + 'INTERVAL' => 1, + 'IS' => 1, + 'LIKE' => 1, + 'MATCH' => 1, + 'NOT IN' => 1, + 'NOT NULL' => 1, + 'NOT' => 1, + 'NULL' => 1, + 'OR' => 1, + 'REGEXP' => 1, + 'RLIKE' => 1, + 'SOUNDS' => 1, + 'XOR' => 1, + ]; + + /** + * Identifiers recognized. + * + * @var array + */ + public $identifiers = []; + + /** + * Whether this component is an operator. + * + * @var bool + */ + public $isOperator = false; + + /** + * The condition. + * + * @var string + */ + public $expr; + + /** + * @param string $expr the condition or the operator + */ + public function __construct($expr = null) + { + $this->expr = trim((string) $expr); + } + + /** + * @param Parser $parser the parser that serves as context + * @param TokensList $list the list of tokens that are being parsed + * @param array $options parameters for parsing + * + * @return Condition[] + */ + public static function parse(Parser $parser, TokensList $list, array $options = []) + { + $ret = []; + + $expr = new static(); + + /** + * Counts brackets. + * + * @var int + */ + $brackets = 0; + + /** + * Whether there was a `BETWEEN` keyword before or not. + * + * It is required to keep track of them because their structure contains + * the keyword `AND`, which is also an operator that delimits + * expressions. + * + * @var bool + */ + $betweenBefore = false; + + for (; $list->idx < $list->count; ++$list->idx) { + /** + * Token parsed at this moment. + * + * @var Token + */ + $token = $list->tokens[$list->idx]; + + // End of statement. + if ($token->type === Token::TYPE_DELIMITER) { + break; + } + + // Skipping whitespaces and comments. + if ($token->type === Token::TYPE_COMMENT) { + continue; + } + + // Replacing all whitespaces (new lines, tabs, etc.) with a single + // space character. + if ($token->type === Token::TYPE_WHITESPACE) { + $expr->expr .= ' '; + continue; + } + + // Conditions are delimited by logical operators. + if (in_array($token->value, static::$DELIMITERS, true)) { + if ($betweenBefore && ($token->value === 'AND')) { + // The syntax of keyword `BETWEEN` is hard-coded. + $betweenBefore = false; + } else { + // The expression ended. + $expr->expr = trim($expr->expr); + if (! empty($expr->expr)) { + $ret[] = $expr; + } + + // Adding the operator. + $expr = new static($token->value); + $expr->isOperator = true; + $ret[] = $expr; + + // Preparing to parse another condition. + $expr = new static(); + continue; + } + } + + if ( + ($token->type === Token::TYPE_KEYWORD) + && ($token->flags & Token::FLAG_KEYWORD_RESERVED) + && ! ($token->flags & Token::FLAG_KEYWORD_FUNCTION) + ) { + if ($token->value === 'BETWEEN') { + $betweenBefore = true; + } + + if (($brackets === 0) && empty(static::$ALLOWED_KEYWORDS[$token->value])) { + break; + } + } + + if ($token->type === Token::TYPE_OPERATOR) { + if ($token->value === '(') { + ++$brackets; + } elseif ($token->value === ')') { + if ($brackets === 0) { + break; + } + + --$brackets; + } + } + + $expr->expr .= $token->token; + if ( + ($token->type !== Token::TYPE_NONE) + && (($token->type !== Token::TYPE_KEYWORD) + || ($token->flags & Token::FLAG_KEYWORD_RESERVED)) + && ($token->type !== Token::TYPE_STRING) + && ($token->type !== Token::TYPE_SYMBOL) + ) { + continue; + } + + if (in_array($token->value, $expr->identifiers)) { + continue; + } + + $expr->identifiers[] = $token->value; + } + + // Last iteration was not processed. + $expr->expr = trim($expr->expr); + if (! empty($expr->expr)) { + $ret[] = $expr; + } + + --$list->idx; + + return $ret; + } + + /** + * @param Condition[] $component the component to be built + * @param array $options parameters for building + * + * @return string + */ + public static function build($component, array $options = []) + { + if (is_array($component)) { + return implode(' ', $component); + } + + return $component->expr; + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Components/CreateDefinition.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Components/CreateDefinition.php new file mode 100644 index 0000000000..4aad9f88fb --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Components/CreateDefinition.php @@ -0,0 +1,363 @@ + true, + + 'NOT NULL' => 1, + 'NULL' => 1, + 'DEFAULT' => [ + 2, + 'expr', + ['breakOnAlias' => true], + ], + /* Following are not according to grammar, but MySQL happily accepts + * these at any location */ + 'CHARSET' => [ + 2, + 'var', + ], + 'COLLATE' => [ + 3, + 'var', + ], + 'AUTO_INCREMENT' => 3, + 'PRIMARY' => 4, + 'PRIMARY KEY' => 4, + 'UNIQUE' => 4, + 'UNIQUE KEY' => 4, + 'COMMENT' => [ + 5, + 'var', + ], + 'COLUMN_FORMAT' => [ + 6, + 'var', + ], + 'ON UPDATE' => [ + 7, + 'expr', + ], + + // Generated columns options. + 'GENERATED ALWAYS' => 8, + 'AS' => [ + 9, + 'expr', + ['parenthesesDelimited' => true], + ], + 'VIRTUAL' => 10, + 'PERSISTENT' => 11, + 'STORED' => 11, + 'CHECK' => [ + 12, + 'expr', + ['parenthesesDelimited' => true], + ], + 'INVISIBLE' => 13, + 'ENFORCED' => 14, + 'NOT' => 15, + // Common entries. + // + // NOTE: Some of the common options are not in the same order which + // causes troubles when checking if the options are in the right order. + // I should find a way to define multiple sets of options and make the + // parser select the right set. + // + // 'UNIQUE' => 4, + // 'UNIQUE KEY' => 4, + // 'COMMENT' => [5, 'var'], + // 'NOT NULL' => 1, + // 'NULL' => 1, + // 'PRIMARY' => 4, + // 'PRIMARY KEY' => 4, + ]; + + /** + * The name of the new column. + * + * @var string + */ + public $name; + + /** + * Whether this field is a constraint or not. + * + * @var bool + */ + public $isConstraint; + + /** + * The data type of thew new column. + * + * @var DataType + */ + public $type; + + /** + * The key. + * + * @var Key + */ + public $key; + + /** + * The table that is referenced. + * + * @var Reference + */ + public $references; + + /** + * The options of this field. + * + * @var OptionsArray + */ + public $options; + + /** + * @param string $name the name of the field + * @param OptionsArray $options the options of this field + * @param DataType|Key $type the data type of this field or the key + * @param bool $isConstraint whether this field is a constraint or not + * @param Reference $references references + */ + public function __construct( + $name = null, + $options = null, + $type = null, + $isConstraint = false, + $references = null + ) { + $this->name = $name; + $this->options = $options; + if ($type instanceof DataType) { + $this->type = $type; + } elseif ($type instanceof Key) { + $this->key = $type; + $this->isConstraint = $isConstraint; + $this->references = $references; + } + } + + /** + * @param Parser $parser the parser that serves as context + * @param TokensList $list the list of tokens that are being parsed + * @param array $options parameters for parsing + * + * @return CreateDefinition[] + */ + public static function parse(Parser $parser, TokensList $list, array $options = []) + { + $ret = []; + + $expr = new static(); + + /** + * The state of the parser. + * + * Below are the states of the parser. + * + * 0 -----------------------[ ( ]------------------------> 1 + * + * 1 --------------------[ CONSTRAINT ]------------------> 1 + * 1 -----------------------[ key ]----------------------> 2 + * 1 -------------[ constraint / column name ]-----------> 2 + * + * 2 --------------------[ data type ]-------------------> 3 + * + * 3 ---------------------[ options ]--------------------> 4 + * + * 4 --------------------[ REFERENCES ]------------------> 4 + * + * 5 ------------------------[ , ]-----------------------> 1 + * 5 ------------------------[ ) ]-----------------------> 6 (-1) + * + * @var int + */ + $state = 0; + + for (; $list->idx < $list->count; ++$list->idx) { + /** + * Token parsed at this moment. + * + * @var Token + */ + $token = $list->tokens[$list->idx]; + + // End of statement. + if ($token->type === Token::TYPE_DELIMITER) { + break; + } + + // Skipping whitespaces and comments. + if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { + continue; + } + + if ($state === 0) { + if (($token->type !== Token::TYPE_OPERATOR) || ($token->value !== '(')) { + $parser->error('An opening bracket was expected.', $token); + + break; + } + + $state = 1; + } elseif ($state === 1) { + if ($token->type === Token::TYPE_KEYWORD && $token->keyword === 'CONSTRAINT') { + $expr->isConstraint = true; + } elseif (($token->type === Token::TYPE_KEYWORD) && ($token->flags & Token::FLAG_KEYWORD_KEY)) { + $expr->key = Key::parse($parser, $list); + $state = 4; + } elseif ($token->type === Token::TYPE_SYMBOL || $token->type === Token::TYPE_NONE) { + $expr->name = $token->value; + if (! $expr->isConstraint) { + $state = 2; + } + } elseif ($token->type === Token::TYPE_KEYWORD) { + if ($token->flags & Token::FLAG_KEYWORD_RESERVED) { + // Reserved keywords can't be used + // as field names without backquotes + $parser->error( + 'A symbol name was expected! ' + . 'A reserved keyword can not be used ' + . 'as a column name without backquotes.', + $token + ); + + return $ret; + } + + // Non-reserved keywords are allowed without backquotes + $expr->name = $token->value; + $state = 2; + } else { + $parser->error('A symbol name was expected!', $token); + + return $ret; + } + } elseif ($state === 2) { + $expr->type = DataType::parse($parser, $list); + $state = 3; + } elseif ($state === 3) { + $expr->options = OptionsArray::parse($parser, $list, static::$FIELD_OPTIONS); + $state = 4; + } elseif ($state === 4) { + if ($token->type === Token::TYPE_KEYWORD && $token->keyword === 'REFERENCES') { + ++$list->idx; // Skipping keyword 'REFERENCES'. + $expr->references = Reference::parse($parser, $list); + } else { + --$list->idx; + } + + $state = 5; + } elseif ($state === 5) { + if (! empty($expr->type) || ! empty($expr->key)) { + $ret[] = $expr; + } + + $expr = new static(); + if ($token->value === ',') { + $state = 1; + } elseif ($token->value === ')') { + $state = 6; + ++$list->idx; + break; + } else { + $parser->error('A comma or a closing bracket was expected.', $token); + $state = 0; + break; + } + } + } + + // Last iteration was not saved. + if (! empty($expr->type) || ! empty($expr->key)) { + $ret[] = $expr; + } + + if (($state !== 0) && ($state !== 6)) { + $parser->error('A closing bracket was expected.', $list->tokens[$list->idx - 1]); + } + + --$list->idx; + + return $ret; + } + + /** + * @param CreateDefinition|CreateDefinition[] $component the component to be built + * @param array $options parameters for building + * + * @return string + */ + public static function build($component, array $options = []) + { + if (is_array($component)) { + return "(\n " . implode(",\n ", $component) . "\n)"; + } + + $tmp = ''; + + if ($component->isConstraint) { + $tmp .= 'CONSTRAINT '; + } + + if (isset($component->name) && ($component->name !== '')) { + $tmp .= Context::escape($component->name) . ' '; + } + + if (! empty($component->type)) { + $tmp .= DataType::build( + $component->type, + ['lowercase' => true] + ) . ' '; + } + + if (! empty($component->key)) { + $tmp .= $component->key . ' '; + } + + if (! empty($component->references)) { + $tmp .= 'REFERENCES ' . $component->references . ' '; + } + + $tmp .= $component->options; + + return trim($tmp); + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Components/DataType.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Components/DataType.php new file mode 100644 index 0000000000..812385e004 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Components/DataType.php @@ -0,0 +1,179 @@ + 1, + 'CHARACTER SET' => [ + 2, + 'var', + ], + 'CHARSET' => [ + 2, + 'var', + ], + 'COLLATE' => [ + 3, + 'var', + ], + 'UNSIGNED' => 4, + 'ZEROFILL' => 5, + ]; + + /** + * The name of the data type. + * + * @var string + */ + public $name; + + /** + * The parameters of this data type. + * + * Some data types have no parameters. + * Numeric types might have parameters for the maximum number of digits, + * precision, etc. + * String types might have parameters for the maximum length stored. + * `ENUM` and `SET` have parameters for possible values. + * + * For more information, check the MySQL manual. + * + * @var array + */ + public $parameters = []; + + /** + * The options of this data type. + * + * @var OptionsArray + */ + public $options; + + /** + * @param string $name the name of this data type + * @param array $parameters the parameters (size or possible values) + * @param OptionsArray $options the options of this data type + */ + public function __construct( + $name = null, + array $parameters = [], + $options = null + ) { + $this->name = $name; + $this->parameters = $parameters; + $this->options = $options; + } + + /** + * @param Parser $parser the parser that serves as context + * @param TokensList $list the list of tokens that are being parsed + * @param array $options parameters for parsing + * + * @return DataType|null + */ + public static function parse(Parser $parser, TokensList $list, array $options = []) + { + $ret = new static(); + + /** + * The state of the parser. + * + * Below are the states of the parser. + * + * 0 -------------------[ data type ]--------------------> 1 + * + * 1 ----------------[ size and options ]----------------> 2 + * + * @var int + */ + $state = 0; + + for (; $list->idx < $list->count; ++$list->idx) { + /** + * Token parsed at this moment. + * + * @var Token + */ + $token = $list->tokens[$list->idx]; + + // Skipping whitespaces and comments. + if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { + continue; + } + + if ($state === 0) { + $ret->name = strtoupper((string) $token->value); + if (($token->type !== Token::TYPE_KEYWORD) || (! ($token->flags & Token::FLAG_KEYWORD_DATA_TYPE))) { + $parser->error('Unrecognized data type.', $token); + } + + $state = 1; + } elseif ($state === 1) { + if (($token->type === Token::TYPE_OPERATOR) && ($token->value === '(')) { + $parameters = ArrayObj::parse($parser, $list); + ++$list->idx; + $ret->parameters = ($ret->name === 'ENUM') || ($ret->name === 'SET') ? + $parameters->raw : $parameters->values; + } + + $ret->options = OptionsArray::parse($parser, $list, static::$DATA_TYPE_OPTIONS); + ++$list->idx; + break; + } + } + + if (empty($ret->name)) { + return null; + } + + --$list->idx; + + return $ret; + } + + /** + * @param DataType $component the component to be built + * @param array $options parameters for building + * + * @return string + */ + public static function build($component, array $options = []) + { + $name = empty($options['lowercase']) ? + $component->name : strtolower($component->name); + + $parameters = ''; + if (! empty($component->parameters)) { + $parameters = '(' . implode(',', $component->parameters) . ')'; + } + + return trim($name . $parameters . ' ' . $component->options); + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Components/Expression.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Components/Expression.php new file mode 100644 index 0000000000..54f639e89b --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Components/Expression.php @@ -0,0 +1,473 @@ + 1, + 'DUAL' => 1, + 'NULL' => 1, + 'REGEXP' => 1, + 'CASE' => 1, + 'DIV' => 1, + 'AND' => 1, + 'OR' => 1, + 'XOR' => 1, + 'NOT' => 1, + 'MOD' => 1, + + 'OVER' => 2, + ]; + + /** + * The name of this database. + * + * @var string + */ + public $database; + + /** + * The name of this table. + * + * @var string + */ + public $table; + + /** + * The name of the column. + * + * @var string + */ + public $column; + + /** + * The sub-expression. + * + * @var string + */ + public $expr = ''; + + /** + * The alias of this expression. + * + * @var string + */ + public $alias; + + /** + * The name of the function. + * + * @var mixed + */ + public $function; + + /** + * The type of subquery. + * + * @var string + */ + public $subquery; + + /** + * Syntax: + * new Expression('expr') + * new Expression('expr', 'alias') + * new Expression('database', 'table', 'column') + * new Expression('database', 'table', 'column', 'alias') + * + * If the database, table or column name is not required, pass an empty + * string. + * + * @param string $database The name of the database or the the expression. + * the the expression. + * @param string $table The name of the table or the alias of the expression. + * the alias of the expression. + * @param string $column the name of the column + * @param string $alias the name of the alias + */ + public function __construct($database = null, $table = null, $column = null, $alias = null) + { + if (($column === null) && ($alias === null)) { + $this->expr = $database; // case 1 + $this->alias = $table; // case 2 + } else { + $this->database = $database; // case 3 + $this->table = $table; // case 3 + $this->column = $column; // case 3 + $this->alias = $alias; // case 4 + } + } + + /** + * Possible options:. + * + * `field` + * + * First field to be filled. + * If this is not specified, it takes the value of `parseField`. + * + * `parseField` + * + * Specifies the type of the field parsed. It may be `database`, + * `table` or `column`. These expressions may not include + * parentheses. + * + * `breakOnAlias` + * + * If not empty, breaks when the alias occurs (it is not included). + * + * `breakOnParentheses` + * + * If not empty, breaks when the first parentheses occurs. + * + * `parenthesesDelimited` + * + * If not empty, breaks after last parentheses occurred. + * + * @param Parser $parser the parser that serves as context + * @param TokensList $list the list of tokens that are being parsed + * @param array $options parameters for parsing + * + * @return Expression|null + * + * @throws ParserException + */ + public static function parse(Parser $parser, TokensList $list, array $options = []) + { + $ret = new static(); + + /** + * Whether current tokens make an expression or a table reference. + * + * @var bool + */ + $isExpr = false; + + /** + * Whether a period was previously found. + * + * @var bool + */ + $dot = false; + + /** + * Whether an alias is expected. Is 2 if `AS` keyword was found. + * + * @var bool + */ + $alias = false; + + /** + * Counts brackets. + * + * @var int + */ + $brackets = 0; + + /** + * Keeps track of the last two previous tokens. + * + * @var Token[] + */ + $prev = [ + null, + null, + ]; + + // When a field is parsed, no parentheses are expected. + if (! empty($options['parseField'])) { + $options['breakOnParentheses'] = true; + $options['field'] = $options['parseField']; + } + + for (; $list->idx < $list->count; ++$list->idx) { + /** + * Token parsed at this moment. + * + * @var Token + */ + $token = $list->tokens[$list->idx]; + + // End of statement. + if ($token->type === Token::TYPE_DELIMITER) { + break; + } + + // Skipping whitespaces and comments. + if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { + if ($isExpr) { + $ret->expr .= $token->token; + } + + continue; + } + + if ($token->type === Token::TYPE_KEYWORD) { + if (($brackets > 0) && empty($ret->subquery) && ! empty(Parser::$STATEMENT_PARSERS[$token->keyword])) { + // A `(` was previously found and this keyword is the + // beginning of a statement, so this is a subquery. + $ret->subquery = $token->keyword; + } elseif ( + ($token->flags & Token::FLAG_KEYWORD_FUNCTION) + && (empty($options['parseField']) + && ! $alias) + ) { + $isExpr = true; + } elseif (($token->flags & Token::FLAG_KEYWORD_RESERVED) && ($brackets === 0)) { + if (empty(self::$ALLOWED_KEYWORDS[$token->keyword])) { + // A reserved keyword that is not allowed in the + // expression was found so the expression must have + // ended and a new clause is starting. + break; + } + + if ($token->keyword === 'AS') { + if (! empty($options['breakOnAlias'])) { + break; + } + + if ($alias) { + $parser->error('An alias was expected.', $token); + break; + } + + $alias = true; + continue; + } + + if ($token->keyword === 'CASE') { + // For a use of CASE like + // 'SELECT a = CASE .... END, b=1, `id`, ... FROM ...' + $tempCaseExpr = CaseExpression::parse($parser, $list); + $ret->expr .= CaseExpression::build($tempCaseExpr); + $isExpr = true; + continue; + } + + $isExpr = true; + } elseif ($brackets === 0 && strlen((string) $ret->expr) > 0 && ! $alias) { + /* End of expression */ + break; + } + } + + if ( + ($token->type === Token::TYPE_NUMBER) + || ($token->type === Token::TYPE_BOOL) + || (($token->type === Token::TYPE_SYMBOL) + && ($token->flags & Token::FLAG_SYMBOL_VARIABLE)) + || (($token->type === Token::TYPE_SYMBOL) + && ($token->flags & Token::FLAG_SYMBOL_PARAMETER)) + || (($token->type === Token::TYPE_OPERATOR) + && ($token->value !== '.')) + ) { + if (! empty($options['parseField'])) { + break; + } + + // Numbers, booleans and operators (except dot) are usually part + // of expressions. + $isExpr = true; + } + + if ($token->type === Token::TYPE_OPERATOR) { + if (! empty($options['breakOnParentheses']) && (($token->value === '(') || ($token->value === ')'))) { + // No brackets were expected. + break; + } + + if ($token->value === '(') { + ++$brackets; + if ( + empty($ret->function) && ($prev[1] !== null) + && (($prev[1]->type === Token::TYPE_NONE) + || ($prev[1]->type === Token::TYPE_SYMBOL) + || (($prev[1]->type === Token::TYPE_KEYWORD) + && ($prev[1]->flags & Token::FLAG_KEYWORD_FUNCTION))) + ) { + $ret->function = $prev[1]->value; + } + } elseif ($token->value === ')') { + if ($brackets === 0) { + // Not our bracket + break; + } + + --$brackets; + if ($brackets === 0) { + if (! empty($options['parenthesesDelimited'])) { + // The current token is the last bracket, the next + // one will be outside the expression. + $ret->expr .= $token->token; + ++$list->idx; + break; + } + } elseif ($brackets < 0) { + // $parser->error('Unexpected closing bracket.', $token); + // $brackets = 0; + break; + } + } elseif ($token->value === ',') { + // Expressions are comma-delimited. + if ($brackets === 0) { + break; + } + } + } + + // Saving the previous tokens. + $prev[0] = $prev[1]; + $prev[1] = $token; + + if ($alias) { + // An alias is expected (the keyword `AS` was previously found). + if (! empty($ret->alias)) { + $parser->error('An alias was previously found.', $token); + break; + } + + $ret->alias = $token->value; + $alias = false; + } elseif ($isExpr) { + // Handling aliases. + if ( + $brackets === 0 + && ($prev[0] === null + || (($prev[0]->type !== Token::TYPE_OPERATOR || $prev[0]->token === ')') + && ($prev[0]->type !== Token::TYPE_KEYWORD + || ! ($prev[0]->flags & Token::FLAG_KEYWORD_RESERVED)))) + && (($prev[1]->type === Token::TYPE_STRING) + || ($prev[1]->type === Token::TYPE_SYMBOL + && ! ($prev[1]->flags & Token::FLAG_SYMBOL_VARIABLE)) + || ($prev[1]->type === Token::TYPE_NONE)) + ) { + if (! empty($ret->alias)) { + $parser->error('An alias was previously found.', $token); + break; + } + + $ret->alias = $prev[1]->value; + } else { + $ret->expr .= $token->token; + } + } elseif (! $isExpr) { + if (($token->type === Token::TYPE_OPERATOR) && ($token->value === '.')) { + // Found a `.` which means we expect a column name and + // the column name we parsed is actually the table name + // and the table name is actually a database name. + if (! empty($ret->database) || $dot) { + $parser->error('Unexpected dot.', $token); + } + + $ret->database = $ret->table; + $ret->table = $ret->column; + $ret->column = null; + $dot = true; + $ret->expr .= $token->token; + } else { + $field = empty($options['field']) ? 'column' : $options['field']; + if (empty($ret->$field)) { + $ret->$field = $token->value; + $ret->expr .= $token->token; + $dot = false; + } else { + // No alias is expected. + if (! empty($options['breakOnAlias'])) { + break; + } + + if (! empty($ret->alias)) { + $parser->error('An alias was previously found.', $token); + break; + } + + $ret->alias = $token->value; + } + } + } + } + + if ($alias) { + $parser->error('An alias was expected.', $list->tokens[$list->idx - 1]); + } + + // White-spaces might be added at the end. + $ret->expr = trim((string) $ret->expr); + + if ($ret->expr === '') { + return null; + } + + --$list->idx; + + return $ret; + } + + /** + * @param Expression|Expression[] $component the component to be built + * @param array $options parameters for building + * + * @return string + */ + public static function build($component, array $options = []) + { + if (is_array($component)) { + return implode(', ', $component); + } + + if ($component->expr !== '' && $component->expr !== null) { + $ret = $component->expr; + } else { + $fields = []; + if (isset($component->database) && ($component->database !== '')) { + $fields[] = $component->database; + } + + if (isset($component->table) && ($component->table !== '')) { + $fields[] = $component->table; + } + + if (isset($component->column) && ($component->column !== '')) { + $fields[] = $component->column; + } + + $ret = implode('.', Context::escape($fields)); + } + + if (! empty($component->alias)) { + $ret .= ' AS ' . Context::escape($component->alias); + } + + return $ret; + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Components/ExpressionArray.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Components/ExpressionArray.php new file mode 100644 index 0000000000..25091bbac1 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Components/ExpressionArray.php @@ -0,0 +1,144 @@ + 1 + * + * 1 ------------------------[ , ]------------------------> 0 + * 1 -----------------------[ else ]----------------------> (END) + * + * @var int + */ + $state = 0; + + for (; $list->idx < $list->count; ++$list->idx) { + /** + * Token parsed at this moment. + * + * @var Token + */ + $token = $list->tokens[$list->idx]; + + // End of statement. + if ($token->type === Token::TYPE_DELIMITER) { + break; + } + + // Skipping whitespaces and comments. + if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { + continue; + } + + if ( + ($token->type === Token::TYPE_KEYWORD) + && ($token->flags & Token::FLAG_KEYWORD_RESERVED) + && ((~$token->flags & Token::FLAG_KEYWORD_FUNCTION)) + && ($token->value !== 'DUAL') + && ($token->value !== 'NULL') + && ($token->value !== 'CASE') + ) { + // No keyword is expected. + break; + } + + if ($state === 0) { + if ($token->type === Token::TYPE_KEYWORD && $token->value === 'CASE') { + $expr = CaseExpression::parse($parser, $list, $options); + } else { + $expr = Expression::parse($parser, $list, $options); + } + + if ($expr === null) { + break; + } + + $ret[] = $expr; + $state = 1; + } elseif ($state === 1) { + if ($token->value !== ',') { + break; + } + + $state = 0; + } + } + + if ($state === 0) { + $parser->error('An expression was expected.', $list->tokens[$list->idx]); + } + + --$list->idx; + + if (is_array($ret)) { + $retIndex = count($ret) - 1; + if (isset($ret[$retIndex])) { + $expr = $ret[$retIndex]->expr; + if (preg_match('/\s*--\s.*$/', $expr, $matches)) { + $found = $matches[0]; + $ret[$retIndex]->expr = substr($expr, 0, strlen($expr) - strlen($found)); + } + } + } + + return $ret; + } + + /** + * @param Expression[] $component the component to be built + * @param array $options parameters for building + * + * @return string + */ + public static function build($component, array $options = []) + { + $ret = []; + foreach ($component as $frag) { + $ret[] = $frag::build($frag); + } + + return implode(', ', $ret); + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Components/FunctionCall.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Components/FunctionCall.php new file mode 100644 index 0000000000..be09fd7836 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Components/FunctionCall.php @@ -0,0 +1,119 @@ +name = $name; + if (is_array($parameters)) { + $this->parameters = new ArrayObj($parameters); + } elseif ($parameters instanceof ArrayObj) { + $this->parameters = $parameters; + } + } + + /** + * @param Parser $parser the parser that serves as context + * @param TokensList $list the list of tokens that are being parsed + * @param array $options parameters for parsing + * + * @return FunctionCall + */ + public static function parse(Parser $parser, TokensList $list, array $options = []) + { + $ret = new static(); + + /** + * The state of the parser. + * + * Below are the states of the parser. + * + * 0 ----------------------[ name ]-----------------------> 1 + * + * 1 --------------------[ parameters ]-------------------> (END) + * + * @var int + */ + $state = 0; + + for (; $list->idx < $list->count; ++$list->idx) { + /** + * Token parsed at this moment. + * + * @var Token + */ + $token = $list->tokens[$list->idx]; + + // End of statement. + if ($token->type === Token::TYPE_DELIMITER) { + break; + } + + // Skipping whitespaces and comments. + if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { + continue; + } + + if ($state === 0) { + $ret->name = $token->value; + $state = 1; + } elseif ($state === 1) { + if (($token->type === Token::TYPE_OPERATOR) && ($token->value === '(')) { + $ret->parameters = ArrayObj::parse($parser, $list); + } + + break; + } + } + + return $ret; + } + + /** + * @param FunctionCall $component the component to be built + * @param array $options parameters for building + * + * @return string + */ + public static function build($component, array $options = []) + { + return $component->name . $component->parameters; + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Components/GroupKeyword.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Components/GroupKeyword.php new file mode 100644 index 0000000000..e2a046e9c9 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Components/GroupKeyword.php @@ -0,0 +1,135 @@ +expr = $expr; + } + + /** + * @param Parser $parser the parser that serves as context + * @param TokensList $list the list of tokens that are being parsed + * @param array $options parameters for parsing + * + * @return GroupKeyword[] + */ + public static function parse(Parser $parser, TokensList $list, array $options = []) + { + $ret = []; + + $expr = new static(); + + /** + * The state of the parser. + * + * Below are the states of the parser. + * + * 0 --------------------[ expression ]-------------------> 1 + * + * 1 ------------------------[ , ]------------------------> 0 + * 1 -------------------[ ASC / DESC ]--------------------> 1 + * + * @var int + */ + $state = 0; + + for (; $list->idx < $list->count; ++$list->idx) { + /** + * Token parsed at this moment. + * + * @var Token + */ + $token = $list->tokens[$list->idx]; + + // End of statement. + if ($token->type === Token::TYPE_DELIMITER) { + break; + } + + // Skipping whitespaces and comments. + if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { + continue; + } + + if ($state === 0) { + $expr->expr = Expression::parse($parser, $list); + $state = 1; + } elseif ($state === 1) { + if ( + ($token->type === Token::TYPE_KEYWORD) + && (($token->keyword === 'ASC') || ($token->keyword === 'DESC')) + ) { + $expr->type = $token->keyword; + } elseif (($token->type === Token::TYPE_OPERATOR) && ($token->value === ',')) { + if (! empty($expr->expr)) { + $ret[] = $expr; + } + + $expr = new static(); + $state = 0; + } else { + break; + } + } + } + + // Last iteration was not processed. + if (! empty($expr->expr)) { + $ret[] = $expr; + } + + --$list->idx; + + return $ret; + } + + /** + * @param GroupKeyword|GroupKeyword[] $component the component to be built + * @param array $options parameters for building + * + * @return string + */ + public static function build($component, array $options = []) + { + if (is_array($component)) { + return implode(', ', $component); + } + + return trim((string) $component->expr); + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Components/IndexHint.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Components/IndexHint.php new file mode 100644 index 0000000000..1f0ce4bbeb --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Components/IndexHint.php @@ -0,0 +1,212 @@ +type = $type; + $this->indexOrKey = $indexOrKey; + $this->for = $for; + $this->indexes = $indexes; + } + + /** + * @param Parser $parser the parser that serves as context + * @param TokensList $list the list of tokens that are being parsed + * @param array $options parameters for parsing + * + * @return IndexHint|Component[] + */ + public static function parse(Parser $parser, TokensList $list, array $options = []) + { + $ret = []; + $expr = new static(); + $expr->type = $options['type'] ?? null; + /** + * The state of the parser. + * + * Below are the states of the parser. + * 0 ----------------- [ USE/IGNORE/FORCE ]-----------------> 1 + * 1 -------------------- [ INDEX/KEY ] --------------------> 2 + * 2 ----------------------- [ FOR ] -----------------------> 3 + * 2 -------------------- [ expr_list ] --------------------> 0 + * 3 -------------- [ JOIN/GROUP BY/ORDER BY ] -------------> 4 + * 4 -------------------- [ expr_list ] --------------------> 0 + * + * @var int + */ + $state = 0; + + // By design, the parser will parse first token after the keyword. So, the keyword + // must be analyzed too, in order to determine the type of this index hint. + if ($list->idx > 0) { + --$list->idx; + } + + for (; $list->idx < $list->count; ++$list->idx) { + /** + * Token parsed at this moment. + * + * @var Token + */ + $token = $list->tokens[$list->idx]; + + // End of statement. + if ($token->type === Token::TYPE_DELIMITER) { + break; + } + + // Skipping whitespaces and comments. + if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { + continue; + } + + switch ($state) { + case 0: + if ($token->type === Token::TYPE_KEYWORD) { + if ($token->keyword !== 'USE' && $token->keyword !== 'IGNORE' && $token->keyword !== 'FORCE') { + break 2; + } + + $expr->type = $token->keyword; + $state = 1; + } + + break; + case 1: + if ($token->type === Token::TYPE_KEYWORD) { + if ($token->keyword === 'INDEX' || $token->keyword === 'KEY') { + $expr->indexOrKey = $token->keyword; + } else { + $parser->error('Unexpected keyword.', $token); + } + + $state = 2; + } else { + // we expect the token to be a keyword + $parser->error('Unexpected token.', $token); + } + + break; + case 2: + if ($token->type === Token::TYPE_KEYWORD && $token->keyword === 'FOR') { + $state = 3; + } else { + $expr->indexes = ExpressionArray::parse($parser, $list); + $state = 0; + $ret[] = $expr; + $expr = new static(); + } + + break; + case 3: + if ($token->type === Token::TYPE_KEYWORD) { + if ( + $token->keyword === 'JOIN' + || $token->keyword === 'GROUP BY' + || $token->keyword === 'ORDER BY' + ) { + $expr->for = $token->keyword; + } else { + $parser->error('Unexpected keyword.', $token); + } + + $state = 4; + } else { + // we expect the token to be a keyword + $parser->error('Unexpected token.', $token); + } + + break; + case 4: + $expr->indexes = ExpressionArray::parse($parser, $list); + $state = 0; + $ret[] = $expr; + $expr = new static(); + break; + } + } + + --$list->idx; + + return $ret; + } + + /** + * @param IndexHint|IndexHint[] $component the component to be built + * @param array $options parameters for building + * + * @return string + */ + public static function build($component, array $options = []) + { + if (is_array($component)) { + return implode(' ', $component); + } + + $ret = $component->type . ' ' . $component->indexOrKey . ' '; + if ($component->for !== null) { + $ret .= 'FOR ' . $component->for . ' '; + } + + return $ret . ExpressionArray::build($component->indexes); + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Components/IntoKeyword.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Components/IntoKeyword.php new file mode 100644 index 0000000000..fce6e0a514 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Components/IntoKeyword.php @@ -0,0 +1,301 @@ + [ + 1, + 'expr', + ], + 'OPTIONALLY' => 2, + 'ENCLOSED BY' => [ + 3, + 'expr', + ], + 'ESCAPED BY' => [ + 4, + 'expr', + ], + ]; + + /** + * LINES Options for `SELECT...INTO` statements. + * + * @var array + */ + public static $LINES_OPTIONS = [ + 'STARTING BY' => [ + 1, + 'expr', + ], + 'TERMINATED BY' => [ + 2, + 'expr', + ], + ]; + + /** + * Type of target (OUTFILE or SYMBOL). + * + * @var string + */ + public $type; + + /** + * The destination, which can be a table or a file. + * + * @var string|Expression + */ + public $dest; + + /** + * The name of the columns. + * + * @var array + */ + public $columns; + + /** + * The values to be selected into (SELECT .. INTO @var1). + * + * @var Expression[] + */ + public $values; + + /** + * Options for FIELDS/COLUMNS keyword. + * + * @see static::$FIELDS_OPTIONS + * + * @var OptionsArray + */ + public $fields_options; + + /** + * Whether to use `FIELDS` or `COLUMNS` while building. + * + * @var bool + */ + public $fields_keyword; + + /** + * Options for OPTIONS keyword. + * + * @see static::$LINES_OPTIONS + * + * @var OptionsArray + */ + public $lines_options; + + /** + * @param string $type type of destination (may be OUTFILE) + * @param string|Expression $dest actual destination + * @param array $columns column list of destination + * @param array $values selected fields + * @param OptionsArray $fieldsOptions options for FIELDS/COLUMNS keyword + * @param bool $fieldsKeyword options for OPTIONS keyword + */ + public function __construct( + $type = null, + $dest = null, + $columns = null, + $values = null, + $fieldsOptions = null, + $fieldsKeyword = null + ) { + $this->type = $type; + $this->dest = $dest; + $this->columns = $columns; + $this->values = $values; + $this->fields_options = $fieldsOptions; + $this->fields_keyword = $fieldsKeyword; + } + + /** + * @param Parser $parser the parser that serves as context + * @param TokensList $list the list of tokens that are being parsed + * @param array $options parameters for parsing + * + * @return IntoKeyword + */ + public static function parse(Parser $parser, TokensList $list, array $options = []) + { + $ret = new static(); + + /** + * The state of the parser. + * + * Below are the states of the parser. + * + * 0 -----------------------[ name ]----------------------> 1 + * 0 ---------------------[ OUTFILE ]---------------------> 2 + * + * 1 ------------------------[ ( ]------------------------> (END) + * + * 2 ---------------------[ filename ]--------------------> 1 + * + * @var int + */ + $state = 0; + + for (; $list->idx < $list->count; ++$list->idx) { + /** + * Token parsed at this moment. + * + * @var Token + */ + $token = $list->tokens[$list->idx]; + + // End of statement. + if ($token->type === Token::TYPE_DELIMITER) { + break; + } + + // Skipping whitespaces and comments. + if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { + continue; + } + + if (($token->type === Token::TYPE_KEYWORD) && ($token->flags & Token::FLAG_KEYWORD_RESERVED)) { + if (($state === 0) && ($token->keyword === 'OUTFILE')) { + $ret->type = 'OUTFILE'; + $state = 2; + continue; + } + + // No other keyword is expected except for $state = 4, which expects `LINES` + if ($state !== 4) { + break; + } + } + + if ($state === 0) { + if ( + (isset($options['fromInsert']) + && $options['fromInsert']) + || (isset($options['fromReplace']) + && $options['fromReplace']) + ) { + $ret->dest = Expression::parse( + $parser, + $list, + [ + 'parseField' => 'table', + 'breakOnAlias' => true, + ] + ); + } else { + $ret->values = ExpressionArray::parse($parser, $list); + } + + $state = 1; + } elseif ($state === 1) { + if (($token->type === Token::TYPE_OPERATOR) && ($token->value === '(')) { + $ret->columns = ArrayObj::parse($parser, $list)->values; + ++$list->idx; + } + + break; + } elseif ($state === 2) { + $ret->dest = $token->value; + + $state = 3; + } elseif ($state === 3) { + $ret->parseFileOptions($parser, $list, $token->value); + $state = 4; + } elseif ($state === 4) { + if ($token->type === Token::TYPE_KEYWORD && $token->keyword !== 'LINES') { + break; + } + + $ret->parseFileOptions($parser, $list, $token->value); + $state = 5; + } + } + + --$list->idx; + + return $ret; + } + + /** + * @param Parser $parser The parser + * @param TokensList $list A token list + * @param string $keyword They keyword + * + * @return void + */ + public function parseFileOptions(Parser $parser, TokensList $list, $keyword = 'FIELDS') + { + ++$list->idx; + + if ($keyword === 'FIELDS' || $keyword === 'COLUMNS') { + // parse field options + $this->fields_options = OptionsArray::parse($parser, $list, static::$FIELDS_OPTIONS); + + $this->fields_keyword = ($keyword === 'FIELDS'); + } else { + // parse line options + $this->lines_options = OptionsArray::parse($parser, $list, static::$LINES_OPTIONS); + } + } + + /** + * @param IntoKeyword $component the component to be built + * @param array $options parameters for building + * + * @return string + */ + public static function build($component, array $options = []) + { + if ($component->dest instanceof Expression) { + $columns = ! empty($component->columns) ? '(`' . implode('`, `', $component->columns) . '`)' : ''; + + return $component->dest . $columns; + } + + if (isset($component->values)) { + return ExpressionArray::build($component->values); + } + + $ret = 'OUTFILE "' . $component->dest . '"'; + + $fieldsOptionsString = OptionsArray::build($component->fields_options); + if (trim($fieldsOptionsString) !== '') { + $ret .= $component->fields_keyword ? ' FIELDS' : ' COLUMNS'; + $ret .= ' ' . $fieldsOptionsString; + } + + $linesOptionsString = OptionsArray::build($component->lines_options, ['expr' => true]); + if (trim($linesOptionsString) !== '') { + $ret .= ' LINES ' . $linesOptionsString; + } + + return $ret; + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Components/JoinKeyword.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Components/JoinKeyword.php new file mode 100644 index 0000000000..b1f35bea58 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Components/JoinKeyword.php @@ -0,0 +1,226 @@ + 'CROSS', + 'FULL JOIN' => 'FULL', + 'FULL OUTER JOIN' => 'FULL', + 'INNER JOIN' => 'INNER', + 'JOIN' => 'JOIN', + 'LEFT JOIN' => 'LEFT', + 'LEFT OUTER JOIN' => 'LEFT', + 'RIGHT JOIN' => 'RIGHT', + 'RIGHT OUTER JOIN' => 'RIGHT', + 'NATURAL JOIN' => 'NATURAL', + 'NATURAL LEFT JOIN' => 'NATURAL LEFT', + 'NATURAL RIGHT JOIN' => 'NATURAL RIGHT', + 'NATURAL LEFT OUTER JOIN' => 'NATURAL LEFT OUTER', + 'NATURAL RIGHT OUTER JOIN' => 'NATURAL RIGHT OUTER', + 'STRAIGHT_JOIN' => 'STRAIGHT', + ]; + + /** + * Type of this join. + * + * @see static::$JOINS + * + * @var string + */ + public $type; + + /** + * Join expression. + * + * @var Expression + */ + public $expr; + + /** + * Join conditions. + * + * @var Condition[] + */ + public $on; + + /** + * Columns in Using clause. + * + * @var ArrayObj + */ + public $using; + + /** + * @see JoinKeyword::$JOINS + * + * @param string $type Join type + * @param Expression $expr join expression + * @param Condition[] $on join conditions + * @param ArrayObj $using columns joined + */ + public function __construct($type = null, $expr = null, $on = null, $using = null) + { + $this->type = $type; + $this->expr = $expr; + $this->on = $on; + $this->using = $using; + } + + /** + * @param Parser $parser the parser that serves as context + * @param TokensList $list the list of tokens that are being parsed + * @param array $options parameters for parsing + * + * @return JoinKeyword[] + */ + public static function parse(Parser $parser, TokensList $list, array $options = []) + { + $ret = []; + + $expr = new static(); + + /** + * The state of the parser. + * + * Below are the states of the parser. + * + * 0 -----------------------[ JOIN ]----------------------> 1 + * + * 1 -----------------------[ expr ]----------------------> 2 + * + * 2 ------------------------[ ON ]-----------------------> 3 + * 2 -----------------------[ USING ]---------------------> 4 + * + * 3 --------------------[ conditions ]-------------------> 0 + * + * 4 ----------------------[ columns ]--------------------> 0 + * + * @var int + */ + $state = 0; + + // By design, the parser will parse first token after the keyword. + // In this case, the keyword must be analyzed too, in order to determine + // the type of this join. + if ($list->idx > 0) { + --$list->idx; + } + + for (; $list->idx < $list->count; ++$list->idx) { + /** + * Token parsed at this moment. + * + * @var Token + */ + $token = $list->tokens[$list->idx]; + + // End of statement. + if ($token->type === Token::TYPE_DELIMITER) { + break; + } + + // Skipping whitespaces and comments. + if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { + continue; + } + + if ($state === 0) { + if (($token->type !== Token::TYPE_KEYWORD) || empty(static::$JOINS[$token->keyword])) { + break; + } + + $expr->type = static::$JOINS[$token->keyword]; + $state = 1; + } elseif ($state === 1) { + $expr->expr = Expression::parse($parser, $list, ['field' => 'table']); + $state = 2; + } elseif ($state === 2) { + if ($token->type === Token::TYPE_KEYWORD) { + switch ($token->keyword) { + case 'ON': + $state = 3; + break; + case 'USING': + $state = 4; + break; + default: + if (empty(static::$JOINS[$token->keyword])) { + /* Next clause is starting */ + break 2; + } + + $ret[] = $expr; + $expr = new static(); + $expr->type = static::$JOINS[$token->keyword]; + $state = 1; + + break; + } + } + } elseif ($state === 3) { + $expr->on = Condition::parse($parser, $list); + $ret[] = $expr; + $expr = new static(); + $state = 0; + } elseif ($state === 4) { + $expr->using = ArrayObj::parse($parser, $list); + $ret[] = $expr; + $expr = new static(); + $state = 0; + } + } + + if (! empty($expr->type)) { + $ret[] = $expr; + } + + --$list->idx; + + return $ret; + } + + /** + * @param JoinKeyword[] $component the component to be built + * @param array $options parameters for building + * + * @return string + */ + public static function build($component, array $options = []) + { + $ret = []; + foreach ($component as $c) { + $ret[] = array_search($c->type, static::$JOINS) . ' ' . $c->expr + . (! empty($c->on) + ? ' ON ' . Condition::build($c->on) : '') + . (! empty($c->using) + ? ' USING ' . ArrayObj::build($c->using) : ''); + } + + return implode(' ', $ret); + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Components/Key.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Components/Key.php new file mode 100644 index 0000000000..4c3b24ef9a --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Components/Key.php @@ -0,0 +1,310 @@ + [ + 1, + 'var=', + ], + 'USING' => [ + 2, + 'var', + ], + 'WITH PARSER' => [ + 3, + 'var', + ], + 'COMMENT' => [ + 4, + 'var', + ], + // MariaDB options + 'CLUSTERING' => [ + 4, + 'var=', + ], + 'ENGINE_ATTRIBUTE' => [ + 5, + 'var=', + ], + 'SECONDARY_ENGINE_ATTRIBUTE' => [ + 5, + 'var=', + ], + // MariaDB & MySQL options + 'VISIBLE' => 6, + 'INVISIBLE' => 6, + // MariaDB options + 'IGNORED' => 10, + 'NOT IGNORED' => 10, + ]; + + /** + * The name of this key. + * + * @var string + */ + public $name; + + /** + * The key columns + * + * @var array[] + * @phpstan-var array{name?: string, length?: int, order?: string}[] + */ + public $columns; + + /** + * The type of this key. + * + * @var string + */ + public $type; + + /** + * The expression if the Key is not using column names + * + * @var string|null + */ + public $expr = null; + + /** + * The options of this key or null if none where found. + * + * @var OptionsArray|null + */ + public $options; + + /** + * @param string $name the name of the key + * @param array $columns the columns covered by this key + * @param string $type the type of this key + * @param OptionsArray $options the options of this key + */ + public function __construct( + $name = null, + array $columns = [], + $type = null, + $options = null + ) { + $this->name = $name; + $this->columns = $columns; + $this->type = $type; + $this->options = $options; + } + + /** + * @param Parser $parser the parser that serves as context + * @param TokensList $list the list of tokens that are being parsed + * @param array $options parameters for parsing + * + * @return Key + */ + public static function parse(Parser $parser, TokensList $list, array $options = []) + { + $ret = new static(); + + /** + * Last parsed column. + * + * @var array + */ + $lastColumn = []; + + /** + * The state of the parser. + * + * Below are the states of the parser. + * + * 0 ---------------------[ type ]---------------------------> 1 + * + * 1 ---------------------[ name ]---------------------------> 1 + * 1 ---------------------[ columns ]------------------------> 2 + * 1 ---------------------[ expression ]---------------------> 5 + * + * 2 ---------------------[ column length ]------------------> 3 + * 3 ---------------------[ column length ]------------------> 2 + * 2 ---------------------[ options ]------------------------> 4 + * 5 ---------------------[ expression ]---------------------> 4 + * + * @var int + */ + $state = 0; + + for (; $list->idx < $list->count; ++$list->idx) { + /** + * Token parsed at this moment. + * + * @var Token + */ + $token = $list->tokens[$list->idx]; + + // End of statement. + if ($token->type === Token::TYPE_DELIMITER) { + break; + } + + // Skipping whitespaces and comments. + if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { + continue; + } + + if ($state === 0) { + $ret->type = $token->value; + $state = 1; + } elseif ($state === 1) { + if (($token->type === Token::TYPE_OPERATOR) && ($token->value === '(')) { + $positionBeforeSearch = $list->idx; + $list->idx++;// Ignore the current token "(" or the search condition will always be true + $nextToken = $list->getNext(); + $list->idx = $positionBeforeSearch;// Restore the position + + if ($nextToken !== null && $nextToken->value === '(') { + // Switch to expression mode + $state = 5; + } else { + $state = 2; + } + } else { + $ret->name = $token->value; + } + } elseif ($state === 2) { + if ($token->type === Token::TYPE_OPERATOR) { + if ($token->value === '(') { + $state = 3; + } elseif (($token->value === ',') || ($token->value === ')')) { + $state = $token->value === ',' ? 2 : 4; + if (! empty($lastColumn)) { + $ret->columns[] = $lastColumn; + $lastColumn = []; + } + } + } elseif ( + ( + $token->type === Token::TYPE_KEYWORD + ) + && + ( + ($token->keyword === 'ASC') || ($token->keyword === 'DESC') + ) + ) { + $lastColumn['order'] = $token->keyword; + } else { + $lastColumn['name'] = $token->value; + } + } elseif ($state === 3) { + if (($token->type === Token::TYPE_OPERATOR) && ($token->value === ')')) { + $state = 2; + } else { + $lastColumn['length'] = $token->value; + } + } elseif ($state === 4) { + $ret->options = OptionsArray::parse($parser, $list, static::$KEY_OPTIONS); + ++$list->idx; + break; + } elseif ($state === 5) { + if ($token->type === Token::TYPE_OPERATOR) { + // This got back to here and we reached the end of the expression + if ($token->value === ')') { + $state = 4;// go back to state 4 to fetch options + continue; + } + + // The expression is not finished, adding a separator for the next expression + if ($token->value === ',') { + $ret->expr .= ', '; + continue; + } + + // Start of the expression + if ($token->value === '(') { + // This is the first expression, set to empty + if ($ret->expr === null) { + $ret->expr = ''; + } + + $ret->expr .= Expression::parse($parser, $list, ['parenthesesDelimited' => true]); + continue; + } + // Another unexpected operator was found + } + + // Something else than an operator was found + $parser->error('Unexpected token.', $token); + } + } + + --$list->idx; + + return $ret; + } + + /** + * @param Key $component the component to be built + * @param array $options parameters for building + * + * @return string + */ + public static function build($component, array $options = []) + { + $ret = $component->type . ' '; + if (! empty($component->name)) { + $ret .= Context::escape($component->name) . ' '; + } + + if ($component->expr !== null) { + return $ret . '(' . $component->expr . ') ' . $component->options; + } + + $columns = []; + foreach ($component->columns as $column) { + $tmp = ''; + if (isset($column['name'])) { + $tmp .= Context::escape($column['name']); + } + + if (isset($column['length'])) { + $tmp .= '(' . $column['length'] . ')'; + } + + if (isset($column['order'])) { + $tmp .= ' ' . $column['order']; + } + + $columns[] = $tmp; + } + + $ret .= '(' . implode(',', $columns) . ') ' . $component->options; + + return trim($ret); + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Components/Limit.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Components/Limit.php new file mode 100644 index 0000000000..2027132ad5 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Components/Limit.php @@ -0,0 +1,128 @@ +rowCount = $rowCount; + $this->offset = $offset; + } + + /** + * @param Parser $parser the parser that serves as context + * @param TokensList $list the list of tokens that are being parsed + * @param array $options parameters for parsing + * + * @return Limit + */ + public static function parse(Parser $parser, TokensList $list, array $options = []) + { + $ret = new static(); + + $offset = false; + + for (; $list->idx < $list->count; ++$list->idx) { + /** + * Token parsed at this moment. + * + * @var Token + */ + $token = $list->tokens[$list->idx]; + + // End of statement. + if ($token->type === Token::TYPE_DELIMITER) { + break; + } + + // Skipping whitespaces and comments. + if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { + continue; + } + + if (($token->type === Token::TYPE_KEYWORD) && ($token->flags & Token::FLAG_KEYWORD_RESERVED)) { + break; + } + + if ($token->type === Token::TYPE_KEYWORD && $token->keyword === 'OFFSET') { + if ($offset) { + $parser->error('An offset was expected.', $token); + } + + $offset = true; + continue; + } + + if (($token->type === Token::TYPE_OPERATOR) && ($token->value === ',')) { + $ret->offset = $ret->rowCount; + $ret->rowCount = 0; + continue; + } + + // Skip if not a number + if (($token->type !== Token::TYPE_NUMBER)) { + break; + } + + if ($offset) { + $ret->offset = $token->value; + $offset = false; + } else { + $ret->rowCount = $token->value; + } + } + + if ($offset) { + $parser->error('An offset was expected.', $list->tokens[$list->idx - 1]); + } + + --$list->idx; + + return $ret; + } + + /** + * @param Limit $component the component to be built + * @param array $options parameters for building + * + * @return string + */ + public static function build($component, array $options = []) + { + return $component->offset . ', ' . $component->rowCount; + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Components/LockExpression.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Components/LockExpression.php new file mode 100644 index 0000000000..661e38b29c --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Components/LockExpression.php @@ -0,0 +1,213 @@ + 1 + * 1 ---------------- [ lock_type ] ----------------> 2 + * 2 -------------------- [ , ] --------------------> break + * + * @var int + */ + $state = 0; + + $prevToken = null; + + for (; $list->idx < $list->count; ++$list->idx) { + /** + * Token parsed at this moment. + * + * @var Token + */ + $token = $list->tokens[$list->idx]; + + // End of statement. + if ( + $token->type === Token::TYPE_DELIMITER + || ($token->type === Token::TYPE_OPERATOR + && $token->value === ',') + ) { + break; + } + + if ($state === 0) { + $ret->table = Expression::parse($parser, $list, ['parseField' => 'table']); + $state = 1; + } elseif ($state === 1) { + // parse lock type + $ret->type = self::parseLockType($parser, $list); + $state = 2; + } + + $prevToken = $token; + } + + // 2 is the only valid end state + if ($state !== 2) { + $parser->error('Unexpected end of LOCK expression.', $prevToken); + } + + --$list->idx; + + return $ret; + } + + /** + * @param LockExpression|LockExpression[] $component the component to be built + * @param array $options parameters for building + * + * @return string + */ + public static function build($component, array $options = []) + { + if (is_array($component)) { + return implode(', ', $component); + } + + return $component->table . ' ' . $component->type; + } + + /** + * @return string + */ + private static function parseLockType(Parser $parser, TokensList $list) + { + $lockType = ''; + + /** + * The state of the parser while parsing for lock type. + * + * Below are the states of the parser. + * + * 0 ---------------- [ READ ] -----------------> 1 + * 0 ------------- [ LOW_PRIORITY ] ------------> 2 + * 0 ---------------- [ WRITE ] ----------------> 3 + * 1 ---------------- [ LOCAL ] ----------------> 3 + * 2 ---------------- [ WRITE ] ----------------> 3 + * + * @var int + */ + $state = 0; + + $prevToken = null; + + for (; $list->idx < $list->count; ++$list->idx) { + /** + * Token parsed at this moment. + * + * @var Token + */ + $token = $list->tokens[$list->idx]; + + // End of statement. + if ( + $token->type === Token::TYPE_DELIMITER + || ($token->type === Token::TYPE_OPERATOR + && $token->value === ',') + ) { + --$list->idx; + break; + } + + // Skipping whitespaces and comments. + if ($token->type === Token::TYPE_WHITESPACE || $token->type === Token::TYPE_COMMENT) { + continue; + } + + // We only expect keywords + if ($token->type !== Token::TYPE_KEYWORD) { + $parser->error('Unexpected token.', $token); + break; + } + + if ($state === 0) { + if ($token->keyword === 'READ') { + $state = 1; + } elseif ($token->keyword === 'LOW_PRIORITY') { + $state = 2; + } elseif ($token->keyword === 'WRITE') { + $state = 3; + } else { + $parser->error('Unexpected keyword.', $token); + break; + } + + $lockType .= $token->keyword; + } elseif ($state === 1) { + if ($token->keyword !== 'LOCAL') { + $parser->error('Unexpected keyword.', $token); + break; + } + + $lockType .= ' ' . $token->keyword; + $state = 3; + } elseif ($state === 2) { + if ($token->keyword !== 'WRITE') { + $parser->error('Unexpected keyword.', $token); + break; + } + + $lockType .= ' ' . $token->keyword; + $state = 3; // parsing over + } + + $prevToken = $token; + } + + // Only two possible end states + if ($state !== 1 && $state !== 3) { + $parser->error('Unexpected end of Lock expression.', $prevToken); + } + + return $lockType; + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Components/OptionsArray.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Components/OptionsArray.php new file mode 100644 index 0000000000..9a9d067d76 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Components/OptionsArray.php @@ -0,0 +1,386 @@ +options = $options; + } + + /** + * @param Parser $parser the parser that serves as context + * @param TokensList $list the list of tokens that are being parsed + * @param array $options parameters for parsing + * + * @return OptionsArray + */ + public static function parse(Parser $parser, TokensList $list, array $options = []) + { + $ret = new static(); + + /** + * The ID that will be assigned to duplicate options. + * + * @var int + */ + $lastAssignedId = count($options) + 1; + + /** + * The option that was processed last time. + * + * @var array + */ + $lastOption = null; + + /** + * The index of the option that was processed last time. + * + * @var int + */ + $lastOptionId = 0; + + /** + * Counts brackets. + * + * @var int + */ + $brackets = 0; + + /** + * The state of the parser. + * + * Below are the states of the parser. + * + * 0 ---------------------[ option ]----------------------> 1 + * + * 1 -------------------[ = (optional) ]------------------> 2 + * + * 2 ----------------------[ value ]----------------------> 0 + * + * @var int + */ + $state = 0; + + for (; $list->idx < $list->count; ++$list->idx) { + /** + * Token parsed at this moment. + * + * @var Token + */ + $token = $list->tokens[$list->idx]; + + // End of statement. + if ($token->type === Token::TYPE_DELIMITER) { + break; + } + + // Skipping comments. + if ($token->type === Token::TYPE_COMMENT) { + continue; + } + + // Skipping whitespace if not parsing value. + if (($token->type === Token::TYPE_WHITESPACE) && ($brackets === 0)) { + continue; + } + + if ($lastOption === null) { + $upper = strtoupper($token->token); + if (! isset($options[$upper])) { + // There is no option to be processed. + break; + } + + $lastOption = $options[$upper]; + $lastOptionId = is_array($lastOption) ? + $lastOption[0] : $lastOption; + $state = 0; + + // Checking for option conflicts. + // For example, in `SELECT` statements the keywords `ALL` + // and `DISTINCT` conflict and if used together, they + // produce an invalid query. + // + // Usually, tokens can be identified in the array by the + // option ID, but if conflicts occur, a generated option ID + // is used. + // + // The first pseudo duplicate ID is the maximum value of the + // real options (e.g. if there are 5 options, the first + // fake ID is 6). + if (isset($ret->options[$lastOptionId])) { + $parser->error( + sprintf( + Translator::gettext('This option conflicts with "%1$s".'), + is_array($ret->options[$lastOptionId]) + ? $ret->options[$lastOptionId]['name'] + : $ret->options[$lastOptionId] + ), + $token + ); + $lastOptionId = $lastAssignedId++; + } + } + + if ($state === 0) { + if (! is_array($lastOption)) { + // This is a just keyword option without any value. + // This is the beginning and the end of it. + $ret->options[$lastOptionId] = $token->value; + $lastOption = null; + $state = 0; + } elseif (($lastOption[1] === 'var') || ($lastOption[1] === 'var=')) { + // This is a keyword that is followed by a value. + // This is only the beginning. The value is parsed in state + // 1 and 2. State 1 is used to skip the first equals sign + // and state 2 to parse the actual value. + $ret->options[$lastOptionId] = [ + // @var string The name of the option. + 'name' => $token->value, + // @var bool Whether it contains an equal sign. + // This is used by the builder to rebuild it. + 'equals' => $lastOption[1] === 'var=', + // @var string Raw value. + 'expr' => '', + // @var string Processed value. + 'value' => '', + ]; + $state = 1; + } elseif ($lastOption[1] === 'expr' || $lastOption[1] === 'expr=') { + // This is a keyword that is followed by an expression. + // The expression is used by the specialized parser. + + // Skipping this option in order to parse the expression. + ++$list->idx; + $ret->options[$lastOptionId] = [ + // @var string The name of the option. + 'name' => $token->value, + // @var bool Whether it contains an equal sign. + // This is used by the builder to rebuild it. + 'equals' => $lastOption[1] === 'expr=', + // @var Expression The parsed expression. + 'expr' => '', + ]; + $state = 1; + } + } elseif ($state === 1) { + $state = 2; + if ($token->token === '=') { + $ret->options[$lastOptionId]['equals'] = true; + continue; + } + } + + // This is outside the `elseif` group above because the change might + // change this iteration. + if ($state !== 2) { + continue; + } + + if ($lastOption[1] === 'expr' || $lastOption[1] === 'expr=') { + $ret->options[$lastOptionId]['expr'] = Expression::parse( + $parser, + $list, + empty($lastOption[2]) ? [] : $lastOption[2] + ); + if ($ret->options[$lastOptionId]['expr'] !== null) { + $ret->options[$lastOptionId]['value'] + = $ret->options[$lastOptionId]['expr']->expr; + } + + $lastOption = null; + $state = 0; + } else { + if ($token->token === '(') { + ++$brackets; + } elseif ($token->token === ')') { + --$brackets; + } + + $ret->options[$lastOptionId]['expr'] .= $token->token; + + if ( + ! (($token->token === '(') && ($brackets === 1) + || (($token->token === ')') && ($brackets === 0))) + ) { + // First pair of brackets is being skipped. + $ret->options[$lastOptionId]['value'] .= $token->value; + } + + // Checking if we finished parsing. + if ($brackets === 0) { + $lastOption = null; + } + } + } + + /* + * We reached the end of statement without getting a value + * for an option for which a value was required + */ + if ( + $state === 1 + && $lastOption + && ($lastOption[1] === 'expr' + || $lastOption[1] === 'var' + || $lastOption[1] === 'var=' + || $lastOption[1] === 'expr=') + ) { + $parser->error( + sprintf( + 'Value/Expression for the option %1$s was expected.', + $ret->options[$lastOptionId]['name'] + ), + $list->tokens[$list->idx - 1] + ); + } + + if (empty($options['_UNSORTED'])) { + ksort($ret->options); + } + + --$list->idx; + + return $ret; + } + + /** + * @param OptionsArray $component the component to be built + * @param array $options parameters for building + * + * @return string + */ + public static function build($component, array $options = []) + { + if (empty($component->options)) { + return ''; + } + + $options = []; + foreach ($component->options as $option) { + if (! is_array($option)) { + $options[] = $option; + } else { + $options[] = $option['name'] + . (! empty($option['equals']) && $option['equals'] ? '=' : ' ') + . (! empty($option['expr']) ? $option['expr'] : $option['value']); + } + } + + return implode(' ', $options); + } + + /** + * Checks if it has the specified option and returns it value or true. + * + * @param string $key the key to be checked + * @param bool $getExpr Gets the expression instead of the value. + * The value is the processed form of the expression. + * + * @return mixed + */ + public function has($key, $getExpr = false) + { + foreach ($this->options as $option) { + if (is_array($option)) { + if (! strcasecmp($key, $option['name'])) { + return $getExpr ? $option['expr'] : $option['value']; + } + } elseif (! strcasecmp($key, $option)) { + return true; + } + } + + return false; + } + + /** + * Removes the option from the array. + * + * @param string $key the key to be removed + * + * @return bool whether the key was found and deleted or not + */ + public function remove($key) + { + foreach ($this->options as $idx => $option) { + if (is_array($option)) { + if (! strcasecmp($key, $option['name'])) { + unset($this->options[$idx]); + + return true; + } + } elseif (! strcasecmp($key, $option)) { + unset($this->options[$idx]); + + return true; + } + } + + return false; + } + + /** + * Merges the specified options with these ones. Values with same ID will be + * replaced. + * + * @param array|OptionsArray $options the options to be merged + */ + public function merge($options) + { + if (is_array($options)) { + $this->options = array_merge_recursive($this->options, $options); + } elseif ($options instanceof self) { + $this->options = array_merge_recursive($this->options, $options->options); + } + } + + /** + * Checks tf there are no options set. + * + * @return bool + */ + public function isEmpty() + { + return empty($this->options); + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Components/OrderKeyword.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Components/OrderKeyword.php new file mode 100644 index 0000000000..9d6f0018a5 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Components/OrderKeyword.php @@ -0,0 +1,140 @@ +expr = $expr; + $this->type = $type; + } + + /** + * @param Parser $parser the parser that serves as context + * @param TokensList $list the list of tokens that are being parsed + * @param array $options parameters for parsing + * + * @return OrderKeyword[] + */ + public static function parse(Parser $parser, TokensList $list, array $options = []) + { + $ret = []; + + $expr = new static(); + + /** + * The state of the parser. + * + * Below are the states of the parser. + * + * 0 --------------------[ expression ]-------------------> 1 + * + * 1 ------------------------[ , ]------------------------> 0 + * 1 -------------------[ ASC / DESC ]--------------------> 1 + * + * @var int + */ + $state = 0; + + for (; $list->idx < $list->count; ++$list->idx) { + /** + * Token parsed at this moment. + * + * @var Token + */ + $token = $list->tokens[$list->idx]; + + // End of statement. + if ($token->type === Token::TYPE_DELIMITER) { + break; + } + + // Skipping whitespaces and comments. + if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { + continue; + } + + if ($state === 0) { + $expr->expr = Expression::parse($parser, $list); + $state = 1; + } elseif ($state === 1) { + if ( + ($token->type === Token::TYPE_KEYWORD) + && (($token->keyword === 'ASC') || ($token->keyword === 'DESC')) + ) { + $expr->type = $token->keyword; + } elseif (($token->type === Token::TYPE_OPERATOR) && ($token->value === ',')) { + if (! empty($expr->expr)) { + $ret[] = $expr; + } + + $expr = new static(); + $state = 0; + } else { + break; + } + } + } + + // Last iteration was not processed. + if (! empty($expr->expr)) { + $ret[] = $expr; + } + + --$list->idx; + + return $ret; + } + + /** + * @param OrderKeyword|OrderKeyword[] $component the component to be built + * @param array $options parameters for building + * + * @return string + */ + public static function build($component, array $options = []) + { + if (is_array($component)) { + return implode(', ', $component); + } + + return $component->expr . ' ' . $component->type; + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Components/ParameterDefinition.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Components/ParameterDefinition.php new file mode 100644 index 0000000000..6e7b3cba01 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Components/ParameterDefinition.php @@ -0,0 +1,173 @@ +name = $name; + $this->inOut = $inOut; + $this->type = $type; + } + + /** + * @param Parser $parser the parser that serves as context + * @param TokensList $list the list of tokens that are being parsed + * @param array $options parameters for parsing + * + * @return ParameterDefinition[] + */ + public static function parse(Parser $parser, TokensList $list, array $options = []) + { + $ret = []; + + $expr = new static(); + + /** + * The state of the parser. + * + * Below are the states of the parser. + * + * 0 -----------------------[ ( ]------------------------> 1 + * + * 1 ----------------[ IN / OUT / INOUT ]----------------> 1 + * 1 ----------------------[ name ]----------------------> 2 + * + * 2 -------------------[ data type ]--------------------> 3 + * + * 3 ------------------------[ , ]-----------------------> 1 + * 3 ------------------------[ ) ]-----------------------> (END) + * + * @var int + */ + $state = 0; + + for (; $list->idx < $list->count; ++$list->idx) { + /** + * Token parsed at this moment. + * + * @var Token + */ + $token = $list->tokens[$list->idx]; + + // End of statement. + if ($token->type === Token::TYPE_DELIMITER) { + break; + } + + // Skipping whitespaces and comments. + if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { + continue; + } + + if ($state === 0) { + if (($token->type === Token::TYPE_OPERATOR) && ($token->value === '(')) { + $state = 1; + } + + continue; + } elseif ($state === 1) { + if (($token->value === 'IN') || ($token->value === 'OUT') || ($token->value === 'INOUT')) { + $expr->inOut = $token->value; + ++$list->idx; + } elseif ($token->value === ')') { + ++$list->idx; + break; + } else { + $expr->name = $token->value; + $state = 2; + } + } elseif ($state === 2) { + $expr->type = DataType::parse($parser, $list); + $state = 3; + } elseif ($state === 3) { + $ret[] = $expr; + $expr = new static(); + if ($token->value === ',') { + $state = 1; + } elseif ($token->value === ')') { + ++$list->idx; + break; + } + } + } + + // Last iteration was not saved. + if (isset($expr->name) && ($expr->name !== '')) { + $ret[] = $expr; + } + + --$list->idx; + + return $ret; + } + + /** + * @param ParameterDefinition[] $component the component to be built + * @param array $options parameters for building + * + * @return string + */ + public static function build($component, array $options = []) + { + if (is_array($component)) { + return '(' . implode(', ', $component) . ')'; + } + + $tmp = ''; + if (! empty($component->inOut)) { + $tmp .= $component->inOut . ' '; + } + + return trim( + $tmp . Context::escape($component->name) . ' ' . $component->type + ); + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Components/PartitionDefinition.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Components/PartitionDefinition.php new file mode 100644 index 0000000000..34bc8f576b --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Components/PartitionDefinition.php @@ -0,0 +1,259 @@ + [ + 1, + 'var', + ], + 'ENGINE' => [ + 1, + 'var', + ], + 'COMMENT' => [ + 2, + 'var', + ], + 'DATA DIRECTORY' => [ + 3, + 'var', + ], + 'INDEX DIRECTORY' => [ + 4, + 'var', + ], + 'MAX_ROWS' => [ + 5, + 'var', + ], + 'MIN_ROWS' => [ + 6, + 'var', + ], + 'TABLESPACE' => [ + 7, + 'var', + ], + 'NODEGROUP' => [ + 8, + 'var', + ], + ]; + + /** + * Whether this entry is a subpartition or a partition. + * + * @var bool + */ + public $isSubpartition; + + /** + * The name of this partition. + * + * @var string + */ + public $name; + + /** + * The type of this partition (what follows the `VALUES` keyword). + * + * @var string + */ + public $type; + + /** + * The expression used to defined this partition. + * + * @var Expression|string + */ + public $expr; + + /** + * The subpartitions of this partition. + * + * @var PartitionDefinition[] + */ + public $subpartitions; + + /** + * The options of this field. + * + * @var OptionsArray + */ + public $options; + + /** + * @param Parser $parser the parser that serves as context + * @param TokensList $list the list of tokens that are being parsed + * @param array $options parameters for parsing + * + * @return PartitionDefinition + */ + public static function parse(Parser $parser, TokensList $list, array $options = []) + { + $ret = new static(); + + /** + * The state of the parser. + * + * Below are the states of the parser. + * + * 0 -------------[ PARTITION | SUBPARTITION ]------------> 1 + * + * 1 -----------------------[ name ]----------------------> 2 + * + * 2 ----------------------[ VALUES ]---------------------> 3 + * + * 3 ---------------------[ LESS THAN ]-------------------> 4 + * 3 ------------------------[ IN ]-----------------------> 4 + * + * 4 -----------------------[ expr ]----------------------> 5 + * + * 5 ----------------------[ options ]--------------------> 6 + * + * 6 ------------------[ subpartitions ]------------------> (END) + * + * @var int + */ + $state = 0; + + for (; $list->idx < $list->count; ++$list->idx) { + /** + * Token parsed at this moment. + * + * @var Token + */ + $token = $list->tokens[$list->idx]; + + // End of statement. + if ($token->type === Token::TYPE_DELIMITER) { + break; + } + + // Skipping whitespaces and comments. + if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { + continue; + } + + if ($state === 0) { + $ret->isSubpartition = ($token->type === Token::TYPE_KEYWORD) && ($token->keyword === 'SUBPARTITION'); + $state = 1; + } elseif ($state === 1) { + $ret->name = $token->value; + + // Looking ahead for a 'VALUES' keyword. + // Loop until the end of the partition name (delimited by a whitespace) + while ($nextToken = $list->tokens[++$list->idx]) { + if ($nextToken->type !== Token::TYPE_NONE) { + break; + } + + $ret->name .= $nextToken->value; + } + + $idx = $list->idx--; + // Get the first token after the white space. + $nextToken = $list->tokens[++$idx]; + + $state = ($nextToken->type === Token::TYPE_KEYWORD) + && ($nextToken->value === 'VALUES') + ? 2 : 5; + } elseif ($state === 2) { + $state = 3; + } elseif ($state === 3) { + $ret->type = $token->value; + $state = 4; + } elseif ($state === 4) { + if ($token->value === 'MAXVALUE') { + $ret->expr = $token->value; + } else { + $ret->expr = Expression::parse( + $parser, + $list, + [ + 'parenthesesDelimited' => true, + 'breakOnAlias' => true, + ] + ); + } + + $state = 5; + } elseif ($state === 5) { + $ret->options = OptionsArray::parse($parser, $list, static::$OPTIONS); + $state = 6; + } elseif ($state === 6) { + if (($token->type === Token::TYPE_OPERATOR) && ($token->value === '(')) { + $ret->subpartitions = ArrayObj::parse( + $parser, + $list, + ['type' => 'PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition'] + ); + ++$list->idx; + } + + break; + } + } + + --$list->idx; + + return $ret; + } + + /** + * @param PartitionDefinition|PartitionDefinition[] $component the component to be built + * @param array $options parameters for building + * + * @return string + */ + public static function build($component, array $options = []) + { + if (is_array($component)) { + return "(\n" . implode(",\n", $component) . "\n)"; + } + + if ($component->isSubpartition) { + return trim('SUBPARTITION ' . $component->name . ' ' . $component->options); + } + + $subpartitions = empty($component->subpartitions) ? '' : ' ' . self::build($component->subpartitions); + + return trim( + 'PARTITION ' . $component->name + . (empty($component->type) ? '' : ' VALUES ' . $component->type . ' ' . $component->expr . ' ') + . (! empty($component->options) && ! empty($component->type) ? '' : ' ') + . $component->options . $subpartitions + ); + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Components/Reference.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Components/Reference.php new file mode 100644 index 0000000000..8f01112bc0 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Components/Reference.php @@ -0,0 +1,162 @@ + [ + 1, + 'var', + ], + 'ON DELETE' => [ + 2, + 'var', + ], + 'ON UPDATE' => [ + 3, + 'var', + ], + ]; + + /** + * The referenced table. + * + * @var Expression + */ + public $table; + + /** + * The referenced columns. + * + * @var array + */ + public $columns; + + /** + * The options of the referencing. + * + * @var OptionsArray + */ + public $options; + + /** + * @param Expression $table the name of the table referenced + * @param array $columns the columns referenced + * @param OptionsArray $options the options + */ + public function __construct($table = null, array $columns = [], $options = null) + { + $this->table = $table; + $this->columns = $columns; + $this->options = $options; + } + + /** + * @param Parser $parser the parser that serves as context + * @param TokensList $list the list of tokens that are being parsed + * @param array $options parameters for parsing + * + * @return Reference + */ + public static function parse(Parser $parser, TokensList $list, array $options = []) + { + $ret = new static(); + + /** + * The state of the parser. + * + * Below are the states of the parser. + * + * 0 ----------------------[ table ]---------------------> 1 + * + * 1 ---------------------[ columns ]--------------------> 2 + * + * 2 ---------------------[ options ]--------------------> (END) + * + * @var int + */ + $state = 0; + + for (; $list->idx < $list->count; ++$list->idx) { + /** + * Token parsed at this moment. + * + * @var Token + */ + $token = $list->tokens[$list->idx]; + + // End of statement. + if ($token->type === Token::TYPE_DELIMITER) { + break; + } + + // Skipping whitespaces and comments. + if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { + continue; + } + + if ($state === 0) { + $ret->table = Expression::parse( + $parser, + $list, + [ + 'parseField' => 'table', + 'breakOnAlias' => true, + ] + ); + $state = 1; + } elseif ($state === 1) { + $ret->columns = ArrayObj::parse($parser, $list)->values; + $state = 2; + } elseif ($state === 2) { + $ret->options = OptionsArray::parse($parser, $list, static::$REFERENCES_OPTIONS); + ++$list->idx; + break; + } + } + + --$list->idx; + + return $ret; + } + + /** + * @param Reference $component the component to be built + * @param array $options parameters for building + * + * @return string + */ + public static function build($component, array $options = []) + { + return trim( + $component->table + . ' (' . implode(', ', Context::escape($component->columns)) . ') ' + . $component->options + ); + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Components/RenameOperation.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Components/RenameOperation.php new file mode 100644 index 0000000000..8135bb4e63 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Components/RenameOperation.php @@ -0,0 +1,172 @@ +old = $old; + $this->new = $new; + } + + /** + * @param Parser $parser the parser that serves as context + * @param TokensList $list the list of tokens that are being parsed + * @param array $options parameters for parsing + * + * @return RenameOperation[] + */ + public static function parse(Parser $parser, TokensList $list, array $options = []) + { + $ret = []; + + $expr = new static(); + + /** + * The state of the parser. + * + * Below are the states of the parser. + * + * 0 ---------------------[ old name ]--------------------> 1 + * + * 1 ------------------------[ TO ]-----------------------> 2 + * + * 2 ---------------------[ new name ]--------------------> 3 + * + * 3 ------------------------[ , ]------------------------> 0 + * 3 -----------------------[ else ]----------------------> (END) + * + * @var int + */ + $state = 0; + + for (; $list->idx < $list->count; ++$list->idx) { + /** + * Token parsed at this moment. + * + * @var Token + */ + $token = $list->tokens[$list->idx]; + + // End of statement. + if ($token->type === Token::TYPE_DELIMITER) { + break; + } + + // Skipping whitespaces and comments. + if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { + continue; + } + + if ($state === 0) { + $expr->old = Expression::parse( + $parser, + $list, + [ + 'breakOnAlias' => true, + 'parseField' => 'table', + ] + ); + if (empty($expr->old)) { + $parser->error('The old name of the table was expected.', $token); + } + + $state = 1; + } elseif ($state === 1) { + if ($token->type !== Token::TYPE_KEYWORD || $token->keyword !== 'TO') { + $parser->error('Keyword "TO" was expected.', $token); + break; + } + + $state = 2; + } elseif ($state === 2) { + $expr->new = Expression::parse( + $parser, + $list, + [ + 'breakOnAlias' => true, + 'parseField' => 'table', + ] + ); + if (empty($expr->new)) { + $parser->error('The new name of the table was expected.', $token); + } + + $state = 3; + } elseif ($state === 3) { + if (($token->type !== Token::TYPE_OPERATOR) || ($token->value !== ',')) { + break; + } + + $ret[] = $expr; + $expr = new static(); + $state = 0; + } + } + + if ($state !== 3) { + $parser->error('A rename operation was expected.', $list->tokens[$list->idx - 1]); + } + + // Last iteration was not saved. + if (! empty($expr->old)) { + $ret[] = $expr; + } + + --$list->idx; + + return $ret; + } + + /** + * @param RenameOperation $component the component to be built + * @param array $options parameters for building + * + * @return string + */ + public static function build($component, array $options = []) + { + if (is_array($component)) { + return implode(', ', $component); + } + + return $component->old . ' TO ' . $component->new; + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Components/SetOperation.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Components/SetOperation.php new file mode 100644 index 0000000000..f0d2f2cf20 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Components/SetOperation.php @@ -0,0 +1,163 @@ +column = $column; + $this->value = $value; + } + + /** + * @param Parser $parser the parser that serves as context + * @param TokensList $list the list of tokens that are being parsed + * @param array $options parameters for parsing + * + * @return SetOperation[] + */ + public static function parse(Parser $parser, TokensList $list, array $options = []) + { + $ret = []; + + $expr = new static(); + + /** + * The state of the parser. + * + * Below are the states of the parser. + * + * 0 ---------------------[ col_name ]--------------------> 0 + * 0 ------------------------[ = ]------------------------> 1 + * 1 -----------------------[ value ]---------------------> 1 + * 1 ------------------------[ , ]------------------------> 0 + * + * @var int + */ + $state = 0; + + /** + * Token when the parser has seen the latest comma + * + * @var Token + */ + $commaLastSeenAt = null; + + for (; $list->idx < $list->count; ++$list->idx) { + /** + * Token parsed at this moment. + * + * @var Token + */ + $token = $list->tokens[$list->idx]; + + // End of statement. + if ($token->type === Token::TYPE_DELIMITER) { + break; + } + + // Skipping whitespaces and comments. + if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { + continue; + } + + // No keyword is expected. + if ( + ($token->type === Token::TYPE_KEYWORD) + && ($token->flags & Token::FLAG_KEYWORD_RESERVED) + && ($state === 0) + ) { + break; + } + + if ($state === 0) { + if ($token->token === '=') { + $state = 1; + } elseif ($token->value !== ',') { + $expr->column .= $token->token; + } elseif ($token->value === ',') { + $commaLastSeenAt = $token; + } + } elseif ($state === 1) { + $tmp = Expression::parse( + $parser, + $list, + ['breakOnAlias' => true] + ); + if ($tmp === null) { + $parser->error('Missing expression.', $token); + break; + } + + $expr->column = trim($expr->column); + $expr->value = $tmp->expr; + $ret[] = $expr; + $expr = new static(); + $state = 0; + $commaLastSeenAt = null; + } + } + + --$list->idx; + + // We saw a comma, but didn't see a column-value pair after it + if ($commaLastSeenAt !== null) { + $parser->error('Unexpected token.', $commaLastSeenAt); + } + + return $ret; + } + + /** + * @param SetOperation|SetOperation[] $component the component to be built + * @param array $options parameters for building + * + * @return string + */ + public static function build($component, array $options = []) + { + if (is_array($component)) { + return implode(', ', $component); + } + + return $component->column . ' = ' . $component->value; + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Components/UnionKeyword.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Components/UnionKeyword.php new file mode 100644 index 0000000000..68d1563594 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Components/UnionKeyword.php @@ -0,0 +1,36 @@ + $component the component to be built + * @param array $options parameters for building + * + * @return string + */ + public static function build($component, array $options = []) + { + $tmp = []; + foreach ($component as $componentPart) { + $tmp[] = $componentPart[0] . ' ' . $componentPart[1]; + } + + return implode(' ', $tmp); + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Components/WithKeyword.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Components/WithKeyword.php new file mode 100644 index 0000000000..83e2f8becd --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Components/WithKeyword.php @@ -0,0 +1,67 @@ +name = $name; + } + + /** + * @param WithKeyword $component + * @param mixed[] $options + * + * @return string + */ + public static function build($component, array $options = []) + { + if (! $component instanceof WithKeyword) { + throw new RuntimeException('Can not build a component that is not a WithKeyword'); + } + + if (! isset($component->statement)) { + throw new RuntimeException('No statement inside WITH'); + } + + $str = $component->name; + + if ($component->columns) { + $str .= ArrayObj::build($component->columns); + } + + $str .= ' AS ('; + + foreach ($component->statement->statements as $statement) { + $str .= $statement->build(); + } + + $str .= ')'; + + return $str; + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Context.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Context.php new file mode 100644 index 0000000000..5c32c8c588 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Context.php @@ -0,0 +1,641 @@ + 1, + '*' => 1, + '+' => 1, + '-' => 1, + '/' => 1, + + // @see Token::FLAG_OPERATOR_LOGICAL + '!' => 2, + '!=' => 2, + '&&' => 2, + '<' => 2, + '<=' => 2, + '<=>' => 2, + '<>' => 2, + '=' => 2, + '>' => 2, + '>=' => 2, + '||' => 2, + + // @see Token::FLAG_OPERATOR_BITWISE + '&' => 4, + '<<' => 4, + '>>' => 4, + '^' => 4, + '|' => 4, + '~' => 4, + + // @see Token::FLAG_OPERATOR_ASSIGNMENT + ':=' => 8, + + // @see Token::FLAG_OPERATOR_SQL + '(' => 16, + ')' => 16, + '.' => 16, + ',' => 16, + ';' => 16, + ]; + + /** + * The mode of the MySQL server that will be used in lexing, parsing and + * building the statements. + * + * @var int + */ + public static $MODE = 0; + + /* + * Server SQL Modes + * https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html + */ + + // Compatibility mode for Microsoft's SQL server. + // This is the equivalent of ANSI_QUOTES. + public const SQL_MODE_COMPAT_MYSQL = 2; + + // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_allow_invalid_dates + public const SQL_MODE_ALLOW_INVALID_DATES = 1; + + // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_ansi_quotes + public const SQL_MODE_ANSI_QUOTES = 2; + + // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_error_for_division_by_zero + public const SQL_MODE_ERROR_FOR_DIVISION_BY_ZERO = 4; + + // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_high_not_precedence + public const SQL_MODE_HIGH_NOT_PRECEDENCE = 8; + + // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_ignore_space + public const SQL_MODE_IGNORE_SPACE = 16; + + // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_no_auto_create_user + public const SQL_MODE_NO_AUTO_CREATE_USER = 32; + + // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_no_auto_value_on_zero + public const SQL_MODE_NO_AUTO_VALUE_ON_ZERO = 64; + + // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_no_backslash_escapes + public const SQL_MODE_NO_BACKSLASH_ESCAPES = 128; + + // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_no_dir_in_create + public const SQL_MODE_NO_DIR_IN_CREATE = 256; + + // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_no_dir_in_create + public const SQL_MODE_NO_ENGINE_SUBSTITUTION = 512; + + // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_no_field_options + public const SQL_MODE_NO_FIELD_OPTIONS = 1024; + + // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_no_key_options + public const SQL_MODE_NO_KEY_OPTIONS = 2048; + + // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_no_table_options + public const SQL_MODE_NO_TABLE_OPTIONS = 4096; + + // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_no_unsigned_subtraction + public const SQL_MODE_NO_UNSIGNED_SUBTRACTION = 8192; + + // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_no_zero_date + public const SQL_MODE_NO_ZERO_DATE = 16384; + + // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_no_zero_in_date + public const SQL_MODE_NO_ZERO_IN_DATE = 32768; + + // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_only_full_group_by + public const SQL_MODE_ONLY_FULL_GROUP_BY = 65536; + + // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_pipes_as_concat + public const SQL_MODE_PIPES_AS_CONCAT = 131072; + + // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_real_as_float + public const SQL_MODE_REAL_AS_FLOAT = 262144; + + // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_strict_all_tables + public const SQL_MODE_STRICT_ALL_TABLES = 524288; + + // https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sqlmode_strict_trans_tables + public const SQL_MODE_STRICT_TRANS_TABLES = 1048576; + + // Custom modes. + + // The table and column names and any other field that must be escaped will + // not be. + // Reserved keywords are being escaped regardless this mode is used or not. + public const SQL_MODE_NO_ENCLOSING_QUOTES = 1073741824; + + /* + * Combination SQL Modes + * https://dev.mysql.com/doc/refman/5.0/en/sql-mode.html#sql-mode-combo + */ + + // REAL_AS_FLOAT, PIPES_AS_CONCAT, ANSI_QUOTES, IGNORE_SPACE + public const SQL_MODE_ANSI = 393234; + + // PIPES_AS_CONCAT, ANSI_QUOTES, IGNORE_SPACE, NO_KEY_OPTIONS, + // NO_TABLE_OPTIONS, NO_FIELD_OPTIONS, + public const SQL_MODE_DB2 = 138258; + + // PIPES_AS_CONCAT, ANSI_QUOTES, IGNORE_SPACE, NO_KEY_OPTIONS, + // NO_TABLE_OPTIONS, NO_FIELD_OPTIONS, NO_AUTO_CREATE_USER + public const SQL_MODE_MAXDB = 138290; + + // PIPES_AS_CONCAT, ANSI_QUOTES, IGNORE_SPACE, NO_KEY_OPTIONS, + // NO_TABLE_OPTIONS, NO_FIELD_OPTIONS + public const SQL_MODE_MSSQL = 138258; + + // PIPES_AS_CONCAT, ANSI_QUOTES, IGNORE_SPACE, NO_KEY_OPTIONS, + // NO_TABLE_OPTIONS, NO_FIELD_OPTIONS, NO_AUTO_CREATE_USER + public const SQL_MODE_ORACLE = 138290; + + // PIPES_AS_CONCAT, ANSI_QUOTES, IGNORE_SPACE, NO_KEY_OPTIONS, + // NO_TABLE_OPTIONS, NO_FIELD_OPTIONS + public const SQL_MODE_POSTGRESQL = 138258; + + // STRICT_TRANS_TABLES, STRICT_ALL_TABLES, NO_ZERO_IN_DATE, NO_ZERO_DATE, + // ERROR_FOR_DIVISION_BY_ZERO, NO_AUTO_CREATE_USER + public const SQL_MODE_TRADITIONAL = 1622052; + + // ------------------------------------------------------------------------- + // Keyword. + + /** + * Checks if the given string is a keyword. + * + * @param string $str string to be checked + * @param bool $isReserved checks if the keyword is reserved + * + * @return int|null + */ + public static function isKeyword($str, $isReserved = false) + { + $str = strtoupper($str); + + if (isset(static::$KEYWORDS[$str])) { + if ($isReserved && ! (static::$KEYWORDS[$str] & Token::FLAG_KEYWORD_RESERVED)) { + return null; + } + + return static::$KEYWORDS[$str]; + } + + return null; + } + + // ------------------------------------------------------------------------- + // Operator. + + /** + * Checks if the given string is an operator. + * + * @param string $str string to be checked + * + * @return int|null the appropriate flag for the operator + */ + public static function isOperator($str) + { + if (! isset(static::$OPERATORS[$str])) { + return null; + } + + return static::$OPERATORS[$str]; + } + + // ------------------------------------------------------------------------- + // Whitespace. + + /** + * Checks if the given character is a whitespace. + * + * @param string $str string to be checked + * + * @return bool + */ + public static function isWhitespace($str) + { + return ($str === ' ') || ($str === "\r") || ($str === "\n") || ($str === "\t"); + } + + // ------------------------------------------------------------------------- + // Comment. + + /** + * Checks if the given string is the beginning of a whitespace. + * + * @param string $str string to be checked + * @param mixed $end + * + * @return int|null the appropriate flag for the comment type + */ + public static function isComment($str, $end = false) + { + $len = strlen($str); + if ($len === 0) { + return null; + } + + // If comment is Bash style (#): + if ($str[0] === '#') { + return Token::FLAG_COMMENT_BASH; + } + + // If comment is opening C style (/*), warning, it could be a MySQL command (/*!) + if (($len > 1) && ($str[0] === '/') && ($str[1] === '*')) { + return ($len > 2) && ($str[2] === '!') ? + Token::FLAG_COMMENT_MYSQL_CMD : Token::FLAG_COMMENT_C; + } + + // If comment is closing C style (*/), warning, it could conflicts with wildcard and a real opening C style. + // It would looks like the following valid SQL statement: "SELECT */* comment */ FROM...". + if (($len > 1) && ($str[0] === '*') && ($str[1] === '/')) { + return Token::FLAG_COMMENT_C; + } + + // If comment is SQL style (--\s?): + if (($len > 2) && ($str[0] === '-') && ($str[1] === '-') && static::isWhitespace($str[2])) { + return Token::FLAG_COMMENT_SQL; + } + + if (($len === 2) && $end && ($str[0] === '-') && ($str[1] === '-')) { + return Token::FLAG_COMMENT_SQL; + } + + return null; + } + + // ------------------------------------------------------------------------- + // Bool. + + /** + * Checks if the given string is a boolean value. + * This actually check only for `TRUE` and `FALSE` because `1` or `0` are + * actually numbers and are parsed by specific methods. + * + * @param string $str string to be checked + * + * @return bool + */ + public static function isBool($str) + { + $str = strtoupper($str); + + return ($str === 'TRUE') || ($str === 'FALSE'); + } + + // ------------------------------------------------------------------------- + // Number. + + /** + * Checks if the given character can be a part of a number. + * + * @param string $str string to be checked + * + * @return bool + */ + public static function isNumber($str) + { + return ($str >= '0') && ($str <= '9') || ($str === '.') + || ($str === '-') || ($str === '+') || ($str === 'e') || ($str === 'E'); + } + + // ------------------------------------------------------------------------- + // Symbol. + + /** + * Checks if the given character is the beginning of a symbol. A symbol + * can be either a variable or a field name. + * + * @param string $str string to be checked + * + * @return int|null the appropriate flag for the symbol type + */ + public static function isSymbol($str) + { + if (strlen($str) === 0) { + return null; + } + + if ($str[0] === '@') { + return Token::FLAG_SYMBOL_VARIABLE; + } + + if ($str[0] === '`') { + return Token::FLAG_SYMBOL_BACKTICK; + } + + if ($str[0] === ':' || $str[0] === '?') { + return Token::FLAG_SYMBOL_PARAMETER; + } + + return null; + } + + // ------------------------------------------------------------------------- + // String. + + /** + * Checks if the given character is the beginning of a string. + * + * @param string $str string to be checked + * + * @return int|null the appropriate flag for the string type + */ + public static function isString($str) + { + if (strlen($str) === 0) { + return null; + } + + if ($str[0] === '\'') { + return Token::FLAG_STRING_SINGLE_QUOTES; + } + + if ($str[0] === '"') { + return Token::FLAG_STRING_DOUBLE_QUOTES; + } + + return null; + } + + // ------------------------------------------------------------------------- + // Delimiter. + + /** + * Checks if the given character can be a separator for two lexeme. + * + * @param string $str string to be checked + * + * @return bool + */ + public static function isSeparator($str) + { + // NOTES: Only non alphanumeric ASCII characters may be separators. + // `~` is the last printable ASCII character. + return ($str <= '~') + && ($str !== '_') + && ($str !== '$') + && (($str < '0') || ($str > '9')) + && (($str < 'a') || ($str > 'z')) + && (($str < 'A') || ($str > 'Z')); + } + + /** + * Loads the specified context. + * + * Contexts may be used by accessing the context directly. + * + * @param string $context name of the context or full class name that + * defines the context + * + * @throws LoaderException if the specified context doesn't exist. + */ + public static function load($context = '') + { + if (empty($context)) { + $context = self::$defaultContext; + } + + if ($context[0] !== '\\') { + // Short context name (must be formatted into class name). + $context = self::$contextPrefix . $context; + } + + if (! class_exists($context)) { + throw @new LoaderException('Specified context ("' . $context . '") does not exist.', $context); + } + + self::$loadedContext = $context; + self::$KEYWORDS = $context::$KEYWORDS; + } + + /** + * Loads the context with the closest version to the one specified. + * + * The closest context is found by replacing last digits with zero until one + * is loaded successfully. + * + * @see Context::load() + * + * @param string $context name of the context or full class name that + * defines the context + * + * @return string|null The loaded context. `null` if no context was loaded. + */ + public static function loadClosest($context = '') + { + $length = strlen($context); + for ($i = $length; $i > 0;) { + try { + /* Trying to load the new context */ + static::load($context); + + return $context; + } catch (LoaderException $e) { + /* Replace last two non zero digits by zeroes */ + do { + $i -= 2; + $part = substr($context, $i, 2); + /* No more numeric parts to strip */ + if (! is_numeric($part)) { + break 2; + } + } while (intval($part) === 0 && $i > 0); + + $context = substr($context, 0, $i) . '00' . substr($context, $i + 2); + } + } + + /* Fallback to loading at least matching engine */ + if (strncmp($context, 'MariaDb', 7) === 0) { + return static::loadClosest('MariaDb100300'); + } + + if (strncmp($context, 'MySql', 5) === 0) { + return static::loadClosest('MySql50700'); + } + + return null; + } + + /** + * Sets the SQL mode. + * + * @param string $mode The list of modes. If empty, the mode is reset. + */ + public static function setMode($mode = '') + { + static::$MODE = 0; + if (empty($mode)) { + return; + } + + $mode = explode(',', $mode); + foreach ($mode as $m) { + static::$MODE |= constant('static::SQL_MODE_' . $m); + } + } + + /** + * Escapes the symbol by adding surrounding backticks. + * + * @param array|string $str the string to be escaped + * @param string $quote quote to be used when escaping + * + * @return string|array + */ + public static function escape($str, $quote = '`') + { + if (is_array($str)) { + foreach ($str as $key => $value) { + $str[$key] = static::escape($value); + } + + return $str; + } + + if ((static::$MODE & self::SQL_MODE_NO_ENCLOSING_QUOTES) && (! static::isKeyword($str, true))) { + return $str; + } + + if (static::$MODE & self::SQL_MODE_ANSI_QUOTES) { + $quote = '"'; + } + + return $quote . str_replace($quote, $quote . $quote, $str) . $quote; + } + + /** + * Returns char used to quote identifiers based on currently set SQL Mode (ie. standard or ANSI_QUOTES) + * + * @return string either " (double quote, ansi_quotes mode) or ` (backtick, standard mode) + */ + public static function getIdentifierQuote() + { + return self::hasMode(self::SQL_MODE_ANSI_QUOTES) ? '"' : '`'; + } + + /** + * Function verifies that given SQL Mode constant is currently set + * + * @param int $flag for example Context::SQL_MODE_ANSI_QUOTES + * + * @return bool false on empty param, true/false on given constant/int value + */ + public static function hasMode($flag = null) + { + if (empty($flag)) { + return false; + } + + return (self::$MODE & $flag) === $flag; + } +} + +// Initializing the default context. +Context::load(); diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Contexts/ContextMariaDb100000.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Contexts/ContextMariaDb100000.php new file mode 100644 index 0000000000..e6955aa403 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Contexts/ContextMariaDb100000.php @@ -0,0 +1,300 @@ + + * @phpstan-var non-empty-array + */ + public static $KEYWORDS = [ + 'AT' => 1, 'DO' => 1, 'IO' => 1, 'NO' => 1, 'XA' => 1, + 'ANY' => 1, 'CPU' => 1, 'END' => 1, 'IPC' => 1, 'NDB' => 1, 'NEW' => 1, + 'ONE' => 1, 'ROW' => 1, + 'BOOL' => 1, 'BYTE' => 1, 'CODE' => 1, 'CUBE' => 1, 'DATA' => 1, 'DISK' => 1, + 'ENDS' => 1, 'FAST' => 1, 'FILE' => 1, 'FULL' => 1, 'HASH' => 1, 'HELP' => 1, + 'HOST' => 1, 'LAST' => 1, 'LESS' => 1, 'LIST' => 1, 'LOGS' => 1, 'MODE' => 1, + 'NAME' => 1, 'NEXT' => 1, 'NONE' => 1, 'OPEN' => 1, 'PAGE' => 1, 'PORT' => 1, + 'PREV' => 1, 'ROWS' => 1, 'SLOW' => 1, 'SOME' => 1, 'STOP' => 1, 'THAN' => 1, + 'TYPE' => 1, 'VIEW' => 1, 'WAIT' => 1, 'WORK' => 1, 'X509' => 1, + 'AFTER' => 1, 'BEGIN' => 1, 'BLOCK' => 1, 'BTREE' => 1, 'CACHE' => 1, + 'CHAIN' => 1, 'CLOSE' => 1, 'ERROR' => 1, 'EVENT' => 1, 'EVERY' => 1, + 'FIRST' => 1, 'FIXED' => 1, 'FLUSH' => 1, 'FOUND' => 1, 'HOSTS' => 1, + 'LEVEL' => 1, 'LOCAL' => 1, 'LOCKS' => 1, 'MERGE' => 1, 'MUTEX' => 1, + 'NAMES' => 1, 'NCHAR' => 1, 'OWNER' => 1, 'PHASE' => 1, 'PROXY' => 1, + 'QUERY' => 1, 'QUICK' => 1, 'RELAY' => 1, 'RESET' => 1, 'RTREE' => 1, + 'SHARE' => 1, 'SLAVE' => 1, 'START' => 1, 'SUPER' => 1, 'SWAPS' => 1, + 'TYPES' => 1, 'UNTIL' => 1, 'VALUE' => 1, + 'ACTION' => 1, 'BACKUP' => 1, 'BINLOG' => 1, 'CIPHER' => 1, 'CLIENT' => 1, + 'COMMIT' => 1, 'ENABLE' => 1, 'ENGINE' => 1, 'ERRORS' => 1, 'ESCAPE' => 1, + 'EVENTS' => 1, 'FAULTS' => 1, 'FIELDS' => 1, 'GLOBAL' => 1, 'GRANTS' => 1, + 'IMPORT' => 1, 'INNODB' => 1, 'ISSUER' => 1, 'LEAVES' => 1, 'MASTER' => 1, + 'MEDIUM' => 1, 'MEMORY' => 1, 'MODIFY' => 1, 'OFFSET' => 1, 'PARSER' => 1, + 'PLUGIN' => 1, 'RELOAD' => 1, 'REMOVE' => 1, 'REPAIR' => 1, 'RESUME' => 1, + 'ROLLUP' => 1, 'SERVER' => 1, 'SIGNED' => 1, 'SIMPLE' => 1, 'SOCKET' => 1, + 'SONAME' => 1, 'SOUNDS' => 1, 'SOURCE' => 1, 'STARTS' => 1, 'STATUS' => 1, + 'STRING' => 1, 'TABLES' => 1, + 'AUTHORS' => 1, 'CHANGED' => 1, 'COLUMNS' => 1, 'COMMENT' => 1, 'COMPACT' => 1, + 'CONTEXT' => 1, 'DEFINER' => 1, 'DISABLE' => 1, 'DISCARD' => 1, 'DYNAMIC' => 1, + 'ENGINES' => 1, 'EXECUTE' => 1, 'GENERAL' => 1, 'HANDLER' => 1, 'INDEXES' => 1, + 'INSTALL' => 1, 'INVOKER' => 1, 'LOGFILE' => 1, 'MIGRATE' => 1, 'NO_WAIT' => 1, + 'OPTIONS' => 1, 'PARTIAL' => 1, 'PLUGINS' => 1, 'PREPARE' => 1, 'PROFILE' => 1, + 'REBUILD' => 1, 'RECOVER' => 1, 'RESTORE' => 1, 'RETURNS' => 1, 'ROUTINE' => 1, + 'SESSION' => 1, 'STORAGE' => 1, 'SUBJECT' => 1, 'SUSPEND' => 1, 'UNICODE' => 1, + 'UNKNOWN' => 1, 'UPGRADE' => 1, 'USE_FRM' => 1, 'VIRTUAL' => 1, 'WRAPPER' => 1, + 'CASCADED' => 1, 'CHECKSUM' => 1, 'DATAFILE' => 1, 'DUMPFILE' => 1, 'EXTENDED' => 1, + 'FUNCTION' => 1, 'INNOBASE' => 1, 'LANGUAGE' => 1, 'MAX_ROWS' => 1, 'MAX_SIZE' => 1, + 'MIN_ROWS' => 1, 'NATIONAL' => 1, 'NVARCHAR' => 1, 'ONE_SHOT' => 1, 'PRESERVE' => 1, + 'PROFILES' => 1, 'REDOFILE' => 1, 'RELAYLOG' => 1, 'ROLLBACK' => 1, 'SCHEDULE' => 1, + 'SECURITY' => 1, 'SHUTDOWN' => 1, 'SNAPSHOT' => 1, 'SWITCHES' => 1, 'TRIGGERS' => 1, + 'UNDOFILE' => 1, 'WARNINGS' => 1, + 'AGGREGATE' => 1, 'ALGORITHM' => 1, 'COMMITTED' => 1, 'DIRECTORY' => 1, + 'DUPLICATE' => 1, 'EXPANSION' => 1, 'IO_THREAD' => 1, 'ISOLATION' => 1, + 'NODEGROUP' => 1, 'PACK_KEYS' => 1, 'READ_ONLY' => 1, 'REDUNDANT' => 1, + 'SAVEPOINT' => 1, 'SQL_CACHE' => 1, 'TEMPORARY' => 1, 'TEMPTABLE' => 1, + 'UNDEFINED' => 1, 'UNINSTALL' => 1, 'VARIABLES' => 1, + 'COMPLETION' => 1, 'COMPRESSED' => 1, 'CONCURRENT' => 1, 'CONNECTION' => 1, + 'CONSISTENT' => 1, 'DEALLOCATE' => 1, 'IDENTIFIED' => 1, 'MASTER_SSL' => 1, + 'NDBCLUSTER' => 1, 'PARTITIONS' => 1, 'PERSISTENT' => 1, 'PRIVILEGES' => 1, + 'REORGANIZE' => 1, 'REPEATABLE' => 1, 'ROW_FORMAT' => 1, 'SQL_THREAD' => 1, + 'TABLESPACE' => 1, 'TABLE_NAME' => 1, + 'COLUMN_NAME' => 1, 'CURSOR_NAME' => 1, 'EXTENT_SIZE' => 1, 'FRAC_SECOND' => 1, + 'MASTER_HOST' => 1, 'MASTER_PORT' => 1, 'MASTER_USER' => 1, 'MYSQL_ERRNO' => 1, + 'PROCESSLIST' => 1, 'REPLICATION' => 1, 'SCHEMA_NAME' => 1, 'SQL_TSI_DAY' => 1, + 'TRANSACTION' => 1, 'UNCOMMITTED' => 1, + 'CATALOG_NAME' => 1, 'CLASS_ORIGIN' => 1, 'CONTRIBUTORS' => 1, 'DES_KEY_FILE' => 1, + 'INITIAL_SIZE' => 1, 'MESSAGE_TEXT' => 1, 'PARTITIONING' => 1, 'RELAY_THREAD' => 1, + 'SERIALIZABLE' => 1, 'SQL_NO_CACHE' => 1, 'SQL_TSI_HOUR' => 1, 'SQL_TSI_WEEK' => 1, + 'SQL_TSI_YEAR' => 1, 'SUBPARTITION' => 1, + 'INSERT_METHOD' => 1, 'MASTER_SSL_CA' => 1, 'RELAY_LOG_POS' => 1, 'SQL_TSI_MONTH' => 1, + 'SUBPARTITIONS' => 1, + 'AUTO_INCREMENT' => 1, 'AVG_ROW_LENGTH' => 1, 'KEY_BLOCK_SIZE' => 1, 'MASTER_LOG_POS' => 1, + 'MASTER_SSL_KEY' => 1, 'RELAY_LOG_FILE' => 1, 'SQL_TSI_MINUTE' => 1, 'SQL_TSI_SECOND' => 1, + 'TABLE_CHECKSUM' => 1, 'USER_RESOURCES' => 1, + 'AUTOEXTEND_SIZE' => 1, 'CONSTRAINT_NAME' => 1, 'DELAY_KEY_WRITE' => 1, 'MASTER_LOG_FILE' => 1, + 'MASTER_PASSWORD' => 1, 'MASTER_SSL_CERT' => 1, 'SQL_TSI_QUARTER' => 1, 'SUBCLASS_ORIGIN' => 1, + 'MASTER_SERVER_ID' => 1, 'REDO_BUFFER_SIZE' => 1, 'UNDO_BUFFER_SIZE' => 1, + 'CONSTRAINT_SCHEMA' => 1, 'IGNORE_SERVER_IDS' => 1, 'MASTER_SSL_CAPATH' => 1, + 'MASTER_SSL_CIPHER' => 1, 'SQL_BUFFER_RESULT' => 1, + 'CONSTRAINT_CATALOG' => 1, + 'SQL_TSI_FRAC_SECOND' => 1, + 'MASTER_CONNECT_RETRY' => 1, 'MAX_QUERIES_PER_HOUR' => 1, 'MAX_UPDATES_PER_HOUR' => 1, + 'MAX_USER_CONNECTIONS' => 1, + 'MASTER_HEARTBEAT_PERIOD' => 1, + 'MAX_CONNECTIONS_PER_HOUR' => 1, + + 'AS' => 3, 'BY' => 3, 'IS' => 3, 'ON' => 3, 'OR' => 3, 'TO' => 3, + 'ADD' => 3, 'ALL' => 3, 'AND' => 3, 'ASC' => 3, 'DEC' => 3, 'DIV' => 3, + 'FOR' => 3, 'NOT' => 3, 'OUT' => 3, 'SQL' => 3, 'SSL' => 3, 'USE' => 3, + 'XOR' => 3, + 'BOTH' => 3, 'CALL' => 3, 'CASE' => 3, 'DESC' => 3, 'DROP' => 3, 'DUAL' => 3, + 'EACH' => 3, 'ELSE' => 3, 'EXIT' => 3, 'FROM' => 3, 'INT1' => 3, 'INT2' => 3, + 'INT3' => 3, 'INT4' => 3, 'INT8' => 3, 'INTO' => 3, 'JOIN' => 3, 'KEYS' => 3, + 'KILL' => 3, 'LIKE' => 3, 'LOAD' => 3, 'LOCK' => 3, 'LONG' => 3, 'LOOP' => 3, + 'NULL' => 3, 'READ' => 3, 'SHOW' => 3, 'THEN' => 3, 'TRUE' => 3, 'UNDO' => 3, + 'WHEN' => 3, 'WITH' => 3, + 'ALTER' => 3, 'CHECK' => 3, 'CROSS' => 3, 'FALSE' => 3, 'FETCH' => 3, + 'FORCE' => 3, 'GRANT' => 3, 'GROUP' => 3, 'INNER' => 3, 'INOUT' => 3, + 'LEAVE' => 3, 'LIMIT' => 3, 'LINES' => 3, 'ORDER' => 3, 'OUTER' => 3, + 'PURGE' => 3, 'RANGE' => 3, 'READS' => 3, 'RLIKE' => 3, 'TABLE' => 3, + 'UNION' => 3, 'USAGE' => 3, 'USING' => 3, 'WHERE' => 3, 'WHILE' => 3, + 'WRITE' => 3, + 'BEFORE' => 3, 'CHANGE' => 3, 'COLUMN' => 3, 'CREATE' => 3, 'CURSOR' => 3, + 'DELETE' => 3, 'ELSEIF' => 3, 'FLOAT4' => 3, 'FLOAT8' => 3, 'HAVING' => 3, + 'IGNORE' => 3, 'INFILE' => 3, 'LINEAR' => 3, 'OPTION' => 3, 'REGEXP' => 3, + 'RENAME' => 3, 'RETURN' => 3, 'REVOKE' => 3, 'SELECT' => 3, 'SIGNAL' => 3, + 'UNLOCK' => 3, 'UPDATE' => 3, + 'ANALYZE' => 3, 'BETWEEN' => 3, 'CASCADE' => 3, 'COLLATE' => 3, 'DECLARE' => 3, + 'DELAYED' => 3, 'ESCAPED' => 3, 'EXPLAIN' => 3, 'FOREIGN' => 3, 'ITERATE' => 3, + 'LEADING' => 3, 'NATURAL' => 3, 'OUTFILE' => 3, 'PRIMARY' => 3, 'RELEASE' => 3, + 'REQUIRE' => 3, 'SCHEMAS' => 3, 'TRIGGER' => 3, 'VARYING' => 3, + 'CONTINUE' => 3, 'DAY_HOUR' => 3, 'DESCRIBE' => 3, 'DISTINCT' => 3, 'ENCLOSED' => 3, + 'MAXVALUE' => 3, 'MODIFIES' => 3, 'OPTIMIZE' => 3, 'RESIGNAL' => 3, 'RESTRICT' => 3, + 'SPECIFIC' => 3, 'SQLSTATE' => 3, 'STARTING' => 3, 'TRAILING' => 3, 'UNSIGNED' => 3, + 'ZEROFILL' => 3, + 'CONDITION' => 3, 'DATABASES' => 3, 'MIDDLEINT' => 3, 'PARTITION' => 3, + 'PRECISION' => 3, 'PROCEDURE' => 3, 'SENSITIVE' => 3, 'SEPARATOR' => 3, + 'ACCESSIBLE' => 3, 'ASENSITIVE' => 3, 'CONSTRAINT' => 3, 'DAY_MINUTE' => 3, + 'DAY_SECOND' => 3, 'OPTIONALLY' => 3, 'READ_WRITE' => 3, 'REFERENCES' => 3, + 'SQLWARNING' => 3, 'TERMINATED' => 3, 'YEAR_MONTH' => 3, + 'DISTINCTROW' => 3, 'HOUR_MINUTE' => 3, 'HOUR_SECOND' => 3, 'INSENSITIVE' => 3, + 'LOW_PRIORITY' => 3, 'SQLEXCEPTION' => 3, 'VARCHARACTER' => 3, + 'DETERMINISTIC' => 3, 'HIGH_PRIORITY' => 3, 'MINUTE_SECOND' => 3, 'STRAIGHT_JOIN' => 3, + 'SQL_BIG_RESULT' => 3, + 'DAY_MICROSECOND' => 3, + 'HOUR_MICROSECOND' => 3, 'SQL_SMALL_RESULT' => 3, + 'MINUTE_MICROSECOND' => 3, 'NO_WRITE_TO_BINLOG' => 3, 'SECOND_MICROSECOND' => 3, + 'SQL_CALC_FOUND_ROWS' => 3, + 'MASTER_SSL_VERIFY_SERVER_CERT' => 3, + + 'GROUP BY' => 7, 'NOT NULL' => 7, 'ORDER BY' => 7, 'SET NULL' => 7, + 'AND CHAIN' => 7, 'FULL JOIN' => 7, 'IF EXISTS' => 7, 'LEFT JOIN' => 7, + 'LESS THAN' => 7, 'LOAD DATA' => 7, 'NO ACTION' => 7, 'ON DELETE' => 7, + 'ON UPDATE' => 7, 'UNION ALL' => 7, + 'CROSS JOIN' => 7, 'ESCAPED BY' => 7, 'FOR UPDATE' => 7, 'INNER JOIN' => 7, + 'LINEAR KEY' => 7, 'NO RELEASE' => 7, 'OR REPLACE' => 7, 'RIGHT JOIN' => 7, + 'ENCLOSED BY' => 7, 'LINEAR HASH' => 7, 'STARTING BY' => 7, + 'AND NO CHAIN' => 7, 'FOR EACH ROW' => 7, 'NATURAL JOIN' => 7, 'PARTITION BY' => 7, + 'SET PASSWORD' => 7, 'SQL SECURITY' => 7, + 'CHARACTER SET' => 7, 'IF NOT EXISTS' => 7, 'TERMINATED BY' => 7, + 'DATA DIRECTORY' => 7, 'UNION DISTINCT' => 7, + 'DEFAULT CHARSET' => 7, 'DEFAULT COLLATE' => 7, 'FULL OUTER JOIN' => 7, 'INDEX DIRECTORY' => 7, + 'LEFT OUTER JOIN' => 7, 'SUBPARTITION BY' => 7, + 'GENERATED ALWAYS' => 7, 'RIGHT OUTER JOIN' => 7, + 'NATURAL LEFT JOIN' => 7, 'START TRANSACTION' => 7, + 'LOCK IN SHARE MODE' => 7, 'NATURAL RIGHT JOIN' => 7, 'SELECT TRANSACTION' => 7, + 'DEFAULT CHARACTER SET' => 7, + 'NATURAL LEFT OUTER JOIN' => 7, + 'NATURAL RIGHT OUTER JOIN' => 7, 'WITH CONSISTENT SNAPSHOT' => 7, + + 'BIT' => 9, 'XML' => 9, + 'ENUM' => 9, 'JSON' => 9, 'TEXT' => 9, + 'ARRAY' => 9, + 'SERIAL' => 9, + 'BOOLEAN' => 9, + 'DATETIME' => 9, 'GEOMETRY' => 9, 'MULTISET' => 9, + 'MULTILINEPOINT' => 9, + 'MULTILINEPOLYGON' => 9, + + 'INT' => 11, 'SET' => 11, + 'BLOB' => 11, 'REAL' => 11, + 'FLOAT' => 11, + 'BIGINT' => 11, 'DOUBLE' => 11, + 'DECIMAL' => 11, 'INTEGER' => 11, 'NUMERIC' => 11, 'TINYINT' => 11, 'VARCHAR' => 11, + 'LONGBLOB' => 11, 'LONGTEXT' => 11, 'SMALLINT' => 11, 'TINYBLOB' => 11, 'TINYTEXT' => 11, + 'CHARACTER' => 11, 'MEDIUMINT' => 11, 'VARBINARY' => 11, + 'MEDIUMBLOB' => 11, 'MEDIUMTEXT' => 11, + + 'BINARY VARYING' => 15, + + 'KEY' => 19, + 'INDEX' => 19, + 'UNIQUE' => 19, + 'SPATIAL' => 19, + 'FULLTEXT' => 19, + + 'INDEX KEY' => 23, + 'UNIQUE KEY' => 23, + 'FOREIGN KEY' => 23, 'PRIMARY KEY' => 23, 'SPATIAL KEY' => 23, + 'FULLTEXT KEY' => 23, 'UNIQUE INDEX' => 23, + 'SPATIAL INDEX' => 23, + 'FULLTEXT INDEX' => 23, + + 'X' => 33, 'Y' => 33, + 'LN' => 33, 'PI' => 33, + 'ABS' => 33, 'AVG' => 33, 'BIN' => 33, 'COS' => 33, 'COT' => 33, 'DAY' => 33, + 'ELT' => 33, 'EXP' => 33, 'HEX' => 33, 'LOG' => 33, 'MAX' => 33, 'MD5' => 33, + 'MID' => 33, 'MIN' => 33, 'NOW' => 33, 'OCT' => 33, 'ORD' => 33, 'POW' => 33, + 'SHA' => 33, 'SIN' => 33, 'STD' => 33, 'SUM' => 33, 'TAN' => 33, + 'ACOS' => 33, 'AREA' => 33, 'ASIN' => 33, 'ATAN' => 33, 'CAST' => 33, 'CEIL' => 33, + 'CONV' => 33, 'HOUR' => 33, 'LOG2' => 33, 'LPAD' => 33, 'RAND' => 33, 'RPAD' => 33, + 'SHA1' => 33, 'SHA2' => 33, 'SIGN' => 33, 'SQRT' => 33, 'SRID' => 33, 'TRIM' => 33, + 'USER' => 33, 'UUID' => 33, 'WEEK' => 33, + 'ASCII' => 33, 'ASWKB' => 33, 'ASWKT' => 33, 'ATAN2' => 33, 'COUNT' => 33, + 'CRC32' => 33, 'FIELD' => 33, 'FLOOR' => 33, 'INSTR' => 33, 'LCASE' => 33, + 'LEAST' => 33, 'LOG10' => 33, 'LOWER' => 33, 'LTRIM' => 33, 'MONTH' => 33, + 'POWER' => 33, 'QUOTE' => 33, 'ROUND' => 33, 'RTRIM' => 33, 'SLEEP' => 33, + 'SPACE' => 33, 'UCASE' => 33, 'UNHEX' => 33, 'UPPER' => 33, + 'ASTEXT' => 33, 'BIT_OR' => 33, 'CONCAT' => 33, 'DECODE' => 33, 'ENCODE' => 33, + 'EQUALS' => 33, 'FORMAT' => 33, 'IFNULL' => 33, 'ISNULL' => 33, 'LENGTH' => 33, + 'LOCATE' => 33, 'MINUTE' => 33, 'NULLIF' => 33, 'POINTN' => 33, 'SECOND' => 33, + 'STDDEV' => 33, 'STRCMP' => 33, 'SUBSTR' => 33, 'WITHIN' => 33, + 'ADDDATE' => 33, 'ADDTIME' => 33, 'AGAINST' => 33, 'BIT_AND' => 33, 'BIT_XOR' => 33, + 'CEILING' => 33, 'CHARSET' => 33, 'CROSSES' => 33, 'CURDATE' => 33, 'CURTIME' => 33, + 'DAYNAME' => 33, 'DEGREES' => 33, 'ENCRYPT' => 33, 'EXTRACT' => 33, 'GLENGTH' => 33, + 'ISEMPTY' => 33, 'QUARTER' => 33, 'RADIANS' => 33, 'REVERSE' => 33, 'SOUNDEX' => 33, + 'SUBDATE' => 33, 'SUBTIME' => 33, 'SYSDATE' => 33, 'TOUCHES' => 33, 'TO_DAYS' => 33, + 'VAR_POP' => 33, 'VERSION' => 33, 'WEEKDAY' => 33, + 'ASBINARY' => 33, 'CENTROID' => 33, 'COALESCE' => 33, 'COMPRESS' => 33, 'CONTAINS' => 33, + 'DATEDIFF' => 33, 'DATE_ADD' => 33, 'DATE_SUB' => 33, 'DISJOINT' => 33, 'ENDPOINT' => 33, + 'ENVELOPE' => 33, 'GET_LOCK' => 33, 'GREATEST' => 33, 'ISCLOSED' => 33, 'ISSIMPLE' => 33, + 'MAKEDATE' => 33, 'MAKETIME' => 33, 'MAKE_SET' => 33, 'MBREQUAL' => 33, 'OVERLAPS' => 33, + 'PASSWORD' => 33, 'POSITION' => 33, 'TIMEDIFF' => 33, 'TRUNCATE' => 33, 'VARIANCE' => 33, + 'VAR_SAMP' => 33, 'YEARWEEK' => 33, + 'BENCHMARK' => 33, 'BIT_COUNT' => 33, 'COLLATION' => 33, 'CONCAT_WS' => 33, + 'DAYOFWEEK' => 33, 'DAYOFYEAR' => 33, 'DIMENSION' => 33, 'FROM_DAYS' => 33, + 'GEOMETRYN' => 33, 'INET_ATON' => 33, 'INET_NTOA' => 33, 'LOAD_FILE' => 33, + 'MBRWITHIN' => 33, 'MONTHNAME' => 33, 'NUMPOINTS' => 33, 'ROW_COUNT' => 33, + 'SUBSTRING' => 33, 'UPDATEXML' => 33, + 'BIT_LENGTH' => 33, 'CONVERT_TZ' => 33, 'DAYOFMONTH' => 33, 'EXPORT_SET' => 33, + 'FOUND_ROWS' => 33, 'GET_FORMAT' => 33, 'INTERSECTS' => 33, 'MBRTOUCHES' => 33, + 'MULTIPOINT' => 33, 'NAME_CONST' => 33, 'PERIOD_ADD' => 33, 'STARTPOINT' => 33, + 'STDDEV_POP' => 33, 'TO_SECONDS' => 33, 'UNCOMPRESS' => 33, 'UUID_SHORT' => 33, + 'WEEKOFYEAR' => 33, + 'AES_DECRYPT' => 33, 'AES_ENCRYPT' => 33, 'CHAR_LENGTH' => 33, 'DATE_FORMAT' => 33, + 'DES_DECRYPT' => 33, 'DES_ENCRYPT' => 33, 'FIND_IN_SET' => 33, 'GEOMFROMWKB' => 33, + 'LINEFROMWKB' => 33, 'MBRCONTAINS' => 33, 'MBRDISJOINT' => 33, 'MBROVERLAPS' => 33, + 'MICROSECOND' => 33, 'PERIOD_DIFF' => 33, 'POLYFROMWKB' => 33, 'SEC_TO_TIME' => 33, + 'STDDEV_SAMP' => 33, 'STR_TO_DATE' => 33, 'SYSTEM_USER' => 33, 'TIME_FORMAT' => 33, + 'TIME_TO_SEC' => 33, + 'COERCIBILITY' => 33, 'EXTERIORRING' => 33, 'EXTRACTVALUE' => 33, 'GEOMETRYTYPE' => 33, + 'GEOMFROMTEXT' => 33, 'GROUP_CONCAT' => 33, 'IS_FREE_LOCK' => 33, 'IS_USED_LOCK' => 33, + 'LINEFROMTEXT' => 33, 'MLINEFROMWKB' => 33, 'MPOLYFROMWKB' => 33, 'MULTIPOLYGON' => 33, + 'OCTET_LENGTH' => 33, 'OLD_PASSWORD' => 33, 'POINTFROMWKB' => 33, 'POLYFROMTEXT' => 33, + 'RELEASE_LOCK' => 33, 'SESSION_USER' => 33, 'TIMESTAMPADD' => 33, + 'CONNECTION_ID' => 33, 'FROM_UNIXTIME' => 33, 'INTERIORRINGN' => 33, 'MBRINTERSECTS' => 33, + 'MLINEFROMTEXT' => 33, 'MPOINTFROMWKB' => 33, 'MPOLYFROMTEXT' => 33, 'NUMGEOMETRIES' => 33, + 'POINTFROMTEXT' => 33, 'TIMESTAMPDIFF' => 33, + 'LAST_INSERT_ID' => 33, 'MPOINTFROMTEXT' => 33, 'POLYGONFROMWKB' => 33, 'UNIX_TIMESTAMP' => 33, + 'GEOMCOLLFROMWKB' => 33, 'MASTER_POS_WAIT' => 33, 'POLYGONFROMTEXT' => 33, 'SUBSTRING_INDEX' => 33, + 'CHARACTER_LENGTH' => 33, 'GEOMCOLLFROMTEXT' => 33, 'GEOMETRYFROMTEXT' => 33, + 'NUMINTERIORRINGS' => 33, + 'LINESTRINGFROMWKB' => 33, 'MULTIPOINTFROMWKB' => 33, + 'MULTIPOINTFROMTEXT' => 33, + 'MULTIPOLYGONFROMWKB' => 33, 'UNCOMPRESSED_LENGTH' => 33, + 'MULTIPOLYGONFROMTEXT' => 33, + 'MULTILINESTRINGFROMWKB' => 33, + 'MULTILINESTRINGFROMTEXT' => 33, + 'GEOMETRYCOLLECTIONFROMWKB' => 33, + 'GEOMETRYCOLLECTIONFROMTEXT' => 33, + + 'IF' => 35, 'IN' => 35, + 'MOD' => 35, + 'LEFT' => 35, + 'MATCH' => 35, 'RIGHT' => 35, + 'EXISTS' => 35, 'INSERT' => 35, 'REPEAT' => 35, 'SCHEMA' => 35, 'VALUES' => 35, + 'CONVERT' => 35, 'DEFAULT' => 35, 'REPLACE' => 35, + 'DATABASE' => 35, 'UTC_DATE' => 35, 'UTC_TIME' => 35, + 'LOCALTIME' => 35, + 'CURRENT_DATE' => 35, 'CURRENT_TIME' => 35, 'CURRENT_USER' => 35, + 'UTC_TIMESTAMP' => 35, + 'LOCALTIMESTAMP' => 35, + 'CURRENT_TIMESTAMP' => 35, + + 'NOT IN' => 39, + + 'DATE' => 41, 'TIME' => 41, 'YEAR' => 41, + 'POINT' => 41, + 'POLYGON' => 41, + 'TIMESTAMP' => 41, + 'LINESTRING' => 41, + 'MULTILINESTRING' => 41, + 'GEOMETRYCOLLECTION' => 41, + + 'CHAR' => 43, + 'BINARY' => 43, + 'INTERVAL' => 43, + ]; +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Contexts/ContextMariaDb100100.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Contexts/ContextMariaDb100100.php new file mode 100644 index 0000000000..fd4867bb78 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Contexts/ContextMariaDb100100.php @@ -0,0 +1,347 @@ + + * @phpstan-var non-empty-array + */ + public static $KEYWORDS = [ + 'AT' => 1, 'DO' => 1, 'IO' => 1, 'NO' => 1, 'XA' => 1, + 'ANY' => 1, 'CPU' => 1, 'END' => 1, 'IPC' => 1, 'NDB' => 1, 'NEW' => 1, + 'ONE' => 1, 'ROW' => 1, 'XID' => 1, + 'BOOL' => 1, 'BYTE' => 1, 'CODE' => 1, 'CUBE' => 1, 'DATA' => 1, 'DISK' => 1, + 'ENDS' => 1, 'FAST' => 1, 'FILE' => 1, 'FULL' => 1, 'HASH' => 1, 'HELP' => 1, + 'HOST' => 1, 'LAST' => 1, 'LESS' => 1, 'LIST' => 1, 'LOGS' => 1, 'MODE' => 1, + 'NAME' => 1, 'NEXT' => 1, 'NONE' => 1, 'ONLY' => 1, 'OPEN' => 1, 'PAGE' => 1, + 'PORT' => 1, 'PREV' => 1, 'ROWS' => 1, 'SLOW' => 1, 'SOME' => 1, 'STOP' => 1, + 'THAN' => 1, 'TYPE' => 1, 'VIEW' => 1, 'WAIT' => 1, 'WORK' => 1, 'X509' => 1, + 'AFTER' => 1, 'BEGIN' => 1, 'BLOCK' => 1, 'BTREE' => 1, 'CACHE' => 1, + 'CHAIN' => 1, 'CLOSE' => 1, 'ERROR' => 1, 'EVENT' => 1, 'EVERY' => 1, + 'FIRST' => 1, 'FIXED' => 1, 'FLUSH' => 1, 'FOUND' => 1, 'HOSTS' => 1, + 'LEVEL' => 1, 'LOCAL' => 1, 'LOCKS' => 1, 'MERGE' => 1, 'MUTEX' => 1, + 'NAMES' => 1, 'NCHAR' => 1, 'NEVER' => 1, 'OWNER' => 1, 'PHASE' => 1, + 'PROXY' => 1, 'QUERY' => 1, 'QUICK' => 1, 'RELAY' => 1, 'RESET' => 1, + 'RTREE' => 1, 'SHARE' => 1, 'SLAVE' => 1, 'START' => 1, 'SUPER' => 1, + 'SWAPS' => 1, 'TYPES' => 1, 'UNTIL' => 1, 'VALUE' => 1, + 'ACTION' => 1, 'ALWAYS' => 1, 'BACKUP' => 1, 'BINLOG' => 1, 'CIPHER' => 1, + 'CLIENT' => 1, 'COMMIT' => 1, 'ENABLE' => 1, 'ENGINE' => 1, 'ERRORS' => 1, + 'ESCAPE' => 1, 'EVENTS' => 1, 'EXPIRE' => 1, 'EXPORT' => 1, 'FAULTS' => 1, + 'FIELDS' => 1, 'FILTER' => 1, 'GLOBAL' => 1, 'GRANTS' => 1, 'IMPORT' => 1, + 'ISSUER' => 1, 'LEAVES' => 1, 'MASTER' => 1, 'MEDIUM' => 1, 'MEMORY' => 1, + 'MODIFY' => 1, 'NUMBER' => 1, 'OFFSET' => 1, 'PARSER' => 1, 'PLUGIN' => 1, + 'RELOAD' => 1, 'REMOVE' => 1, 'REPAIR' => 1, 'RESUME' => 1, 'ROLLUP' => 1, + 'SERVER' => 1, 'SIGNED' => 1, 'SIMPLE' => 1, 'SOCKET' => 1, 'SONAME' => 1, + 'SOUNDS' => 1, 'SOURCE' => 1, 'STARTS' => 1, 'STATUS' => 1, 'STRING' => 1, + 'TABLES' => 1, + 'ACCOUNT' => 1, 'ANALYSE' => 1, 'CHANGED' => 1, 'CHANNEL' => 1, 'COLUMNS' => 1, + 'COMMENT' => 1, 'COMPACT' => 1, 'CONTEXT' => 1, 'CURRENT' => 1, 'DEFINER' => 1, + 'DISABLE' => 1, 'DISCARD' => 1, 'DYNAMIC' => 1, 'ENGINES' => 1, 'EXECUTE' => 1, + 'FOLLOWS' => 1, 'GENERAL' => 1, 'HANDLER' => 1, 'INDEXES' => 1, 'INSTALL' => 1, + 'INVOKER' => 1, 'LOGFILE' => 1, 'MIGRATE' => 1, 'NO_WAIT' => 1, 'OPTIONS' => 1, + 'PARTIAL' => 1, 'PLUGINS' => 1, 'PREPARE' => 1, 'PROFILE' => 1, 'REBUILD' => 1, + 'RECOVER' => 1, 'RESTORE' => 1, 'RETURNS' => 1, 'ROUTINE' => 1, 'SESSION' => 1, + 'STACKED' => 1, 'STORAGE' => 1, 'SUBJECT' => 1, 'SUSPEND' => 1, 'UNICODE' => 1, + 'UNKNOWN' => 1, 'UPGRADE' => 1, 'USE_FRM' => 1, 'WITHOUT' => 1, 'WRAPPER' => 1, + 'CASCADED' => 1, 'CHECKSUM' => 1, 'DATAFILE' => 1, 'DUMPFILE' => 1, 'EXCHANGE' => 1, + 'EXTENDED' => 1, 'FUNCTION' => 1, 'LANGUAGE' => 1, 'MAX_ROWS' => 1, 'MAX_SIZE' => 1, + 'MIN_ROWS' => 1, 'NATIONAL' => 1, 'NVARCHAR' => 1, 'PRECEDES' => 1, 'PRESERVE' => 1, + 'PROFILES' => 1, 'REDOFILE' => 1, 'RELAYLOG' => 1, 'ROLLBACK' => 1, 'SCHEDULE' => 1, + 'SECURITY' => 1, 'SHUTDOWN' => 1, 'SNAPSHOT' => 1, 'SWITCHES' => 1, 'TRIGGERS' => 1, + 'UNDOFILE' => 1, 'WARNINGS' => 1, + 'AGGREGATE' => 1, 'ALGORITHM' => 1, 'COMMITTED' => 1, 'DIRECTORY' => 1, + 'DUPLICATE' => 1, 'EXPANSION' => 1, 'IO_THREAD' => 1, 'ISOLATION' => 1, + 'NODEGROUP' => 1, 'PACK_KEYS' => 1, 'READ_ONLY' => 1, 'REDUNDANT' => 1, + 'SAVEPOINT' => 1, 'SQL_CACHE' => 1, 'TEMPORARY' => 1, 'TEMPTABLE' => 1, + 'UNDEFINED' => 1, 'UNINSTALL' => 1, 'VARIABLES' => 1, + 'COMPLETION' => 1, 'COMPRESSED' => 1, 'CONCURRENT' => 1, 'CONNECTION' => 1, + 'CONSISTENT' => 1, 'DEALLOCATE' => 1, 'IDENTIFIED' => 1, 'MASTER_SSL' => 1, + 'NDBCLUSTER' => 1, 'PARTITIONS' => 1, 'PERSISTENT' => 1, 'PLUGIN_DIR' => 1, + 'PRIVILEGES' => 1, 'REORGANIZE' => 1, 'REPEATABLE' => 1, 'ROW_FORMAT' => 1, + 'SQL_THREAD' => 1, 'TABLESPACE' => 1, 'TABLE_NAME' => 1, 'VALIDATION' => 1, + 'COLUMN_NAME' => 1, 'COMPRESSION' => 1, 'CURSOR_NAME' => 1, 'DIAGNOSTICS' => 1, + 'EXTENT_SIZE' => 1, 'MASTER_HOST' => 1, 'MASTER_PORT' => 1, 'MASTER_USER' => 1, + 'MYSQL_ERRNO' => 1, 'NONBLOCKING' => 1, 'PROCESSLIST' => 1, 'REPLICATION' => 1, + 'SCHEMA_NAME' => 1, 'SQL_TSI_DAY' => 1, 'TRANSACTION' => 1, 'UNCOMMITTED' => 1, + 'CATALOG_NAME' => 1, 'CLASS_ORIGIN' => 1, 'DEFAULT_AUTH' => 1, 'DES_KEY_FILE' => 1, + 'INITIAL_SIZE' => 1, 'MASTER_DELAY' => 1, 'MESSAGE_TEXT' => 1, 'PARTITIONING' => 1, + 'RELAY_THREAD' => 1, 'SERIALIZABLE' => 1, 'SQL_NO_CACHE' => 1, 'SQL_TSI_HOUR' => 1, + 'SQL_TSI_WEEK' => 1, 'SQL_TSI_YEAR' => 1, 'SUBPARTITION' => 1, + 'COLUMN_FORMAT' => 1, 'INSERT_METHOD' => 1, 'MASTER_SSL_CA' => 1, 'RELAY_LOG_POS' => 1, + 'SQL_TSI_MONTH' => 1, 'SUBPARTITIONS' => 1, + 'AUTO_INCREMENT' => 1, 'AVG_ROW_LENGTH' => 1, 'KEY_BLOCK_SIZE' => 1, 'MASTER_LOG_POS' => 1, + 'MASTER_SSL_CRL' => 1, 'MASTER_SSL_KEY' => 1, 'RELAY_LOG_FILE' => 1, 'SQL_TSI_MINUTE' => 1, + 'SQL_TSI_SECOND' => 1, 'TABLE_CHECKSUM' => 1, 'USER_RESOURCES' => 1, + 'AUTOEXTEND_SIZE' => 1, 'CONSTRAINT_NAME' => 1, 'DELAY_KEY_WRITE' => 1, 'FILE_BLOCK_SIZE' => 1, + 'MASTER_LOG_FILE' => 1, 'MASTER_PASSWORD' => 1, 'MASTER_SSL_CERT' => 1, 'PARSE_GCOL_EXPR' => 1, + 'REPLICATE_DO_DB' => 1, 'SQL_AFTER_GTIDS' => 1, 'SQL_TSI_QUARTER' => 1, 'SUBCLASS_ORIGIN' => 1, + 'MASTER_SERVER_ID' => 1, 'REDO_BUFFER_SIZE' => 1, 'SQL_BEFORE_GTIDS' => 1, + 'STATS_PERSISTENT' => 1, 'UNDO_BUFFER_SIZE' => 1, + 'CONSTRAINT_SCHEMA' => 1, 'GROUP_REPLICATION' => 1, 'IGNORE_SERVER_IDS' => 1, + 'MASTER_SSL_CAPATH' => 1, 'MASTER_SSL_CIPHER' => 1, 'RETURNED_SQLSTATE' => 1, + 'SQL_BUFFER_RESULT' => 1, 'STATS_AUTO_RECALC' => 1, + 'CONSTRAINT_CATALOG' => 1, 'MASTER_RETRY_COUNT' => 1, 'MASTER_SSL_CRLPATH' => 1, + 'MAX_STATEMENT_TIME' => 1, 'REPLICATE_DO_TABLE' => 1, 'SQL_AFTER_MTS_GAPS' => 1, + 'STATS_SAMPLE_PAGES' => 1, + 'REPLICATE_IGNORE_DB' => 1, + 'MASTER_AUTO_POSITION' => 1, 'MASTER_CONNECT_RETRY' => 1, 'MAX_QUERIES_PER_HOUR' => 1, + 'MAX_UPDATES_PER_HOUR' => 1, 'MAX_USER_CONNECTIONS' => 1, 'REPLICATE_REWRITE_DB' => 1, + 'REPLICATE_IGNORE_TABLE' => 1, + 'MASTER_HEARTBEAT_PERIOD' => 1, 'REPLICATE_WILD_DO_TABLE' => 1, + 'MAX_CONNECTIONS_PER_HOUR' => 1, + 'REPLICATE_WILD_IGNORE_TABLE' => 1, + + 'AS' => 3, 'BY' => 3, 'IS' => 3, 'ON' => 3, 'OR' => 3, 'TO' => 3, + 'ADD' => 3, 'ALL' => 3, 'AND' => 3, 'ASC' => 3, 'DEC' => 3, 'DIV' => 3, + 'FOR' => 3, 'GET' => 3, 'NOT' => 3, 'OUT' => 3, 'SQL' => 3, 'SSL' => 3, + 'USE' => 3, 'XOR' => 3, + 'BOTH' => 3, 'CALL' => 3, 'CASE' => 3, 'DESC' => 3, 'DROP' => 3, 'DUAL' => 3, + 'EACH' => 3, 'ELSE' => 3, 'EXIT' => 3, 'FROM' => 3, 'INT1' => 3, 'INT2' => 3, + 'INT3' => 3, 'INT4' => 3, 'INT8' => 3, 'INTO' => 3, 'JOIN' => 3, 'KEYS' => 3, + 'KILL' => 3, 'LIKE' => 3, 'LOAD' => 3, 'LOCK' => 3, 'LONG' => 3, 'LOOP' => 3, + 'NULL' => 3, 'READ' => 3, 'SHOW' => 3, 'THEN' => 3, 'TRUE' => 3, 'UNDO' => 3, + 'WHEN' => 3, 'WITH' => 3, + 'ALTER' => 3, 'CHECK' => 3, 'CROSS' => 3, 'FALSE' => 3, 'FETCH' => 3, + 'FORCE' => 3, 'GRANT' => 3, 'GROUP' => 3, 'INNER' => 3, 'INOUT' => 3, + 'LEAVE' => 3, 'LIMIT' => 3, 'LINES' => 3, 'ORDER' => 3, 'OUTER' => 3, + 'PURGE' => 3, 'RANGE' => 3, 'READS' => 3, 'RLIKE' => 3, 'TABLE' => 3, + 'UNION' => 3, 'USAGE' => 3, 'USING' => 3, 'WHERE' => 3, 'WHILE' => 3, + 'WRITE' => 3, + 'BEFORE' => 3, 'CHANGE' => 3, 'COLUMN' => 3, 'CREATE' => 3, 'CURSOR' => 3, + 'DELETE' => 3, 'ELSEIF' => 3, 'FLOAT4' => 3, 'FLOAT8' => 3, 'HAVING' => 3, + 'IGNORE' => 3, 'INFILE' => 3, 'LINEAR' => 3, 'OPTION' => 3, 'REGEXP' => 3, + 'RENAME' => 3, 'RETURN' => 3, 'REVOKE' => 3, 'SELECT' => 3, 'SIGNAL' => 3, + 'STORED' => 3, 'UNLOCK' => 3, 'UPDATE' => 3, + 'ANALYZE' => 3, 'BETWEEN' => 3, 'CASCADE' => 3, 'COLLATE' => 3, 'DECLARE' => 3, + 'DELAYED' => 3, 'ESCAPED' => 3, 'EXPLAIN' => 3, 'FOREIGN' => 3, 'ITERATE' => 3, + 'LEADING' => 3, 'NATURAL' => 3, 'OUTFILE' => 3, 'PRIMARY' => 3, 'RELEASE' => 3, + 'REQUIRE' => 3, 'SCHEMAS' => 3, 'TRIGGER' => 3, 'VARYING' => 3, 'VIRTUAL' => 3, + 'CONTINUE' => 3, 'DAY_HOUR' => 3, 'DESCRIBE' => 3, 'DISTINCT' => 3, 'ENCLOSED' => 3, + 'MAXVALUE' => 3, 'MODIFIES' => 3, 'OPTIMIZE' => 3, 'RESIGNAL' => 3, 'RESTRICT' => 3, + 'SPECIFIC' => 3, 'SQLSTATE' => 3, 'STARTING' => 3, 'TRAILING' => 3, 'UNSIGNED' => 3, + 'ZEROFILL' => 3, + 'CONDITION' => 3, 'DATABASES' => 3, 'GENERATED' => 3, 'MIDDLEINT' => 3, + 'PARTITION' => 3, 'PRECISION' => 3, 'PROCEDURE' => 3, 'SENSITIVE' => 3, + 'SEPARATOR' => 3, + 'ACCESSIBLE' => 3, 'ASENSITIVE' => 3, 'CONSTRAINT' => 3, 'DAY_MINUTE' => 3, + 'DAY_SECOND' => 3, 'OPTIONALLY' => 3, 'READ_WRITE' => 3, 'REFERENCES' => 3, + 'SQLWARNING' => 3, 'TERMINATED' => 3, 'YEAR_MONTH' => 3, + 'DISTINCTROW' => 3, 'HOUR_MINUTE' => 3, 'HOUR_SECOND' => 3, 'INSENSITIVE' => 3, + 'MASTER_BIND' => 3, + 'LOW_PRIORITY' => 3, 'SQLEXCEPTION' => 3, 'VARCHARACTER' => 3, + 'DETERMINISTIC' => 3, 'HIGH_PRIORITY' => 3, 'MINUTE_SECOND' => 3, 'STRAIGHT_JOIN' => 3, + 'IO_AFTER_GTIDS' => 3, 'SQL_BIG_RESULT' => 3, + 'DAY_MICROSECOND' => 3, 'IO_BEFORE_GTIDS' => 3, 'OPTIMIZER_COSTS' => 3, + 'HOUR_MICROSECOND' => 3, 'SQL_SMALL_RESULT' => 3, + 'MINUTE_MICROSECOND' => 3, 'NO_WRITE_TO_BINLOG' => 3, 'SECOND_MICROSECOND' => 3, + 'SQL_CALC_FOUND_ROWS' => 3, + 'MASTER_SSL_VERIFY_SERVER_CERT' => 3, + + 'GROUP BY' => 7, 'NOT NULL' => 7, 'ORDER BY' => 7, 'SET NULL' => 7, + 'AND CHAIN' => 7, 'FULL JOIN' => 7, 'IF EXISTS' => 7, 'LEFT JOIN' => 7, + 'LESS THAN' => 7, 'LOAD DATA' => 7, 'NO ACTION' => 7, 'ON DELETE' => 7, + 'ON UPDATE' => 7, 'UNION ALL' => 7, + 'CROSS JOIN' => 7, 'ESCAPED BY' => 7, 'FOR UPDATE' => 7, 'INNER JOIN' => 7, + 'LINEAR KEY' => 7, 'NO RELEASE' => 7, 'OR REPLACE' => 7, 'RIGHT JOIN' => 7, + 'ENCLOSED BY' => 7, 'LINEAR HASH' => 7, 'STARTING BY' => 7, + 'AND NO CHAIN' => 7, 'FOR EACH ROW' => 7, 'NATURAL JOIN' => 7, 'PARTITION BY' => 7, + 'SET PASSWORD' => 7, 'SQL SECURITY' => 7, + 'CHARACTER SET' => 7, 'IF NOT EXISTS' => 7, 'TERMINATED BY' => 7, + 'DATA DIRECTORY' => 7, 'UNION DISTINCT' => 7, + 'DEFAULT CHARSET' => 7, 'DEFAULT COLLATE' => 7, 'FULL OUTER JOIN' => 7, 'INDEX DIRECTORY' => 7, + 'LEFT OUTER JOIN' => 7, 'SUBPARTITION BY' => 7, + 'GENERATED ALWAYS' => 7, 'RIGHT OUTER JOIN' => 7, + 'NATURAL LEFT JOIN' => 7, 'START TRANSACTION' => 7, + 'LOCK IN SHARE MODE' => 7, 'NATURAL RIGHT JOIN' => 7, 'SELECT TRANSACTION' => 7, + 'DEFAULT CHARACTER SET' => 7, + 'NATURAL LEFT OUTER JOIN' => 7, + 'NATURAL RIGHT OUTER JOIN' => 7, 'WITH CONSISTENT SNAPSHOT' => 7, + + 'BIT' => 9, 'XML' => 9, + 'ENUM' => 9, 'JSON' => 9, 'TEXT' => 9, + 'ARRAY' => 9, + 'SERIAL' => 9, + 'BOOLEAN' => 9, + 'DATETIME' => 9, 'GEOMETRY' => 9, 'MULTISET' => 9, + 'MULTILINEPOINT' => 9, + 'MULTILINEPOLYGON' => 9, + + 'INT' => 11, 'SET' => 11, + 'BLOB' => 11, 'REAL' => 11, + 'FLOAT' => 11, + 'BIGINT' => 11, 'DOUBLE' => 11, + 'DECIMAL' => 11, 'INTEGER' => 11, 'NUMERIC' => 11, 'TINYINT' => 11, 'VARCHAR' => 11, + 'LONGBLOB' => 11, 'LONGTEXT' => 11, 'SMALLINT' => 11, 'TINYBLOB' => 11, 'TINYTEXT' => 11, + 'CHARACTER' => 11, 'MEDIUMINT' => 11, 'VARBINARY' => 11, + 'MEDIUMBLOB' => 11, 'MEDIUMTEXT' => 11, + + 'BINARY VARYING' => 15, + + 'KEY' => 19, + 'INDEX' => 19, + 'UNIQUE' => 19, + 'SPATIAL' => 19, + 'FULLTEXT' => 19, + + 'INDEX KEY' => 23, + 'UNIQUE KEY' => 23, + 'FOREIGN KEY' => 23, 'PRIMARY KEY' => 23, 'SPATIAL KEY' => 23, + 'FULLTEXT KEY' => 23, 'UNIQUE INDEX' => 23, + 'SPATIAL INDEX' => 23, + 'FULLTEXT INDEX' => 23, + + 'X' => 33, 'Y' => 33, + 'LN' => 33, 'PI' => 33, + 'ABS' => 33, 'AVG' => 33, 'BIN' => 33, 'COS' => 33, 'COT' => 33, 'DAY' => 33, + 'ELT' => 33, 'EXP' => 33, 'HEX' => 33, 'LOG' => 33, 'MAX' => 33, 'MD5' => 33, + 'MID' => 33, 'MIN' => 33, 'NOW' => 33, 'OCT' => 33, 'ORD' => 33, 'POW' => 33, + 'SHA' => 33, 'SIN' => 33, 'STD' => 33, 'SUM' => 33, 'TAN' => 33, + 'ACOS' => 33, 'AREA' => 33, 'ASIN' => 33, 'ATAN' => 33, 'CAST' => 33, 'CEIL' => 33, + 'CONV' => 33, 'HOUR' => 33, 'LOG2' => 33, 'LPAD' => 33, 'RAND' => 33, 'RPAD' => 33, + 'SHA1' => 33, 'SHA2' => 33, 'SIGN' => 33, 'SQRT' => 33, 'SRID' => 33, 'ST_X' => 33, + 'ST_Y' => 33, 'TRIM' => 33, 'USER' => 33, 'UUID' => 33, 'WEEK' => 33, + 'ASCII' => 33, 'ASWKB' => 33, 'ASWKT' => 33, 'ATAN2' => 33, 'COUNT' => 33, + 'CRC32' => 33, 'FIELD' => 33, 'FLOOR' => 33, 'INSTR' => 33, 'LCASE' => 33, + 'LEAST' => 33, 'LOG10' => 33, 'LOWER' => 33, 'LTRIM' => 33, 'MONTH' => 33, + 'POWER' => 33, 'QUOTE' => 33, 'ROUND' => 33, 'RTRIM' => 33, 'SLEEP' => 33, + 'SPACE' => 33, 'UCASE' => 33, 'UNHEX' => 33, 'UPPER' => 33, + 'ASTEXT' => 33, 'BIT_OR' => 33, 'BUFFER' => 33, 'CONCAT' => 33, 'DECODE' => 33, + 'ENCODE' => 33, 'EQUALS' => 33, 'FORMAT' => 33, 'IFNULL' => 33, 'ISNULL' => 33, + 'LENGTH' => 33, 'LOCATE' => 33, 'MINUTE' => 33, 'NULLIF' => 33, 'POINTN' => 33, + 'SECOND' => 33, 'STDDEV' => 33, 'STRCMP' => 33, 'SUBSTR' => 33, 'WITHIN' => 33, + 'ADDDATE' => 33, 'ADDTIME' => 33, 'AGAINST' => 33, 'BIT_AND' => 33, 'BIT_XOR' => 33, + 'CEILING' => 33, 'CHARSET' => 33, 'CROSSES' => 33, 'CURDATE' => 33, 'CURTIME' => 33, + 'DAYNAME' => 33, 'DEGREES' => 33, 'ENCRYPT' => 33, 'EXTRACT' => 33, 'GLENGTH' => 33, + 'ISEMPTY' => 33, 'IS_IPV4' => 33, 'IS_IPV6' => 33, 'QUARTER' => 33, 'RADIANS' => 33, + 'REVERSE' => 33, 'SOUNDEX' => 33, 'ST_AREA' => 33, 'ST_SRID' => 33, 'SUBDATE' => 33, + 'SUBTIME' => 33, 'SYSDATE' => 33, 'TOUCHES' => 33, 'TO_DAYS' => 33, 'VAR_POP' => 33, + 'VERSION' => 33, 'WEEKDAY' => 33, + 'ASBINARY' => 33, 'CENTROID' => 33, 'COALESCE' => 33, 'COMPRESS' => 33, 'CONTAINS' => 33, + 'DATEDIFF' => 33, 'DATE_ADD' => 33, 'DATE_SUB' => 33, 'DISJOINT' => 33, 'DISTANCE' => 33, + 'ENDPOINT' => 33, 'ENVELOPE' => 33, 'GET_LOCK' => 33, 'GREATEST' => 33, 'ISCLOSED' => 33, + 'ISSIMPLE' => 33, 'JSON_SET' => 33, 'MAKEDATE' => 33, 'MAKETIME' => 33, 'MAKE_SET' => 33, + 'MBREQUAL' => 33, 'OVERLAPS' => 33, 'PASSWORD' => 33, 'POSITION' => 33, 'ST_ASWKB' => 33, + 'ST_ASWKT' => 33, 'ST_UNION' => 33, 'TIMEDIFF' => 33, 'TRUNCATE' => 33, 'VARIANCE' => 33, + 'VAR_SAMP' => 33, 'YEARWEEK' => 33, + 'ANY_VALUE' => 33, 'BENCHMARK' => 33, 'BIT_COUNT' => 33, 'COLLATION' => 33, + 'CONCAT_WS' => 33, 'DAYOFWEEK' => 33, 'DAYOFYEAR' => 33, 'DIMENSION' => 33, + 'FROM_DAYS' => 33, 'GEOMETRYN' => 33, 'INET_ATON' => 33, 'INET_NTOA' => 33, + 'JSON_KEYS' => 33, 'JSON_TYPE' => 33, 'LOAD_FILE' => 33, 'MBRCOVERS' => 33, + 'MBREQUALS' => 33, 'MBRWITHIN' => 33, 'MONTHNAME' => 33, 'NUMPOINTS' => 33, + 'ROW_COUNT' => 33, 'ST_ASTEXT' => 33, 'ST_BUFFER' => 33, 'ST_EQUALS' => 33, + 'ST_LENGTH' => 33, 'ST_POINTN' => 33, 'ST_WITHIN' => 33, 'SUBSTRING' => 33, + 'TO_BASE64' => 33, 'UPDATEXML' => 33, + 'BIT_LENGTH' => 33, 'CONVERT_TZ' => 33, 'CONVEXHULL' => 33, 'DAYOFMONTH' => 33, + 'EXPORT_SET' => 33, 'FOUND_ROWS' => 33, 'GET_FORMAT' => 33, 'INET6_ATON' => 33, + 'INET6_NTOA' => 33, 'INTERSECTS' => 33, 'JSON_ARRAY' => 33, 'JSON_DEPTH' => 33, + 'JSON_MERGE' => 33, 'JSON_QUOTE' => 33, 'JSON_VALID' => 33, 'MBRTOUCHES' => 33, + 'MULTIPOINT' => 33, 'NAME_CONST' => 33, 'PERIOD_ADD' => 33, 'STARTPOINT' => 33, + 'STDDEV_POP' => 33, 'ST_CROSSES' => 33, 'ST_GEOHASH' => 33, 'ST_ISEMPTY' => 33, + 'ST_ISVALID' => 33, 'ST_TOUCHES' => 33, 'TO_SECONDS' => 33, 'UNCOMPRESS' => 33, + 'UUID_SHORT' => 33, 'WEEKOFYEAR' => 33, + 'AES_DECRYPT' => 33, 'AES_ENCRYPT' => 33, 'CHAR_LENGTH' => 33, 'DATE_FORMAT' => 33, + 'DES_DECRYPT' => 33, 'DES_ENCRYPT' => 33, 'FIND_IN_SET' => 33, 'FROM_BASE64' => 33, + 'GEOMFROMWKB' => 33, 'GTID_SUBSET' => 33, 'JSON_INSERT' => 33, 'JSON_LENGTH' => 33, + 'JSON_OBJECT' => 33, 'JSON_PRETTY' => 33, 'JSON_REMOVE' => 33, 'JSON_SEARCH' => 33, + 'LINEFROMWKB' => 33, 'MBRCONTAINS' => 33, 'MBRDISJOINT' => 33, 'MBROVERLAPS' => 33, + 'MICROSECOND' => 33, 'PERIOD_DIFF' => 33, 'POLYFROMWKB' => 33, 'SEC_TO_TIME' => 33, + 'STDDEV_SAMP' => 33, 'STR_TO_DATE' => 33, 'ST_ASBINARY' => 33, 'ST_CENTROID' => 33, + 'ST_CONTAINS' => 33, 'ST_DISJOINT' => 33, 'ST_DISTANCE' => 33, 'ST_ENDPOINT' => 33, + 'ST_ENVELOPE' => 33, 'ST_ISCLOSED' => 33, 'ST_ISSIMPLE' => 33, 'ST_OVERLAPS' => 33, + 'ST_SIMPLIFY' => 33, 'ST_VALIDATE' => 33, 'SYSTEM_USER' => 33, 'TIME_FORMAT' => 33, + 'TIME_TO_SEC' => 33, + 'COERCIBILITY' => 33, 'EXTERIORRING' => 33, 'EXTRACTVALUE' => 33, 'GEOMETRYTYPE' => 33, + 'GEOMFROMTEXT' => 33, 'GROUP_CONCAT' => 33, 'IS_FREE_LOCK' => 33, 'IS_USED_LOCK' => 33, + 'JSON_EXTRACT' => 33, 'JSON_REPLACE' => 33, 'JSON_UNQUOTE' => 33, 'LINEFROMTEXT' => 33, + 'MBRCOVEREDBY' => 33, 'MLINEFROMWKB' => 33, 'MPOLYFROMWKB' => 33, 'MULTIPOLYGON' => 33, + 'OCTET_LENGTH' => 33, 'OLD_PASSWORD' => 33, 'POINTFROMWKB' => 33, 'POLYFROMTEXT' => 33, + 'RANDOM_BYTES' => 33, 'RELEASE_LOCK' => 33, 'SESSION_USER' => 33, 'ST_ASGEOJSON' => 33, + 'ST_DIMENSION' => 33, 'ST_GEOMETRYN' => 33, 'ST_NUMPOINTS' => 33, 'TIMESTAMPADD' => 33, + 'CONNECTION_ID' => 33, 'FROM_UNIXTIME' => 33, 'GTID_SUBTRACT' => 33, 'INTERIORRINGN' => 33, + 'JSON_CONTAINS' => 33, 'MBRINTERSECTS' => 33, 'MLINEFROMTEXT' => 33, 'MPOINTFROMWKB' => 33, + 'MPOLYFROMTEXT' => 33, 'NUMGEOMETRIES' => 33, 'POINTFROMTEXT' => 33, 'ST_CONVEXHULL' => 33, + 'ST_DIFFERENCE' => 33, 'ST_INTERSECTS' => 33, 'ST_STARTPOINT' => 33, 'TIMESTAMPDIFF' => 33, + 'WEIGHT_STRING' => 33, + 'IS_IPV4_COMPAT' => 33, 'IS_IPV4_MAPPED' => 33, 'LAST_INSERT_ID' => 33, 'MPOINTFROMTEXT' => 33, + 'POLYGONFROMWKB' => 33, 'ST_GEOMFROMWKB' => 33, 'ST_LINEFROMWKB' => 33, 'ST_POLYFROMWKB' => 33, + 'UNIX_TIMESTAMP' => 33, + 'GEOMCOLLFROMWKB' => 33, 'MASTER_POS_WAIT' => 33, 'POLYGONFROMTEXT' => 33, 'ST_EXTERIORRING' => 33, + 'ST_GEOMETRYTYPE' => 33, 'ST_GEOMFROMTEXT' => 33, 'ST_INTERSECTION' => 33, 'ST_LINEFROMTEXT' => 33, + 'ST_MAKEENVELOPE' => 33, 'ST_MLINEFROMWKB' => 33, 'ST_MPOLYFROMWKB' => 33, 'ST_POINTFROMWKB' => 33, + 'ST_POLYFROMTEXT' => 33, 'SUBSTRING_INDEX' => 33, + 'CHARACTER_LENGTH' => 33, 'GEOMCOLLFROMTEXT' => 33, 'GEOMETRYFROMTEXT' => 33, + 'JSON_MERGE_PATCH' => 33, 'NUMINTERIORRINGS' => 33, 'ST_INTERIORRINGN' => 33, + 'ST_MLINEFROMTEXT' => 33, 'ST_MPOINTFROMWKB' => 33, 'ST_MPOLYFROMTEXT' => 33, + 'ST_NUMGEOMETRIES' => 33, 'ST_POINTFROMTEXT' => 33, 'ST_SYMDIFFERENCE' => 33, + 'JSON_ARRAY_APPEND' => 33, 'JSON_ARRAY_INSERT' => 33, 'JSON_STORAGE_FREE' => 33, + 'JSON_STORAGE_SIZE' => 33, 'LINESTRINGFROMWKB' => 33, 'MULTIPOINTFROMWKB' => 33, + 'RELEASE_ALL_LOCKS' => 33, 'ST_LATFROMGEOHASH' => 33, 'ST_MPOINTFROMTEXT' => 33, + 'ST_POLYGONFROMWKB' => 33, + 'JSON_CONTAINS_PATH' => 33, 'MULTIPOINTFROMTEXT' => 33, 'ST_BUFFER_STRATEGY' => 33, + 'ST_DISTANCE_SPHERE' => 33, 'ST_GEOMCOLLFROMTXT' => 33, 'ST_GEOMCOLLFROMWKB' => 33, + 'ST_GEOMFROMGEOJSON' => 33, 'ST_LONGFROMGEOHASH' => 33, 'ST_POLYGONFROMTEXT' => 33, + 'JSON_MERGE_PRESERVE' => 33, 'MULTIPOLYGONFROMWKB' => 33, 'ST_GEOMCOLLFROMTEXT' => 33, + 'ST_GEOMETRYFROMTEXT' => 33, 'ST_NUMINTERIORRINGS' => 33, 'ST_POINTFROMGEOHASH' => 33, + 'UNCOMPRESSED_LENGTH' => 33, + 'MULTIPOLYGONFROMTEXT' => 33, 'ST_LINESTRINGFROMWKB' => 33, 'ST_MULTIPOINTFROMWKB' => 33, + 'ST_MULTIPOINTFROMTEXT' => 33, + 'MULTILINESTRINGFROMWKB' => 33, 'ST_MULTIPOLYGONFROMWKB' => 33, + 'MULTILINESTRINGFROMTEXT' => 33, 'ST_MULTIPOLYGONFROMTEXT' => 33, + 'GEOMETRYCOLLECTIONFROMWKB' => 33, 'ST_MULTILINESTRINGFROMWKB' => 33, + 'GEOMETRYCOLLECTIONFROMTEXT' => 33, 'ST_MULTILINESTRINGFROMTEXT' => 33, 'VALIDATE_PASSWORD_STRENGTH' => 33, + 'WAIT_FOR_EXECUTED_GTID_SET' => 33, + 'ST_GEOMETRYCOLLECTIONFROMWKB' => 33, + 'ST_GEOMETRYCOLLECTIONFROMTEXT' => 33, + 'WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS' => 33, + + 'IF' => 35, 'IN' => 35, + 'MOD' => 35, + 'LEFT' => 35, + 'MATCH' => 35, 'RIGHT' => 35, + 'EXISTS' => 35, 'INSERT' => 35, 'REPEAT' => 35, 'SCHEMA' => 35, 'VALUES' => 35, + 'CONVERT' => 35, 'DEFAULT' => 35, 'REPLACE' => 35, + 'DATABASE' => 35, 'UTC_DATE' => 35, 'UTC_TIME' => 35, + 'LOCALTIME' => 35, + 'CURRENT_DATE' => 35, 'CURRENT_TIME' => 35, 'CURRENT_USER' => 35, + 'UTC_TIMESTAMP' => 35, + 'LOCALTIMESTAMP' => 35, + 'CURRENT_TIMESTAMP' => 35, + + 'NOT IN' => 39, + + 'DATE' => 41, 'TIME' => 41, 'YEAR' => 41, + 'POINT' => 41, + 'POLYGON' => 41, + 'TIMESTAMP' => 41, + 'LINESTRING' => 41, + 'MULTILINESTRING' => 41, + 'GEOMETRYCOLLECTION' => 41, + + 'CHAR' => 43, + 'BINARY' => 43, + 'INTERVAL' => 43, + ]; +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Contexts/ContextMariaDb100200.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Contexts/ContextMariaDb100200.php new file mode 100644 index 0000000000..f2f68df54a --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Contexts/ContextMariaDb100200.php @@ -0,0 +1,347 @@ + + * @phpstan-var non-empty-array + */ + public static $KEYWORDS = [ + 'AT' => 1, 'DO' => 1, 'IO' => 1, 'NO' => 1, 'XA' => 1, + 'ANY' => 1, 'CPU' => 1, 'END' => 1, 'IPC' => 1, 'NDB' => 1, 'NEW' => 1, + 'ONE' => 1, 'ROW' => 1, 'XID' => 1, + 'BOOL' => 1, 'BYTE' => 1, 'CODE' => 1, 'CUBE' => 1, 'DATA' => 1, 'DISK' => 1, + 'ENDS' => 1, 'FAST' => 1, 'FILE' => 1, 'FULL' => 1, 'HASH' => 1, 'HELP' => 1, + 'HOST' => 1, 'LAST' => 1, 'LESS' => 1, 'LIST' => 1, 'LOGS' => 1, 'MODE' => 1, + 'NAME' => 1, 'NEXT' => 1, 'NONE' => 1, 'ONLY' => 1, 'OPEN' => 1, 'PAGE' => 1, + 'PORT' => 1, 'PREV' => 1, 'SLOW' => 1, 'SOME' => 1, 'STOP' => 1, 'THAN' => 1, + 'TYPE' => 1, 'VIEW' => 1, 'WAIT' => 1, 'WORK' => 1, 'X509' => 1, + 'AFTER' => 1, 'BEGIN' => 1, 'BLOCK' => 1, 'BTREE' => 1, 'CACHE' => 1, + 'CHAIN' => 1, 'CLOSE' => 1, 'ERROR' => 1, 'EVENT' => 1, 'EVERY' => 1, + 'FIRST' => 1, 'FIXED' => 1, 'FLUSH' => 1, 'FOUND' => 1, 'HOSTS' => 1, + 'LEVEL' => 1, 'LOCAL' => 1, 'LOCKS' => 1, 'MERGE' => 1, 'MUTEX' => 1, + 'NAMES' => 1, 'NCHAR' => 1, 'NEVER' => 1, 'OWNER' => 1, 'PHASE' => 1, + 'PROXY' => 1, 'QUERY' => 1, 'QUICK' => 1, 'RELAY' => 1, 'RESET' => 1, + 'RTREE' => 1, 'SHARE' => 1, 'SLAVE' => 1, 'START' => 1, 'SUPER' => 1, + 'SWAPS' => 1, 'TYPES' => 1, 'UNTIL' => 1, 'VALUE' => 1, + 'ACTION' => 1, 'ALWAYS' => 1, 'BACKUP' => 1, 'BINLOG' => 1, 'CIPHER' => 1, + 'CLIENT' => 1, 'COMMIT' => 1, 'ENABLE' => 1, 'ENGINE' => 1, 'ERRORS' => 1, + 'ESCAPE' => 1, 'EVENTS' => 1, 'EXPIRE' => 1, 'EXPORT' => 1, 'FAULTS' => 1, + 'FIELDS' => 1, 'FILTER' => 1, 'GLOBAL' => 1, 'GRANTS' => 1, 'IMPORT' => 1, + 'ISSUER' => 1, 'LEAVES' => 1, 'MASTER' => 1, 'MEDIUM' => 1, 'MEMORY' => 1, + 'MODIFY' => 1, 'NUMBER' => 1, 'OFFSET' => 1, 'PARSER' => 1, 'PLUGIN' => 1, + 'RELOAD' => 1, 'REMOVE' => 1, 'REPAIR' => 1, 'RESUME' => 1, 'ROLLUP' => 1, + 'SERVER' => 1, 'SIGNED' => 1, 'SIMPLE' => 1, 'SOCKET' => 1, 'SONAME' => 1, + 'SOUNDS' => 1, 'SOURCE' => 1, 'STARTS' => 1, 'STATUS' => 1, 'STRING' => 1, + 'TABLES' => 1, + 'ACCOUNT' => 1, 'ANALYSE' => 1, 'CHANGED' => 1, 'CHANNEL' => 1, 'COLUMNS' => 1, + 'COMMENT' => 1, 'COMPACT' => 1, 'CONTEXT' => 1, 'CURRENT' => 1, 'DEFINER' => 1, + 'DISABLE' => 1, 'DISCARD' => 1, 'DYNAMIC' => 1, 'ENGINES' => 1, 'EXECUTE' => 1, + 'FOLLOWS' => 1, 'GENERAL' => 1, 'HANDLER' => 1, 'INDEXES' => 1, 'INSTALL' => 1, + 'INVOKER' => 1, 'LOGFILE' => 1, 'MIGRATE' => 1, 'NO_WAIT' => 1, 'OPTIONS' => 1, + 'PARTIAL' => 1, 'PLUGINS' => 1, 'PREPARE' => 1, 'PROFILE' => 1, 'REBUILD' => 1, + 'RECOVER' => 1, 'RESTORE' => 1, 'RETURNS' => 1, 'ROUTINE' => 1, 'SESSION' => 1, + 'STACKED' => 1, 'STORAGE' => 1, 'SUBJECT' => 1, 'SUSPEND' => 1, 'UNICODE' => 1, + 'UNKNOWN' => 1, 'UPGRADE' => 1, 'USE_FRM' => 1, 'WITHOUT' => 1, 'WRAPPER' => 1, + 'CASCADED' => 1, 'CHECKSUM' => 1, 'DATAFILE' => 1, 'DUMPFILE' => 1, 'EXCHANGE' => 1, + 'EXTENDED' => 1, 'FUNCTION' => 1, 'LANGUAGE' => 1, 'MAX_ROWS' => 1, 'MAX_SIZE' => 1, + 'MIN_ROWS' => 1, 'NATIONAL' => 1, 'NVARCHAR' => 1, 'PRECEDES' => 1, 'PRESERVE' => 1, + 'PROFILES' => 1, 'REDOFILE' => 1, 'RELAYLOG' => 1, 'ROLLBACK' => 1, 'SCHEDULE' => 1, + 'SECURITY' => 1, 'SHUTDOWN' => 1, 'SNAPSHOT' => 1, 'SWITCHES' => 1, 'TRIGGERS' => 1, + 'UNDOFILE' => 1, 'WARNINGS' => 1, + 'AGGREGATE' => 1, 'ALGORITHM' => 1, 'COMMITTED' => 1, 'DIRECTORY' => 1, + 'DUPLICATE' => 1, 'EXPANSION' => 1, 'IO_THREAD' => 1, 'ISOLATION' => 1, + 'NODEGROUP' => 1, 'PACK_KEYS' => 1, 'READ_ONLY' => 1, 'REDUNDANT' => 1, + 'SAVEPOINT' => 1, 'SQL_CACHE' => 1, 'TEMPORARY' => 1, 'TEMPTABLE' => 1, + 'UNDEFINED' => 1, 'UNINSTALL' => 1, 'VARIABLES' => 1, + 'COMPLETION' => 1, 'COMPRESSED' => 1, 'CONCURRENT' => 1, 'CONNECTION' => 1, + 'CONSISTENT' => 1, 'DEALLOCATE' => 1, 'IDENTIFIED' => 1, 'MASTER_SSL' => 1, + 'NDBCLUSTER' => 1, 'PARTITIONS' => 1, 'PERSISTENT' => 1, 'PLUGIN_DIR' => 1, + 'PRIVILEGES' => 1, 'REORGANIZE' => 1, 'REPEATABLE' => 1, 'ROW_FORMAT' => 1, + 'SQL_THREAD' => 1, 'TABLESPACE' => 1, 'TABLE_NAME' => 1, 'VALIDATION' => 1, + 'COLUMN_NAME' => 1, 'COMPRESSION' => 1, 'CURSOR_NAME' => 1, 'DIAGNOSTICS' => 1, + 'EXTENT_SIZE' => 1, 'MASTER_HOST' => 1, 'MASTER_PORT' => 1, 'MASTER_USER' => 1, + 'MYSQL_ERRNO' => 1, 'NONBLOCKING' => 1, 'PROCESSLIST' => 1, 'REPLICATION' => 1, + 'SCHEMA_NAME' => 1, 'SQL_TSI_DAY' => 1, 'TRANSACTION' => 1, 'UNCOMMITTED' => 1, + 'CATALOG_NAME' => 1, 'CLASS_ORIGIN' => 1, 'DEFAULT_AUTH' => 1, 'DES_KEY_FILE' => 1, + 'INITIAL_SIZE' => 1, 'MASTER_DELAY' => 1, 'MESSAGE_TEXT' => 1, 'PARTITIONING' => 1, + 'RELAY_THREAD' => 1, 'SERIALIZABLE' => 1, 'SQL_NO_CACHE' => 1, 'SQL_TSI_HOUR' => 1, + 'SQL_TSI_WEEK' => 1, 'SQL_TSI_YEAR' => 1, 'SUBPARTITION' => 1, + 'COLUMN_FORMAT' => 1, 'INSERT_METHOD' => 1, 'MASTER_SSL_CA' => 1, 'RELAY_LOG_POS' => 1, + 'SQL_TSI_MONTH' => 1, 'SUBPARTITIONS' => 1, + 'AUTO_INCREMENT' => 1, 'AVG_ROW_LENGTH' => 1, 'KEY_BLOCK_SIZE' => 1, 'MASTER_LOG_POS' => 1, + 'MASTER_SSL_CRL' => 1, 'MASTER_SSL_KEY' => 1, 'RELAY_LOG_FILE' => 1, 'SQL_TSI_MINUTE' => 1, + 'SQL_TSI_SECOND' => 1, 'TABLE_CHECKSUM' => 1, 'USER_RESOURCES' => 1, + 'AUTOEXTEND_SIZE' => 1, 'CONSTRAINT_NAME' => 1, 'DELAY_KEY_WRITE' => 1, 'FILE_BLOCK_SIZE' => 1, + 'MASTER_LOG_FILE' => 1, 'MASTER_PASSWORD' => 1, 'MASTER_SSL_CERT' => 1, 'PARSE_GCOL_EXPR' => 1, + 'REPLICATE_DO_DB' => 1, 'SQL_AFTER_GTIDS' => 1, 'SQL_TSI_QUARTER' => 1, 'SUBCLASS_ORIGIN' => 1, + 'MASTER_SERVER_ID' => 1, 'REDO_BUFFER_SIZE' => 1, 'SQL_BEFORE_GTIDS' => 1, + 'STATS_PERSISTENT' => 1, 'UNDO_BUFFER_SIZE' => 1, + 'CONSTRAINT_SCHEMA' => 1, 'GROUP_REPLICATION' => 1, 'IGNORE_SERVER_IDS' => 1, + 'MASTER_SSL_CAPATH' => 1, 'MASTER_SSL_CIPHER' => 1, 'RETURNED_SQLSTATE' => 1, + 'SQL_BUFFER_RESULT' => 1, 'STATS_AUTO_RECALC' => 1, + 'CONSTRAINT_CATALOG' => 1, 'MASTER_RETRY_COUNT' => 1, 'MASTER_SSL_CRLPATH' => 1, + 'MAX_STATEMENT_TIME' => 1, 'REPLICATE_DO_TABLE' => 1, 'SQL_AFTER_MTS_GAPS' => 1, + 'STATS_SAMPLE_PAGES' => 1, + 'REPLICATE_IGNORE_DB' => 1, + 'MASTER_AUTO_POSITION' => 1, 'MASTER_CONNECT_RETRY' => 1, 'MAX_QUERIES_PER_HOUR' => 1, + 'MAX_UPDATES_PER_HOUR' => 1, 'MAX_USER_CONNECTIONS' => 1, 'REPLICATE_REWRITE_DB' => 1, + 'REPLICATE_IGNORE_TABLE' => 1, + 'MASTER_HEARTBEAT_PERIOD' => 1, 'REPLICATE_WILD_DO_TABLE' => 1, + 'MAX_CONNECTIONS_PER_HOUR' => 1, + 'REPLICATE_WILD_IGNORE_TABLE' => 1, + + 'AS' => 3, 'BY' => 3, 'IS' => 3, 'ON' => 3, 'OR' => 3, 'TO' => 3, + 'ADD' => 3, 'ALL' => 3, 'AND' => 3, 'ASC' => 3, 'DEC' => 3, 'DIV' => 3, + 'FOR' => 3, 'GET' => 3, 'NOT' => 3, 'OUT' => 3, 'SQL' => 3, 'SSL' => 3, + 'USE' => 3, 'XOR' => 3, + 'BOTH' => 3, 'CALL' => 3, 'CASE' => 3, 'DESC' => 3, 'DROP' => 3, 'DUAL' => 3, + 'EACH' => 3, 'ELSE' => 3, 'EXIT' => 3, 'FROM' => 3, 'INT1' => 3, 'INT2' => 3, + 'INT3' => 3, 'INT4' => 3, 'INT8' => 3, 'INTO' => 3, 'JOIN' => 3, 'KEYS' => 3, + 'KILL' => 3, 'LIKE' => 3, 'LOAD' => 3, 'LOCK' => 3, 'LONG' => 3, 'LOOP' => 3, + 'NULL' => 3, 'OVER' => 3, 'READ' => 3, 'ROWS' => 3, 'SHOW' => 3, 'THEN' => 3, + 'TRUE' => 3, 'UNDO' => 3, 'WHEN' => 3, 'WITH' => 3, + 'ALTER' => 3, 'CHECK' => 3, 'CROSS' => 3, 'FALSE' => 3, 'FETCH' => 3, + 'FORCE' => 3, 'GRANT' => 3, 'GROUP' => 3, 'INNER' => 3, 'INOUT' => 3, + 'LEAVE' => 3, 'LIMIT' => 3, 'LINES' => 3, 'ORDER' => 3, 'OUTER' => 3, + 'PURGE' => 3, 'RANGE' => 3, 'READS' => 3, 'RLIKE' => 3, 'TABLE' => 3, + 'UNION' => 3, 'USAGE' => 3, 'USING' => 3, 'WHERE' => 3, 'WHILE' => 3, + 'WRITE' => 3, + 'BEFORE' => 3, 'CHANGE' => 3, 'COLUMN' => 3, 'CREATE' => 3, 'CURSOR' => 3, + 'DELETE' => 3, 'ELSEIF' => 3, 'FLOAT4' => 3, 'FLOAT8' => 3, 'HAVING' => 3, + 'IGNORE' => 3, 'INFILE' => 3, 'LINEAR' => 3, 'OPTION' => 3, 'REGEXP' => 3, + 'RENAME' => 3, 'RETURN' => 3, 'REVOKE' => 3, 'SELECT' => 3, 'SIGNAL' => 3, + 'STORED' => 3, 'UNLOCK' => 3, 'UPDATE' => 3, + 'ANALYZE' => 3, 'BETWEEN' => 3, 'CASCADE' => 3, 'COLLATE' => 3, 'DECLARE' => 3, + 'DELAYED' => 3, 'ESCAPED' => 3, 'EXPLAIN' => 3, 'FOREIGN' => 3, 'ITERATE' => 3, + 'LEADING' => 3, 'NATURAL' => 3, 'OUTFILE' => 3, 'PRIMARY' => 3, 'RELEASE' => 3, + 'REQUIRE' => 3, 'SCHEMAS' => 3, 'TRIGGER' => 3, 'VARYING' => 3, 'VIRTUAL' => 3, + 'CONTINUE' => 3, 'DAY_HOUR' => 3, 'DESCRIBE' => 3, 'DISTINCT' => 3, 'ENCLOSED' => 3, + 'MAXVALUE' => 3, 'MODIFIES' => 3, 'OPTIMIZE' => 3, 'RESIGNAL' => 3, 'RESTRICT' => 3, + 'SPECIFIC' => 3, 'SQLSTATE' => 3, 'STARTING' => 3, 'TRAILING' => 3, 'UNSIGNED' => 3, + 'ZEROFILL' => 3, + 'CONDITION' => 3, 'DATABASES' => 3, 'GENERATED' => 3, 'MIDDLEINT' => 3, + 'PARTITION' => 3, 'PRECISION' => 3, 'PROCEDURE' => 3, 'RECURSIVE' => 3, + 'SENSITIVE' => 3, 'SEPARATOR' => 3, + 'ACCESSIBLE' => 3, 'ASENSITIVE' => 3, 'CONSTRAINT' => 3, 'DAY_MINUTE' => 3, + 'DAY_SECOND' => 3, 'OPTIONALLY' => 3, 'READ_WRITE' => 3, 'REFERENCES' => 3, + 'SQLWARNING' => 3, 'TERMINATED' => 3, 'YEAR_MONTH' => 3, + 'DISTINCTROW' => 3, 'HOUR_MINUTE' => 3, 'HOUR_SECOND' => 3, 'INSENSITIVE' => 3, + 'MASTER_BIND' => 3, + 'LOW_PRIORITY' => 3, 'SQLEXCEPTION' => 3, 'VARCHARACTER' => 3, + 'DETERMINISTIC' => 3, 'HIGH_PRIORITY' => 3, 'MINUTE_SECOND' => 3, 'STRAIGHT_JOIN' => 3, + 'IO_AFTER_GTIDS' => 3, 'SQL_BIG_RESULT' => 3, + 'DAY_MICROSECOND' => 3, 'IO_BEFORE_GTIDS' => 3, 'OPTIMIZER_COSTS' => 3, + 'HOUR_MICROSECOND' => 3, 'SQL_SMALL_RESULT' => 3, + 'MINUTE_MICROSECOND' => 3, 'NO_WRITE_TO_BINLOG' => 3, 'SECOND_MICROSECOND' => 3, + 'SQL_CALC_FOUND_ROWS' => 3, + 'MASTER_SSL_VERIFY_SERVER_CERT' => 3, + + 'GROUP BY' => 7, 'NOT NULL' => 7, 'ORDER BY' => 7, 'SET NULL' => 7, + 'AND CHAIN' => 7, 'FULL JOIN' => 7, 'IF EXISTS' => 7, 'LEFT JOIN' => 7, + 'LESS THAN' => 7, 'LOAD DATA' => 7, 'NO ACTION' => 7, 'ON DELETE' => 7, + 'ON UPDATE' => 7, 'UNION ALL' => 7, + 'CROSS JOIN' => 7, 'ESCAPED BY' => 7, 'FOR UPDATE' => 7, 'INNER JOIN' => 7, + 'LINEAR KEY' => 7, 'NO RELEASE' => 7, 'OR REPLACE' => 7, 'RIGHT JOIN' => 7, + 'ENCLOSED BY' => 7, 'LINEAR HASH' => 7, 'STARTING BY' => 7, + 'AND NO CHAIN' => 7, 'FOR EACH ROW' => 7, 'NATURAL JOIN' => 7, 'PARTITION BY' => 7, + 'SET PASSWORD' => 7, 'SQL SECURITY' => 7, + 'CHARACTER SET' => 7, 'IF NOT EXISTS' => 7, 'TERMINATED BY' => 7, + 'DATA DIRECTORY' => 7, 'UNION DISTINCT' => 7, + 'DEFAULT CHARSET' => 7, 'DEFAULT COLLATE' => 7, 'FULL OUTER JOIN' => 7, 'INDEX DIRECTORY' => 7, + 'LEFT OUTER JOIN' => 7, 'SUBPARTITION BY' => 7, + 'GENERATED ALWAYS' => 7, 'RIGHT OUTER JOIN' => 7, + 'NATURAL LEFT JOIN' => 7, 'START TRANSACTION' => 7, + 'LOCK IN SHARE MODE' => 7, 'NATURAL RIGHT JOIN' => 7, 'SELECT TRANSACTION' => 7, + 'DEFAULT CHARACTER SET' => 7, + 'NATURAL LEFT OUTER JOIN' => 7, + 'NATURAL RIGHT OUTER JOIN' => 7, 'WITH CONSISTENT SNAPSHOT' => 7, + + 'BIT' => 9, 'XML' => 9, + 'ENUM' => 9, 'JSON' => 9, 'TEXT' => 9, + 'ARRAY' => 9, + 'SERIAL' => 9, + 'BOOLEAN' => 9, + 'DATETIME' => 9, 'GEOMETRY' => 9, 'MULTISET' => 9, + 'MULTILINEPOINT' => 9, + 'MULTILINEPOLYGON' => 9, + + 'INT' => 11, 'SET' => 11, + 'BLOB' => 11, 'REAL' => 11, + 'FLOAT' => 11, + 'BIGINT' => 11, 'DOUBLE' => 11, + 'DECIMAL' => 11, 'INTEGER' => 11, 'NUMERIC' => 11, 'TINYINT' => 11, 'VARCHAR' => 11, + 'LONGBLOB' => 11, 'LONGTEXT' => 11, 'SMALLINT' => 11, 'TINYBLOB' => 11, 'TINYTEXT' => 11, + 'CHARACTER' => 11, 'MEDIUMINT' => 11, 'VARBINARY' => 11, + 'MEDIUMBLOB' => 11, 'MEDIUMTEXT' => 11, + + 'BINARY VARYING' => 15, + + 'KEY' => 19, + 'INDEX' => 19, + 'UNIQUE' => 19, + 'SPATIAL' => 19, + 'FULLTEXT' => 19, + + 'INDEX KEY' => 23, + 'UNIQUE KEY' => 23, + 'FOREIGN KEY' => 23, 'PRIMARY KEY' => 23, 'SPATIAL KEY' => 23, + 'FULLTEXT KEY' => 23, 'UNIQUE INDEX' => 23, + 'SPATIAL INDEX' => 23, + 'FULLTEXT INDEX' => 23, + + 'X' => 33, 'Y' => 33, + 'LN' => 33, 'PI' => 33, + 'ABS' => 33, 'AVG' => 33, 'BIN' => 33, 'COS' => 33, 'COT' => 33, 'DAY' => 33, + 'ELT' => 33, 'EXP' => 33, 'HEX' => 33, 'LOG' => 33, 'MAX' => 33, 'MD5' => 33, + 'MID' => 33, 'MIN' => 33, 'NOW' => 33, 'OCT' => 33, 'ORD' => 33, 'POW' => 33, + 'SHA' => 33, 'SIN' => 33, 'STD' => 33, 'SUM' => 33, 'TAN' => 33, + 'ACOS' => 33, 'AREA' => 33, 'ASIN' => 33, 'ATAN' => 33, 'CAST' => 33, 'CEIL' => 33, + 'CONV' => 33, 'HOUR' => 33, 'LOG2' => 33, 'LPAD' => 33, 'RAND' => 33, 'RPAD' => 33, + 'SHA1' => 33, 'SHA2' => 33, 'SIGN' => 33, 'SQRT' => 33, 'SRID' => 33, 'ST_X' => 33, + 'ST_Y' => 33, 'TRIM' => 33, 'USER' => 33, 'UUID' => 33, 'WEEK' => 33, + 'ASCII' => 33, 'ASWKB' => 33, 'ASWKT' => 33, 'ATAN2' => 33, 'COUNT' => 33, + 'CRC32' => 33, 'FIELD' => 33, 'FLOOR' => 33, 'INSTR' => 33, 'LCASE' => 33, + 'LEAST' => 33, 'LOG10' => 33, 'LOWER' => 33, 'LTRIM' => 33, 'MONTH' => 33, + 'POWER' => 33, 'QUOTE' => 33, 'ROUND' => 33, 'RTRIM' => 33, 'SLEEP' => 33, + 'SPACE' => 33, 'UCASE' => 33, 'UNHEX' => 33, 'UPPER' => 33, + 'ASTEXT' => 33, 'BIT_OR' => 33, 'BUFFER' => 33, 'CONCAT' => 33, 'DECODE' => 33, + 'ENCODE' => 33, 'EQUALS' => 33, 'FORMAT' => 33, 'IFNULL' => 33, 'ISNULL' => 33, + 'LENGTH' => 33, 'LOCATE' => 33, 'MINUTE' => 33, 'NULLIF' => 33, 'POINTN' => 33, + 'SECOND' => 33, 'STDDEV' => 33, 'STRCMP' => 33, 'SUBSTR' => 33, 'WITHIN' => 33, + 'ADDDATE' => 33, 'ADDTIME' => 33, 'AGAINST' => 33, 'BIT_AND' => 33, 'BIT_XOR' => 33, + 'CEILING' => 33, 'CHARSET' => 33, 'CROSSES' => 33, 'CURDATE' => 33, 'CURTIME' => 33, + 'DAYNAME' => 33, 'DEGREES' => 33, 'ENCRYPT' => 33, 'EXTRACT' => 33, 'GLENGTH' => 33, + 'ISEMPTY' => 33, 'IS_IPV4' => 33, 'IS_IPV6' => 33, 'QUARTER' => 33, 'RADIANS' => 33, + 'REVERSE' => 33, 'SOUNDEX' => 33, 'ST_AREA' => 33, 'ST_SRID' => 33, 'SUBDATE' => 33, + 'SUBTIME' => 33, 'SYSDATE' => 33, 'TOUCHES' => 33, 'TO_DAYS' => 33, 'VAR_POP' => 33, + 'VERSION' => 33, 'WEEKDAY' => 33, + 'ASBINARY' => 33, 'CENTROID' => 33, 'COALESCE' => 33, 'COMPRESS' => 33, 'CONTAINS' => 33, + 'DATEDIFF' => 33, 'DATE_ADD' => 33, 'DATE_SUB' => 33, 'DISJOINT' => 33, 'DISTANCE' => 33, + 'ENDPOINT' => 33, 'ENVELOPE' => 33, 'GET_LOCK' => 33, 'GREATEST' => 33, 'ISCLOSED' => 33, + 'ISSIMPLE' => 33, 'JSON_SET' => 33, 'MAKEDATE' => 33, 'MAKETIME' => 33, 'MAKE_SET' => 33, + 'MBREQUAL' => 33, 'OVERLAPS' => 33, 'PASSWORD' => 33, 'POSITION' => 33, 'ST_ASWKB' => 33, + 'ST_ASWKT' => 33, 'ST_UNION' => 33, 'TIMEDIFF' => 33, 'TRUNCATE' => 33, 'VARIANCE' => 33, + 'VAR_SAMP' => 33, 'YEARWEEK' => 33, + 'ANY_VALUE' => 33, 'BENCHMARK' => 33, 'BIT_COUNT' => 33, 'COLLATION' => 33, + 'CONCAT_WS' => 33, 'DAYOFWEEK' => 33, 'DAYOFYEAR' => 33, 'DIMENSION' => 33, + 'FROM_DAYS' => 33, 'GEOMETRYN' => 33, 'INET_ATON' => 33, 'INET_NTOA' => 33, + 'JSON_KEYS' => 33, 'JSON_TYPE' => 33, 'LOAD_FILE' => 33, 'MBRCOVERS' => 33, + 'MBREQUALS' => 33, 'MBRWITHIN' => 33, 'MONTHNAME' => 33, 'NUMPOINTS' => 33, + 'ROW_COUNT' => 33, 'ST_ASTEXT' => 33, 'ST_BUFFER' => 33, 'ST_EQUALS' => 33, + 'ST_LENGTH' => 33, 'ST_POINTN' => 33, 'ST_WITHIN' => 33, 'SUBSTRING' => 33, + 'TO_BASE64' => 33, 'UPDATEXML' => 33, + 'BIT_LENGTH' => 33, 'CONVERT_TZ' => 33, 'CONVEXHULL' => 33, 'DAYOFMONTH' => 33, + 'EXPORT_SET' => 33, 'FOUND_ROWS' => 33, 'GET_FORMAT' => 33, 'INET6_ATON' => 33, + 'INET6_NTOA' => 33, 'INTERSECTS' => 33, 'JSON_ARRAY' => 33, 'JSON_DEPTH' => 33, + 'JSON_MERGE' => 33, 'JSON_QUOTE' => 33, 'JSON_VALID' => 33, 'MBRTOUCHES' => 33, + 'MULTIPOINT' => 33, 'NAME_CONST' => 33, 'PERIOD_ADD' => 33, 'STARTPOINT' => 33, + 'STDDEV_POP' => 33, 'ST_CROSSES' => 33, 'ST_GEOHASH' => 33, 'ST_ISEMPTY' => 33, + 'ST_ISVALID' => 33, 'ST_TOUCHES' => 33, 'TO_SECONDS' => 33, 'UNCOMPRESS' => 33, + 'UUID_SHORT' => 33, 'WEEKOFYEAR' => 33, + 'AES_DECRYPT' => 33, 'AES_ENCRYPT' => 33, 'CHAR_LENGTH' => 33, 'DATE_FORMAT' => 33, + 'DES_DECRYPT' => 33, 'DES_ENCRYPT' => 33, 'FIND_IN_SET' => 33, 'FROM_BASE64' => 33, + 'GEOMFROMWKB' => 33, 'GTID_SUBSET' => 33, 'JSON_INSERT' => 33, 'JSON_LENGTH' => 33, + 'JSON_OBJECT' => 33, 'JSON_PRETTY' => 33, 'JSON_REMOVE' => 33, 'JSON_SEARCH' => 33, + 'LINEFROMWKB' => 33, 'MBRCONTAINS' => 33, 'MBRDISJOINT' => 33, 'MBROVERLAPS' => 33, + 'MICROSECOND' => 33, 'PERIOD_DIFF' => 33, 'POLYFROMWKB' => 33, 'SEC_TO_TIME' => 33, + 'STDDEV_SAMP' => 33, 'STR_TO_DATE' => 33, 'ST_ASBINARY' => 33, 'ST_CENTROID' => 33, + 'ST_CONTAINS' => 33, 'ST_DISJOINT' => 33, 'ST_DISTANCE' => 33, 'ST_ENDPOINT' => 33, + 'ST_ENVELOPE' => 33, 'ST_ISCLOSED' => 33, 'ST_ISSIMPLE' => 33, 'ST_OVERLAPS' => 33, + 'ST_SIMPLIFY' => 33, 'ST_VALIDATE' => 33, 'SYSTEM_USER' => 33, 'TIME_FORMAT' => 33, + 'TIME_TO_SEC' => 33, + 'COERCIBILITY' => 33, 'EXTERIORRING' => 33, 'EXTRACTVALUE' => 33, 'GEOMETRYTYPE' => 33, + 'GEOMFROMTEXT' => 33, 'GROUP_CONCAT' => 33, 'IS_FREE_LOCK' => 33, 'IS_USED_LOCK' => 33, + 'JSON_EXTRACT' => 33, 'JSON_REPLACE' => 33, 'JSON_UNQUOTE' => 33, 'LINEFROMTEXT' => 33, + 'MBRCOVEREDBY' => 33, 'MLINEFROMWKB' => 33, 'MPOLYFROMWKB' => 33, 'MULTIPOLYGON' => 33, + 'OCTET_LENGTH' => 33, 'OLD_PASSWORD' => 33, 'POINTFROMWKB' => 33, 'POLYFROMTEXT' => 33, + 'RANDOM_BYTES' => 33, 'RELEASE_LOCK' => 33, 'SESSION_USER' => 33, 'ST_ASGEOJSON' => 33, + 'ST_DIMENSION' => 33, 'ST_GEOMETRYN' => 33, 'ST_NUMPOINTS' => 33, 'TIMESTAMPADD' => 33, + 'CONNECTION_ID' => 33, 'FROM_UNIXTIME' => 33, 'GTID_SUBTRACT' => 33, 'INTERIORRINGN' => 33, + 'JSON_CONTAINS' => 33, 'MBRINTERSECTS' => 33, 'MLINEFROMTEXT' => 33, 'MPOINTFROMWKB' => 33, + 'MPOLYFROMTEXT' => 33, 'NUMGEOMETRIES' => 33, 'POINTFROMTEXT' => 33, 'ST_CONVEXHULL' => 33, + 'ST_DIFFERENCE' => 33, 'ST_INTERSECTS' => 33, 'ST_STARTPOINT' => 33, 'TIMESTAMPDIFF' => 33, + 'WEIGHT_STRING' => 33, + 'IS_IPV4_COMPAT' => 33, 'IS_IPV4_MAPPED' => 33, 'LAST_INSERT_ID' => 33, 'MPOINTFROMTEXT' => 33, + 'POLYGONFROMWKB' => 33, 'ST_GEOMFROMWKB' => 33, 'ST_LINEFROMWKB' => 33, 'ST_POLYFROMWKB' => 33, + 'UNIX_TIMESTAMP' => 33, + 'GEOMCOLLFROMWKB' => 33, 'MASTER_POS_WAIT' => 33, 'POLYGONFROMTEXT' => 33, 'ST_EXTERIORRING' => 33, + 'ST_GEOMETRYTYPE' => 33, 'ST_GEOMFROMTEXT' => 33, 'ST_INTERSECTION' => 33, 'ST_LINEFROMTEXT' => 33, + 'ST_MAKEENVELOPE' => 33, 'ST_MLINEFROMWKB' => 33, 'ST_MPOLYFROMWKB' => 33, 'ST_POINTFROMWKB' => 33, + 'ST_POLYFROMTEXT' => 33, 'SUBSTRING_INDEX' => 33, + 'CHARACTER_LENGTH' => 33, 'GEOMCOLLFROMTEXT' => 33, 'GEOMETRYFROMTEXT' => 33, + 'JSON_MERGE_PATCH' => 33, 'NUMINTERIORRINGS' => 33, 'ST_INTERIORRINGN' => 33, + 'ST_MLINEFROMTEXT' => 33, 'ST_MPOINTFROMWKB' => 33, 'ST_MPOLYFROMTEXT' => 33, + 'ST_NUMGEOMETRIES' => 33, 'ST_POINTFROMTEXT' => 33, 'ST_SYMDIFFERENCE' => 33, + 'JSON_ARRAY_APPEND' => 33, 'JSON_ARRAY_INSERT' => 33, 'JSON_STORAGE_FREE' => 33, + 'JSON_STORAGE_SIZE' => 33, 'LINESTRINGFROMWKB' => 33, 'MULTIPOINTFROMWKB' => 33, + 'RELEASE_ALL_LOCKS' => 33, 'ST_LATFROMGEOHASH' => 33, 'ST_MPOINTFROMTEXT' => 33, + 'ST_POLYGONFROMWKB' => 33, + 'JSON_CONTAINS_PATH' => 33, 'MULTIPOINTFROMTEXT' => 33, 'ST_BUFFER_STRATEGY' => 33, + 'ST_DISTANCE_SPHERE' => 33, 'ST_GEOMCOLLFROMTXT' => 33, 'ST_GEOMCOLLFROMWKB' => 33, + 'ST_GEOMFROMGEOJSON' => 33, 'ST_LONGFROMGEOHASH' => 33, 'ST_POLYGONFROMTEXT' => 33, + 'JSON_MERGE_PRESERVE' => 33, 'MULTIPOLYGONFROMWKB' => 33, 'ST_GEOMCOLLFROMTEXT' => 33, + 'ST_GEOMETRYFROMTEXT' => 33, 'ST_NUMINTERIORRINGS' => 33, 'ST_POINTFROMGEOHASH' => 33, + 'UNCOMPRESSED_LENGTH' => 33, + 'MULTIPOLYGONFROMTEXT' => 33, 'ST_LINESTRINGFROMWKB' => 33, 'ST_MULTIPOINTFROMWKB' => 33, + 'ST_MULTIPOINTFROMTEXT' => 33, + 'MULTILINESTRINGFROMWKB' => 33, 'ST_MULTIPOLYGONFROMWKB' => 33, + 'MULTILINESTRINGFROMTEXT' => 33, 'ST_MULTIPOLYGONFROMTEXT' => 33, + 'GEOMETRYCOLLECTIONFROMWKB' => 33, 'ST_MULTILINESTRINGFROMWKB' => 33, + 'GEOMETRYCOLLECTIONFROMTEXT' => 33, 'ST_MULTILINESTRINGFROMTEXT' => 33, 'VALIDATE_PASSWORD_STRENGTH' => 33, + 'WAIT_FOR_EXECUTED_GTID_SET' => 33, + 'ST_GEOMETRYCOLLECTIONFROMWKB' => 33, + 'ST_GEOMETRYCOLLECTIONFROMTEXT' => 33, + 'WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS' => 33, + + 'IF' => 35, 'IN' => 35, + 'MOD' => 35, + 'LEFT' => 35, + 'MATCH' => 35, 'RIGHT' => 35, + 'EXISTS' => 35, 'INSERT' => 35, 'REPEAT' => 35, 'SCHEMA' => 35, 'VALUES' => 35, + 'CONVERT' => 35, 'DEFAULT' => 35, 'REPLACE' => 35, + 'DATABASE' => 35, 'UTC_DATE' => 35, 'UTC_TIME' => 35, + 'LOCALTIME' => 35, + 'CURRENT_DATE' => 35, 'CURRENT_TIME' => 35, 'CURRENT_USER' => 35, + 'UTC_TIMESTAMP' => 35, + 'LOCALTIMESTAMP' => 35, + 'CURRENT_TIMESTAMP' => 35, + + 'NOT IN' => 39, + + 'DATE' => 41, 'TIME' => 41, 'YEAR' => 41, + 'POINT' => 41, + 'POLYGON' => 41, + 'TIMESTAMP' => 41, + 'LINESTRING' => 41, + 'MULTILINESTRING' => 41, + 'GEOMETRYCOLLECTION' => 41, + + 'CHAR' => 43, + 'BINARY' => 43, + 'INTERVAL' => 43, + ]; +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Contexts/ContextMariaDb100300.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Contexts/ContextMariaDb100300.php new file mode 100644 index 0000000000..08b26f1adb --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Contexts/ContextMariaDb100300.php @@ -0,0 +1,347 @@ + + * @phpstan-var non-empty-array + */ + public static $KEYWORDS = [ + 'AT' => 1, 'DO' => 1, 'IO' => 1, 'NO' => 1, 'XA' => 1, + 'ANY' => 1, 'CPU' => 1, 'END' => 1, 'IPC' => 1, 'NDB' => 1, 'NEW' => 1, + 'ONE' => 1, 'ROW' => 1, 'XID' => 1, + 'BOOL' => 1, 'BYTE' => 1, 'CODE' => 1, 'CUBE' => 1, 'DATA' => 1, 'DISK' => 1, + 'ENDS' => 1, 'FAST' => 1, 'FILE' => 1, 'FULL' => 1, 'HASH' => 1, 'HELP' => 1, + 'HOST' => 1, 'LAST' => 1, 'LESS' => 1, 'LIST' => 1, 'LOGS' => 1, 'MODE' => 1, + 'NAME' => 1, 'NEXT' => 1, 'NONE' => 1, 'ONLY' => 1, 'OPEN' => 1, 'PAGE' => 1, + 'PORT' => 1, 'PREV' => 1, 'SLOW' => 1, 'SOME' => 1, 'STOP' => 1, 'THAN' => 1, + 'TYPE' => 1, 'VIEW' => 1, 'WAIT' => 1, 'WORK' => 1, 'X509' => 1, + 'AFTER' => 1, 'BEGIN' => 1, 'BLOCK' => 1, 'BTREE' => 1, 'CACHE' => 1, + 'CHAIN' => 1, 'CLOSE' => 1, 'ERROR' => 1, 'EVENT' => 1, 'EVERY' => 1, + 'FIRST' => 1, 'FIXED' => 1, 'FLUSH' => 1, 'FOUND' => 1, 'HOSTS' => 1, + 'LEVEL' => 1, 'LOCAL' => 1, 'LOCKS' => 1, 'MERGE' => 1, 'MUTEX' => 1, + 'NAMES' => 1, 'NCHAR' => 1, 'NEVER' => 1, 'OWNER' => 1, 'PHASE' => 1, + 'PROXY' => 1, 'QUERY' => 1, 'QUICK' => 1, 'RELAY' => 1, 'RESET' => 1, + 'RTREE' => 1, 'SHARE' => 1, 'SLAVE' => 1, 'START' => 1, 'SUPER' => 1, + 'SWAPS' => 1, 'TYPES' => 1, 'UNTIL' => 1, 'VALUE' => 1, + 'ACTION' => 1, 'ALWAYS' => 1, 'BACKUP' => 1, 'BINLOG' => 1, 'CIPHER' => 1, + 'CLIENT' => 1, 'COMMIT' => 1, 'ENABLE' => 1, 'ENGINE' => 1, 'ERRORS' => 1, + 'ESCAPE' => 1, 'EVENTS' => 1, 'EXPIRE' => 1, 'EXPORT' => 1, 'FAULTS' => 1, + 'FIELDS' => 1, 'FILTER' => 1, 'GLOBAL' => 1, 'GRANTS' => 1, 'IMPORT' => 1, + 'ISSUER' => 1, 'LEAVES' => 1, 'MASTER' => 1, 'MEDIUM' => 1, 'MEMORY' => 1, + 'MODIFY' => 1, 'NUMBER' => 1, 'OFFSET' => 1, 'PARSER' => 1, 'PLUGIN' => 1, + 'RELOAD' => 1, 'REMOVE' => 1, 'REPAIR' => 1, 'RESUME' => 1, 'ROLLUP' => 1, + 'SERVER' => 1, 'SIGNED' => 1, 'SIMPLE' => 1, 'SOCKET' => 1, 'SONAME' => 1, + 'SOUNDS' => 1, 'SOURCE' => 1, 'STARTS' => 1, 'STATUS' => 1, 'STRING' => 1, + 'TABLES' => 1, + 'ACCOUNT' => 1, 'ANALYSE' => 1, 'CHANGED' => 1, 'CHANNEL' => 1, 'COLUMNS' => 1, + 'COMMENT' => 1, 'COMPACT' => 1, 'CONTEXT' => 1, 'CURRENT' => 1, 'DEFINER' => 1, + 'DISABLE' => 1, 'DISCARD' => 1, 'DYNAMIC' => 1, 'ENGINES' => 1, 'EXECUTE' => 1, + 'FOLLOWS' => 1, 'GENERAL' => 1, 'HANDLER' => 1, 'INDEXES' => 1, 'INSTALL' => 1, + 'INVOKER' => 1, 'LOGFILE' => 1, 'MIGRATE' => 1, 'NO_WAIT' => 1, 'OPTIONS' => 1, + 'PARTIAL' => 1, 'PLUGINS' => 1, 'PREPARE' => 1, 'PROFILE' => 1, 'REBUILD' => 1, + 'RECOVER' => 1, 'RESTORE' => 1, 'RETURNS' => 1, 'ROUTINE' => 1, 'SESSION' => 1, + 'STACKED' => 1, 'STORAGE' => 1, 'SUBJECT' => 1, 'SUSPEND' => 1, 'UNICODE' => 1, + 'UNKNOWN' => 1, 'UPGRADE' => 1, 'USE_FRM' => 1, 'WITHOUT' => 1, 'WRAPPER' => 1, + 'CASCADED' => 1, 'CHECKSUM' => 1, 'DATAFILE' => 1, 'DUMPFILE' => 1, 'EXCHANGE' => 1, + 'EXTENDED' => 1, 'FUNCTION' => 1, 'LANGUAGE' => 1, 'MAX_ROWS' => 1, 'MAX_SIZE' => 1, + 'MIN_ROWS' => 1, 'NATIONAL' => 1, 'NVARCHAR' => 1, 'PRECEDES' => 1, 'PRESERVE' => 1, + 'PROFILES' => 1, 'REDOFILE' => 1, 'RELAYLOG' => 1, 'ROLLBACK' => 1, 'SCHEDULE' => 1, + 'SECURITY' => 1, 'SEQUENCE' => 1, 'SHUTDOWN' => 1, 'SNAPSHOT' => 1, 'SWITCHES' => 1, + 'TRIGGERS' => 1, 'UNDOFILE' => 1, 'WARNINGS' => 1, + 'AGGREGATE' => 1, 'ALGORITHM' => 1, 'COMMITTED' => 1, 'DIRECTORY' => 1, + 'DUPLICATE' => 1, 'EXPANSION' => 1, 'INVISIBLE' => 1, 'IO_THREAD' => 1, + 'ISOLATION' => 1, 'NODEGROUP' => 1, 'PACK_KEYS' => 1, 'READ_ONLY' => 1, + 'REDUNDANT' => 1, 'SAVEPOINT' => 1, 'SQL_CACHE' => 1, 'TEMPORARY' => 1, + 'TEMPTABLE' => 1, 'UNDEFINED' => 1, 'UNINSTALL' => 1, 'VARIABLES' => 1, + 'COMPLETION' => 1, 'COMPRESSED' => 1, 'CONCURRENT' => 1, 'CONNECTION' => 1, + 'CONSISTENT' => 1, 'DEALLOCATE' => 1, 'IDENTIFIED' => 1, 'MASTER_SSL' => 1, + 'NDBCLUSTER' => 1, 'PARTITIONS' => 1, 'PERSISTENT' => 1, 'PLUGIN_DIR' => 1, + 'PRIVILEGES' => 1, 'REORGANIZE' => 1, 'REPEATABLE' => 1, 'ROW_FORMAT' => 1, + 'SQL_THREAD' => 1, 'TABLESPACE' => 1, 'TABLE_NAME' => 1, 'VALIDATION' => 1, + 'COLUMN_NAME' => 1, 'COMPRESSION' => 1, 'CURSOR_NAME' => 1, 'DIAGNOSTICS' => 1, + 'EXTENT_SIZE' => 1, 'MASTER_HOST' => 1, 'MASTER_PORT' => 1, 'MASTER_USER' => 1, + 'MYSQL_ERRNO' => 1, 'NONBLOCKING' => 1, 'PROCESSLIST' => 1, 'REPLICATION' => 1, + 'SCHEMA_NAME' => 1, 'SQL_TSI_DAY' => 1, 'TRANSACTION' => 1, 'UNCOMMITTED' => 1, + 'CATALOG_NAME' => 1, 'CLASS_ORIGIN' => 1, 'DEFAULT_AUTH' => 1, 'DES_KEY_FILE' => 1, + 'INITIAL_SIZE' => 1, 'MASTER_DELAY' => 1, 'MESSAGE_TEXT' => 1, 'PARTITIONING' => 1, + 'RELAY_THREAD' => 1, 'SERIALIZABLE' => 1, 'SQL_NO_CACHE' => 1, 'SQL_TSI_HOUR' => 1, + 'SQL_TSI_WEEK' => 1, 'SQL_TSI_YEAR' => 1, 'SUBPARTITION' => 1, + 'COLUMN_FORMAT' => 1, 'INSERT_METHOD' => 1, 'MASTER_SSL_CA' => 1, 'RELAY_LOG_POS' => 1, + 'SQL_TSI_MONTH' => 1, 'SUBPARTITIONS' => 1, + 'AUTO_INCREMENT' => 1, 'AVG_ROW_LENGTH' => 1, 'KEY_BLOCK_SIZE' => 1, 'MASTER_LOG_POS' => 1, + 'MASTER_SSL_CRL' => 1, 'MASTER_SSL_KEY' => 1, 'RELAY_LOG_FILE' => 1, 'SQL_TSI_MINUTE' => 1, + 'SQL_TSI_SECOND' => 1, 'TABLE_CHECKSUM' => 1, 'USER_RESOURCES' => 1, + 'AUTOEXTEND_SIZE' => 1, 'CONSTRAINT_NAME' => 1, 'DELAY_KEY_WRITE' => 1, 'FILE_BLOCK_SIZE' => 1, + 'MASTER_LOG_FILE' => 1, 'MASTER_PASSWORD' => 1, 'MASTER_SSL_CERT' => 1, 'PARSE_GCOL_EXPR' => 1, + 'REPLICATE_DO_DB' => 1, 'SQL_AFTER_GTIDS' => 1, 'SQL_TSI_QUARTER' => 1, 'SUBCLASS_ORIGIN' => 1, + 'MASTER_SERVER_ID' => 1, 'REDO_BUFFER_SIZE' => 1, 'SQL_BEFORE_GTIDS' => 1, + 'STATS_PERSISTENT' => 1, 'UNDO_BUFFER_SIZE' => 1, + 'CONSTRAINT_SCHEMA' => 1, 'GROUP_REPLICATION' => 1, 'IGNORE_SERVER_IDS' => 1, + 'MASTER_SSL_CAPATH' => 1, 'MASTER_SSL_CIPHER' => 1, 'RETURNED_SQLSTATE' => 1, + 'SQL_BUFFER_RESULT' => 1, 'STATS_AUTO_RECALC' => 1, + 'CONSTRAINT_CATALOG' => 1, 'MASTER_RETRY_COUNT' => 1, 'MASTER_SSL_CRLPATH' => 1, + 'MAX_STATEMENT_TIME' => 1, 'REPLICATE_DO_TABLE' => 1, 'SQL_AFTER_MTS_GAPS' => 1, + 'STATS_SAMPLE_PAGES' => 1, + 'REPLICATE_IGNORE_DB' => 1, + 'MASTER_AUTO_POSITION' => 1, 'MASTER_CONNECT_RETRY' => 1, 'MAX_QUERIES_PER_HOUR' => 1, + 'MAX_UPDATES_PER_HOUR' => 1, 'MAX_USER_CONNECTIONS' => 1, 'REPLICATE_REWRITE_DB' => 1, + 'REPLICATE_IGNORE_TABLE' => 1, + 'MASTER_HEARTBEAT_PERIOD' => 1, 'REPLICATE_WILD_DO_TABLE' => 1, + 'MAX_CONNECTIONS_PER_HOUR' => 1, + 'REPLICATE_WILD_IGNORE_TABLE' => 1, + + 'AS' => 3, 'BY' => 3, 'IS' => 3, 'ON' => 3, 'OR' => 3, 'TO' => 3, + 'ADD' => 3, 'ALL' => 3, 'AND' => 3, 'ASC' => 3, 'DEC' => 3, 'DIV' => 3, + 'FOR' => 3, 'GET' => 3, 'NOT' => 3, 'OUT' => 3, 'SQL' => 3, 'SSL' => 3, + 'USE' => 3, 'XOR' => 3, + 'BOTH' => 3, 'CALL' => 3, 'CASE' => 3, 'DESC' => 3, 'DROP' => 3, 'DUAL' => 3, + 'EACH' => 3, 'ELSE' => 3, 'EXIT' => 3, 'FROM' => 3, 'INT1' => 3, 'INT2' => 3, + 'INT3' => 3, 'INT4' => 3, 'INT8' => 3, 'INTO' => 3, 'JOIN' => 3, 'KEYS' => 3, + 'KILL' => 3, 'LIKE' => 3, 'LOAD' => 3, 'LOCK' => 3, 'LONG' => 3, 'LOOP' => 3, + 'NULL' => 3, 'OVER' => 3, 'READ' => 3, 'ROWS' => 3, 'SHOW' => 3, 'THEN' => 3, + 'TRUE' => 3, 'UNDO' => 3, 'WHEN' => 3, 'WITH' => 3, + 'ALTER' => 3, 'CHECK' => 3, 'CROSS' => 3, 'FALSE' => 3, 'FETCH' => 3, + 'FORCE' => 3, 'GRANT' => 3, 'GROUP' => 3, 'INNER' => 3, 'INOUT' => 3, + 'LEAVE' => 3, 'LIMIT' => 3, 'LINES' => 3, 'ORDER' => 3, 'OUTER' => 3, + 'PURGE' => 3, 'RANGE' => 3, 'READS' => 3, 'RLIKE' => 3, 'TABLE' => 3, + 'UNION' => 3, 'USAGE' => 3, 'USING' => 3, 'WHERE' => 3, 'WHILE' => 3, + 'WRITE' => 3, + 'BEFORE' => 3, 'CHANGE' => 3, 'COLUMN' => 3, 'CREATE' => 3, 'CURSOR' => 3, + 'DELETE' => 3, 'ELSEIF' => 3, 'EXCEPT' => 3, 'FLOAT4' => 3, 'FLOAT8' => 3, + 'HAVING' => 3, 'IGNORE' => 3, 'INFILE' => 3, 'LINEAR' => 3, 'OPTION' => 3, + 'REGEXP' => 3, 'RENAME' => 3, 'RETURN' => 3, 'REVOKE' => 3, 'SELECT' => 3, + 'SIGNAL' => 3, 'STORED' => 3, 'UNLOCK' => 3, 'UPDATE' => 3, + 'ANALYZE' => 3, 'BETWEEN' => 3, 'CASCADE' => 3, 'COLLATE' => 3, 'DECLARE' => 3, + 'DELAYED' => 3, 'ESCAPED' => 3, 'EXPLAIN' => 3, 'FOREIGN' => 3, 'ITERATE' => 3, + 'LEADING' => 3, 'NATURAL' => 3, 'OUTFILE' => 3, 'PRIMARY' => 3, 'RELEASE' => 3, + 'REQUIRE' => 3, 'SCHEMAS' => 3, 'TRIGGER' => 3, 'VARYING' => 3, 'VIRTUAL' => 3, + 'CONTINUE' => 3, 'DAY_HOUR' => 3, 'DESCRIBE' => 3, 'DISTINCT' => 3, 'ENCLOSED' => 3, + 'MAXVALUE' => 3, 'MODIFIES' => 3, 'OPTIMIZE' => 3, 'RESIGNAL' => 3, 'RESTRICT' => 3, + 'SPECIFIC' => 3, 'SQLSTATE' => 3, 'STARTING' => 3, 'TRAILING' => 3, 'UNSIGNED' => 3, + 'ZEROFILL' => 3, + 'CONDITION' => 3, 'DATABASES' => 3, 'GENERATED' => 3, 'INTERSECT' => 3, + 'MIDDLEINT' => 3, 'PARTITION' => 3, 'PRECISION' => 3, 'PROCEDURE' => 3, + 'RECURSIVE' => 3, 'SENSITIVE' => 3, 'SEPARATOR' => 3, + 'ACCESSIBLE' => 3, 'ASENSITIVE' => 3, 'CONSTRAINT' => 3, 'DAY_MINUTE' => 3, + 'DAY_SECOND' => 3, 'OPTIONALLY' => 3, 'READ_WRITE' => 3, 'REFERENCES' => 3, + 'SQLWARNING' => 3, 'TERMINATED' => 3, 'YEAR_MONTH' => 3, + 'DISTINCTROW' => 3, 'HOUR_MINUTE' => 3, 'HOUR_SECOND' => 3, 'INSENSITIVE' => 3, + 'MASTER_BIND' => 3, + 'LOW_PRIORITY' => 3, 'SQLEXCEPTION' => 3, 'VARCHARACTER' => 3, + 'DETERMINISTIC' => 3, 'HIGH_PRIORITY' => 3, 'MINUTE_SECOND' => 3, 'STRAIGHT_JOIN' => 3, + 'IO_AFTER_GTIDS' => 3, 'SQL_BIG_RESULT' => 3, + 'DAY_MICROSECOND' => 3, 'IO_BEFORE_GTIDS' => 3, 'OPTIMIZER_COSTS' => 3, + 'HOUR_MICROSECOND' => 3, 'SQL_SMALL_RESULT' => 3, + 'MINUTE_MICROSECOND' => 3, 'NO_WRITE_TO_BINLOG' => 3, 'SECOND_MICROSECOND' => 3, + 'SQL_CALC_FOUND_ROWS' => 3, + 'MASTER_SSL_VERIFY_SERVER_CERT' => 3, + + 'GROUP BY' => 7, 'NOT NULL' => 7, 'ORDER BY' => 7, 'SET NULL' => 7, + 'AND CHAIN' => 7, 'FULL JOIN' => 7, 'IF EXISTS' => 7, 'LEFT JOIN' => 7, + 'LESS THAN' => 7, 'LOAD DATA' => 7, 'NO ACTION' => 7, 'ON DELETE' => 7, + 'ON UPDATE' => 7, 'UNION ALL' => 7, + 'CROSS JOIN' => 7, 'ESCAPED BY' => 7, 'FOR UPDATE' => 7, 'INNER JOIN' => 7, + 'LINEAR KEY' => 7, 'NO RELEASE' => 7, 'OR REPLACE' => 7, 'RIGHT JOIN' => 7, + 'ENCLOSED BY' => 7, 'LINEAR HASH' => 7, 'STARTING BY' => 7, + 'AND NO CHAIN' => 7, 'FOR EACH ROW' => 7, 'NATURAL JOIN' => 7, 'PARTITION BY' => 7, + 'SET PASSWORD' => 7, 'SQL SECURITY' => 7, + 'CHARACTER SET' => 7, 'IF NOT EXISTS' => 7, 'TERMINATED BY' => 7, + 'DATA DIRECTORY' => 7, 'UNION DISTINCT' => 7, + 'DEFAULT CHARSET' => 7, 'DEFAULT COLLATE' => 7, 'FULL OUTER JOIN' => 7, 'INDEX DIRECTORY' => 7, + 'LEFT OUTER JOIN' => 7, 'SUBPARTITION BY' => 7, + 'GENERATED ALWAYS' => 7, 'RIGHT OUTER JOIN' => 7, + 'NATURAL LEFT JOIN' => 7, 'START TRANSACTION' => 7, + 'LOCK IN SHARE MODE' => 7, 'NATURAL RIGHT JOIN' => 7, 'SELECT TRANSACTION' => 7, + 'DEFAULT CHARACTER SET' => 7, + 'NATURAL LEFT OUTER JOIN' => 7, + 'NATURAL RIGHT OUTER JOIN' => 7, 'WITH CONSISTENT SNAPSHOT' => 7, + + 'BIT' => 9, 'XML' => 9, + 'ENUM' => 9, 'JSON' => 9, 'TEXT' => 9, + 'ARRAY' => 9, + 'SERIAL' => 9, + 'BOOLEAN' => 9, + 'DATETIME' => 9, 'GEOMETRY' => 9, 'MULTISET' => 9, + 'MULTILINEPOINT' => 9, + 'MULTILINEPOLYGON' => 9, + + 'INT' => 11, 'SET' => 11, + 'BLOB' => 11, 'REAL' => 11, + 'FLOAT' => 11, + 'BIGINT' => 11, 'DOUBLE' => 11, + 'DECIMAL' => 11, 'INTEGER' => 11, 'NUMERIC' => 11, 'TINYINT' => 11, 'VARCHAR' => 11, + 'LONGBLOB' => 11, 'LONGTEXT' => 11, 'SMALLINT' => 11, 'TINYBLOB' => 11, 'TINYTEXT' => 11, + 'CHARACTER' => 11, 'MEDIUMINT' => 11, 'VARBINARY' => 11, + 'MEDIUMBLOB' => 11, 'MEDIUMTEXT' => 11, + + 'BINARY VARYING' => 15, + + 'KEY' => 19, + 'INDEX' => 19, + 'UNIQUE' => 19, + 'SPATIAL' => 19, + 'FULLTEXT' => 19, + + 'INDEX KEY' => 23, + 'UNIQUE KEY' => 23, + 'FOREIGN KEY' => 23, 'PRIMARY KEY' => 23, 'SPATIAL KEY' => 23, + 'FULLTEXT KEY' => 23, 'UNIQUE INDEX' => 23, + 'SPATIAL INDEX' => 23, + 'FULLTEXT INDEX' => 23, + + 'X' => 33, 'Y' => 33, + 'LN' => 33, 'PI' => 33, + 'ABS' => 33, 'AVG' => 33, 'BIN' => 33, 'COS' => 33, 'COT' => 33, 'DAY' => 33, + 'ELT' => 33, 'EXP' => 33, 'HEX' => 33, 'LOG' => 33, 'MAX' => 33, 'MD5' => 33, + 'MID' => 33, 'MIN' => 33, 'NOW' => 33, 'OCT' => 33, 'ORD' => 33, 'POW' => 33, + 'SHA' => 33, 'SIN' => 33, 'STD' => 33, 'SUM' => 33, 'TAN' => 33, + 'ACOS' => 33, 'AREA' => 33, 'ASIN' => 33, 'ATAN' => 33, 'CAST' => 33, 'CEIL' => 33, + 'CONV' => 33, 'HOUR' => 33, 'LOG2' => 33, 'LPAD' => 33, 'RAND' => 33, 'RPAD' => 33, + 'SHA1' => 33, 'SHA2' => 33, 'SIGN' => 33, 'SQRT' => 33, 'SRID' => 33, 'ST_X' => 33, + 'ST_Y' => 33, 'TRIM' => 33, 'USER' => 33, 'UUID' => 33, 'WEEK' => 33, + 'ASCII' => 33, 'ASWKB' => 33, 'ASWKT' => 33, 'ATAN2' => 33, 'COUNT' => 33, + 'CRC32' => 33, 'FIELD' => 33, 'FLOOR' => 33, 'INSTR' => 33, 'LCASE' => 33, + 'LEAST' => 33, 'LOG10' => 33, 'LOWER' => 33, 'LTRIM' => 33, 'MONTH' => 33, + 'POWER' => 33, 'QUOTE' => 33, 'ROUND' => 33, 'RTRIM' => 33, 'SLEEP' => 33, + 'SPACE' => 33, 'UCASE' => 33, 'UNHEX' => 33, 'UPPER' => 33, + 'ASTEXT' => 33, 'BIT_OR' => 33, 'BUFFER' => 33, 'CONCAT' => 33, 'DECODE' => 33, + 'ENCODE' => 33, 'EQUALS' => 33, 'FORMAT' => 33, 'IFNULL' => 33, 'ISNULL' => 33, + 'LENGTH' => 33, 'LOCATE' => 33, 'MINUTE' => 33, 'NULLIF' => 33, 'POINTN' => 33, + 'SECOND' => 33, 'STDDEV' => 33, 'STRCMP' => 33, 'SUBSTR' => 33, 'WITHIN' => 33, + 'ADDDATE' => 33, 'ADDTIME' => 33, 'AGAINST' => 33, 'BIT_AND' => 33, 'BIT_XOR' => 33, + 'CEILING' => 33, 'CHARSET' => 33, 'CROSSES' => 33, 'CURDATE' => 33, 'CURTIME' => 33, + 'DAYNAME' => 33, 'DEGREES' => 33, 'ENCRYPT' => 33, 'EXTRACT' => 33, 'GLENGTH' => 33, + 'ISEMPTY' => 33, 'IS_IPV4' => 33, 'IS_IPV6' => 33, 'QUARTER' => 33, 'RADIANS' => 33, + 'REVERSE' => 33, 'SOUNDEX' => 33, 'ST_AREA' => 33, 'ST_SRID' => 33, 'SUBDATE' => 33, + 'SUBTIME' => 33, 'SYSDATE' => 33, 'TOUCHES' => 33, 'TO_DAYS' => 33, 'VAR_POP' => 33, + 'VERSION' => 33, 'WEEKDAY' => 33, + 'ASBINARY' => 33, 'CENTROID' => 33, 'COALESCE' => 33, 'COMPRESS' => 33, 'CONTAINS' => 33, + 'DATEDIFF' => 33, 'DATE_ADD' => 33, 'DATE_SUB' => 33, 'DISJOINT' => 33, 'DISTANCE' => 33, + 'ENDPOINT' => 33, 'ENVELOPE' => 33, 'GET_LOCK' => 33, 'GREATEST' => 33, 'ISCLOSED' => 33, + 'ISSIMPLE' => 33, 'JSON_SET' => 33, 'MAKEDATE' => 33, 'MAKETIME' => 33, 'MAKE_SET' => 33, + 'MBREQUAL' => 33, 'OVERLAPS' => 33, 'PASSWORD' => 33, 'POSITION' => 33, 'ST_ASWKB' => 33, + 'ST_ASWKT' => 33, 'ST_UNION' => 33, 'TIMEDIFF' => 33, 'TRUNCATE' => 33, 'VARIANCE' => 33, + 'VAR_SAMP' => 33, 'YEARWEEK' => 33, + 'ANY_VALUE' => 33, 'BENCHMARK' => 33, 'BIT_COUNT' => 33, 'COLLATION' => 33, + 'CONCAT_WS' => 33, 'DAYOFWEEK' => 33, 'DAYOFYEAR' => 33, 'DIMENSION' => 33, + 'FROM_DAYS' => 33, 'GEOMETRYN' => 33, 'INET_ATON' => 33, 'INET_NTOA' => 33, + 'JSON_KEYS' => 33, 'JSON_TYPE' => 33, 'LOAD_FILE' => 33, 'MBRCOVERS' => 33, + 'MBREQUALS' => 33, 'MBRWITHIN' => 33, 'MONTHNAME' => 33, 'NUMPOINTS' => 33, + 'ROW_COUNT' => 33, 'ST_ASTEXT' => 33, 'ST_BUFFER' => 33, 'ST_EQUALS' => 33, + 'ST_LENGTH' => 33, 'ST_POINTN' => 33, 'ST_WITHIN' => 33, 'SUBSTRING' => 33, + 'TO_BASE64' => 33, 'UPDATEXML' => 33, + 'BIT_LENGTH' => 33, 'CONVERT_TZ' => 33, 'CONVEXHULL' => 33, 'DAYOFMONTH' => 33, + 'EXPORT_SET' => 33, 'FOUND_ROWS' => 33, 'GET_FORMAT' => 33, 'INET6_ATON' => 33, + 'INET6_NTOA' => 33, 'INTERSECTS' => 33, 'JSON_ARRAY' => 33, 'JSON_DEPTH' => 33, + 'JSON_MERGE' => 33, 'JSON_QUOTE' => 33, 'JSON_VALID' => 33, 'MBRTOUCHES' => 33, + 'MULTIPOINT' => 33, 'NAME_CONST' => 33, 'PERIOD_ADD' => 33, 'STARTPOINT' => 33, + 'STDDEV_POP' => 33, 'ST_CROSSES' => 33, 'ST_GEOHASH' => 33, 'ST_ISEMPTY' => 33, + 'ST_ISVALID' => 33, 'ST_TOUCHES' => 33, 'TO_SECONDS' => 33, 'UNCOMPRESS' => 33, + 'UUID_SHORT' => 33, 'WEEKOFYEAR' => 33, + 'AES_DECRYPT' => 33, 'AES_ENCRYPT' => 33, 'CHAR_LENGTH' => 33, 'DATE_FORMAT' => 33, + 'DES_DECRYPT' => 33, 'DES_ENCRYPT' => 33, 'FIND_IN_SET' => 33, 'FROM_BASE64' => 33, + 'GEOMFROMWKB' => 33, 'GTID_SUBSET' => 33, 'JSON_INSERT' => 33, 'JSON_LENGTH' => 33, + 'JSON_OBJECT' => 33, 'JSON_PRETTY' => 33, 'JSON_REMOVE' => 33, 'JSON_SEARCH' => 33, + 'LINEFROMWKB' => 33, 'MBRCONTAINS' => 33, 'MBRDISJOINT' => 33, 'MBROVERLAPS' => 33, + 'MICROSECOND' => 33, 'PERIOD_DIFF' => 33, 'POLYFROMWKB' => 33, 'SEC_TO_TIME' => 33, + 'STDDEV_SAMP' => 33, 'STR_TO_DATE' => 33, 'ST_ASBINARY' => 33, 'ST_CENTROID' => 33, + 'ST_CONTAINS' => 33, 'ST_DISJOINT' => 33, 'ST_DISTANCE' => 33, 'ST_ENDPOINT' => 33, + 'ST_ENVELOPE' => 33, 'ST_ISCLOSED' => 33, 'ST_ISSIMPLE' => 33, 'ST_OVERLAPS' => 33, + 'ST_SIMPLIFY' => 33, 'ST_VALIDATE' => 33, 'SYSTEM_USER' => 33, 'TIME_FORMAT' => 33, + 'TIME_TO_SEC' => 33, + 'COERCIBILITY' => 33, 'EXTERIORRING' => 33, 'EXTRACTVALUE' => 33, 'GEOMETRYTYPE' => 33, + 'GEOMFROMTEXT' => 33, 'GROUP_CONCAT' => 33, 'IS_FREE_LOCK' => 33, 'IS_USED_LOCK' => 33, + 'JSON_EXTRACT' => 33, 'JSON_REPLACE' => 33, 'JSON_UNQUOTE' => 33, 'LINEFROMTEXT' => 33, + 'MBRCOVEREDBY' => 33, 'MLINEFROMWKB' => 33, 'MPOLYFROMWKB' => 33, 'MULTIPOLYGON' => 33, + 'OCTET_LENGTH' => 33, 'OLD_PASSWORD' => 33, 'POINTFROMWKB' => 33, 'POLYFROMTEXT' => 33, + 'RANDOM_BYTES' => 33, 'RELEASE_LOCK' => 33, 'SESSION_USER' => 33, 'ST_ASGEOJSON' => 33, + 'ST_DIMENSION' => 33, 'ST_GEOMETRYN' => 33, 'ST_NUMPOINTS' => 33, 'TIMESTAMPADD' => 33, + 'CONNECTION_ID' => 33, 'FROM_UNIXTIME' => 33, 'GTID_SUBTRACT' => 33, 'INTERIORRINGN' => 33, + 'JSON_CONTAINS' => 33, 'MBRINTERSECTS' => 33, 'MLINEFROMTEXT' => 33, 'MPOINTFROMWKB' => 33, + 'MPOLYFROMTEXT' => 33, 'NUMGEOMETRIES' => 33, 'POINTFROMTEXT' => 33, 'ST_CONVEXHULL' => 33, + 'ST_DIFFERENCE' => 33, 'ST_INTERSECTS' => 33, 'ST_STARTPOINT' => 33, 'TIMESTAMPDIFF' => 33, + 'WEIGHT_STRING' => 33, + 'IS_IPV4_COMPAT' => 33, 'IS_IPV4_MAPPED' => 33, 'LAST_INSERT_ID' => 33, 'MPOINTFROMTEXT' => 33, + 'POLYGONFROMWKB' => 33, 'ST_GEOMFROMWKB' => 33, 'ST_LINEFROMWKB' => 33, 'ST_POLYFROMWKB' => 33, + 'UNIX_TIMESTAMP' => 33, + 'GEOMCOLLFROMWKB' => 33, 'MASTER_POS_WAIT' => 33, 'POLYGONFROMTEXT' => 33, 'ST_EXTERIORRING' => 33, + 'ST_GEOMETRYTYPE' => 33, 'ST_GEOMFROMTEXT' => 33, 'ST_INTERSECTION' => 33, 'ST_LINEFROMTEXT' => 33, + 'ST_MAKEENVELOPE' => 33, 'ST_MLINEFROMWKB' => 33, 'ST_MPOLYFROMWKB' => 33, 'ST_POINTFROMWKB' => 33, + 'ST_POLYFROMTEXT' => 33, 'SUBSTRING_INDEX' => 33, + 'CHARACTER_LENGTH' => 33, 'GEOMCOLLFROMTEXT' => 33, 'GEOMETRYFROMTEXT' => 33, + 'JSON_MERGE_PATCH' => 33, 'NUMINTERIORRINGS' => 33, 'ST_INTERIORRINGN' => 33, + 'ST_MLINEFROMTEXT' => 33, 'ST_MPOINTFROMWKB' => 33, 'ST_MPOLYFROMTEXT' => 33, + 'ST_NUMGEOMETRIES' => 33, 'ST_POINTFROMTEXT' => 33, 'ST_SYMDIFFERENCE' => 33, + 'JSON_ARRAY_APPEND' => 33, 'JSON_ARRAY_INSERT' => 33, 'JSON_STORAGE_FREE' => 33, + 'JSON_STORAGE_SIZE' => 33, 'LINESTRINGFROMWKB' => 33, 'MULTIPOINTFROMWKB' => 33, + 'RELEASE_ALL_LOCKS' => 33, 'ST_LATFROMGEOHASH' => 33, 'ST_MPOINTFROMTEXT' => 33, + 'ST_POLYGONFROMWKB' => 33, + 'JSON_CONTAINS_PATH' => 33, 'MULTIPOINTFROMTEXT' => 33, 'ST_BUFFER_STRATEGY' => 33, + 'ST_DISTANCE_SPHERE' => 33, 'ST_GEOMCOLLFROMTXT' => 33, 'ST_GEOMCOLLFROMWKB' => 33, + 'ST_GEOMFROMGEOJSON' => 33, 'ST_LONGFROMGEOHASH' => 33, 'ST_POLYGONFROMTEXT' => 33, + 'JSON_MERGE_PRESERVE' => 33, 'MULTIPOLYGONFROMWKB' => 33, 'ST_GEOMCOLLFROMTEXT' => 33, + 'ST_GEOMETRYFROMTEXT' => 33, 'ST_NUMINTERIORRINGS' => 33, 'ST_POINTFROMGEOHASH' => 33, + 'UNCOMPRESSED_LENGTH' => 33, + 'MULTIPOLYGONFROMTEXT' => 33, 'ST_LINESTRINGFROMWKB' => 33, 'ST_MULTIPOINTFROMWKB' => 33, + 'ST_MULTIPOINTFROMTEXT' => 33, + 'MULTILINESTRINGFROMWKB' => 33, 'ST_MULTIPOLYGONFROMWKB' => 33, + 'MULTILINESTRINGFROMTEXT' => 33, 'ST_MULTIPOLYGONFROMTEXT' => 33, + 'GEOMETRYCOLLECTIONFROMWKB' => 33, 'ST_MULTILINESTRINGFROMWKB' => 33, + 'GEOMETRYCOLLECTIONFROMTEXT' => 33, 'ST_MULTILINESTRINGFROMTEXT' => 33, 'VALIDATE_PASSWORD_STRENGTH' => 33, + 'WAIT_FOR_EXECUTED_GTID_SET' => 33, + 'ST_GEOMETRYCOLLECTIONFROMWKB' => 33, + 'ST_GEOMETRYCOLLECTIONFROMTEXT' => 33, + 'WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS' => 33, + + 'IF' => 35, 'IN' => 35, + 'MOD' => 35, + 'LEFT' => 35, + 'MATCH' => 35, 'RIGHT' => 35, + 'EXISTS' => 35, 'INSERT' => 35, 'REPEAT' => 35, 'SCHEMA' => 35, 'VALUES' => 35, + 'CONVERT' => 35, 'DEFAULT' => 35, 'REPLACE' => 35, + 'DATABASE' => 35, 'UTC_DATE' => 35, 'UTC_TIME' => 35, + 'LOCALTIME' => 35, + 'CURRENT_DATE' => 35, 'CURRENT_TIME' => 35, 'CURRENT_USER' => 35, + 'UTC_TIMESTAMP' => 35, + 'LOCALTIMESTAMP' => 35, + 'CURRENT_TIMESTAMP' => 35, + + 'NOT IN' => 39, + + 'DATE' => 41, 'TIME' => 41, 'YEAR' => 41, + 'POINT' => 41, + 'POLYGON' => 41, + 'TIMESTAMP' => 41, + 'LINESTRING' => 41, + 'MULTILINESTRING' => 41, + 'GEOMETRYCOLLECTION' => 41, + + 'CHAR' => 43, + 'BINARY' => 43, + 'INTERVAL' => 43, + ]; +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Contexts/ContextMariaDb100400.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Contexts/ContextMariaDb100400.php new file mode 100644 index 0000000000..46513405ec --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Contexts/ContextMariaDb100400.php @@ -0,0 +1,347 @@ + + * @phpstan-var non-empty-array + */ + public static $KEYWORDS = [ + 'AT' => 1, 'DO' => 1, 'IO' => 1, 'NO' => 1, 'XA' => 1, + 'ANY' => 1, 'CPU' => 1, 'END' => 1, 'IPC' => 1, 'NDB' => 1, 'NEW' => 1, + 'ONE' => 1, 'ROW' => 1, 'XID' => 1, + 'BOOL' => 1, 'BYTE' => 1, 'CODE' => 1, 'CUBE' => 1, 'DATA' => 1, 'DISK' => 1, + 'ENDS' => 1, 'FAST' => 1, 'FILE' => 1, 'FULL' => 1, 'HASH' => 1, 'HELP' => 1, + 'HOST' => 1, 'LAST' => 1, 'LESS' => 1, 'LIST' => 1, 'LOGS' => 1, 'MODE' => 1, + 'NAME' => 1, 'NEXT' => 1, 'NONE' => 1, 'ONLY' => 1, 'OPEN' => 1, 'PAGE' => 1, + 'PORT' => 1, 'PREV' => 1, 'SLOW' => 1, 'SOME' => 1, 'STOP' => 1, 'THAN' => 1, + 'TYPE' => 1, 'VIEW' => 1, 'WAIT' => 1, 'WORK' => 1, 'X509' => 1, + 'AFTER' => 1, 'BEGIN' => 1, 'BLOCK' => 1, 'BTREE' => 1, 'CACHE' => 1, + 'CHAIN' => 1, 'CLOSE' => 1, 'ERROR' => 1, 'EVENT' => 1, 'EVERY' => 1, + 'FIRST' => 1, 'FIXED' => 1, 'FLUSH' => 1, 'FOUND' => 1, 'HOSTS' => 1, + 'LEVEL' => 1, 'LOCAL' => 1, 'LOCKS' => 1, 'MERGE' => 1, 'MUTEX' => 1, + 'NAMES' => 1, 'NCHAR' => 1, 'NEVER' => 1, 'OWNER' => 1, 'PHASE' => 1, + 'PROXY' => 1, 'QUERY' => 1, 'QUICK' => 1, 'RELAY' => 1, 'RESET' => 1, + 'RTREE' => 1, 'SHARE' => 1, 'SLAVE' => 1, 'START' => 1, 'SUPER' => 1, + 'SWAPS' => 1, 'TYPES' => 1, 'UNTIL' => 1, 'VALUE' => 1, + 'ACTION' => 1, 'ALWAYS' => 1, 'BACKUP' => 1, 'BINLOG' => 1, 'CIPHER' => 1, + 'CLIENT' => 1, 'COMMIT' => 1, 'ENABLE' => 1, 'ENGINE' => 1, 'ERRORS' => 1, + 'ESCAPE' => 1, 'EVENTS' => 1, 'EXPIRE' => 1, 'EXPORT' => 1, 'FAULTS' => 1, + 'FIELDS' => 1, 'FILTER' => 1, 'GLOBAL' => 1, 'GRANTS' => 1, 'IMPORT' => 1, + 'ISSUER' => 1, 'LEAVES' => 1, 'MASTER' => 1, 'MEDIUM' => 1, 'MEMORY' => 1, + 'MODIFY' => 1, 'NUMBER' => 1, 'OFFSET' => 1, 'PARSER' => 1, 'PLUGIN' => 1, + 'RELOAD' => 1, 'REMOVE' => 1, 'REPAIR' => 1, 'RESUME' => 1, 'ROLLUP' => 1, + 'SERVER' => 1, 'SIGNED' => 1, 'SIMPLE' => 1, 'SOCKET' => 1, 'SONAME' => 1, + 'SOUNDS' => 1, 'SOURCE' => 1, 'STARTS' => 1, 'STATUS' => 1, 'STRING' => 1, + 'TABLES' => 1, + 'ACCOUNT' => 1, 'ANALYSE' => 1, 'CHANGED' => 1, 'CHANNEL' => 1, 'COLUMNS' => 1, + 'COMMENT' => 1, 'COMPACT' => 1, 'CONTEXT' => 1, 'CURRENT' => 1, 'DEFINER' => 1, + 'DISABLE' => 1, 'DISCARD' => 1, 'DYNAMIC' => 1, 'ENGINES' => 1, 'EXECUTE' => 1, + 'FOLLOWS' => 1, 'GENERAL' => 1, 'HANDLER' => 1, 'INDEXES' => 1, 'INSTALL' => 1, + 'INVOKER' => 1, 'LOGFILE' => 1, 'MIGRATE' => 1, 'NO_WAIT' => 1, 'OPTIONS' => 1, + 'PARTIAL' => 1, 'PLUGINS' => 1, 'PREPARE' => 1, 'PROFILE' => 1, 'REBUILD' => 1, + 'RECOVER' => 1, 'RESTORE' => 1, 'RETURNS' => 1, 'ROUTINE' => 1, 'SESSION' => 1, + 'STACKED' => 1, 'STORAGE' => 1, 'SUBJECT' => 1, 'SUSPEND' => 1, 'UNICODE' => 1, + 'UNKNOWN' => 1, 'UPGRADE' => 1, 'USE_FRM' => 1, 'WITHOUT' => 1, 'WRAPPER' => 1, + 'CASCADED' => 1, 'CHECKSUM' => 1, 'DATAFILE' => 1, 'DUMPFILE' => 1, 'EXCHANGE' => 1, + 'EXTENDED' => 1, 'FUNCTION' => 1, 'LANGUAGE' => 1, 'MAX_ROWS' => 1, 'MAX_SIZE' => 1, + 'MIN_ROWS' => 1, 'NATIONAL' => 1, 'NVARCHAR' => 1, 'PRECEDES' => 1, 'PRESERVE' => 1, + 'PROFILES' => 1, 'REDOFILE' => 1, 'RELAYLOG' => 1, 'ROLLBACK' => 1, 'SCHEDULE' => 1, + 'SECURITY' => 1, 'SEQUENCE' => 1, 'SHUTDOWN' => 1, 'SNAPSHOT' => 1, 'SWITCHES' => 1, + 'TRIGGERS' => 1, 'UNDOFILE' => 1, 'WARNINGS' => 1, + 'AGGREGATE' => 1, 'ALGORITHM' => 1, 'COMMITTED' => 1, 'DIRECTORY' => 1, + 'DUPLICATE' => 1, 'EXPANSION' => 1, 'INVISIBLE' => 1, 'IO_THREAD' => 1, + 'ISOLATION' => 1, 'NODEGROUP' => 1, 'PACK_KEYS' => 1, 'READ_ONLY' => 1, + 'REDUNDANT' => 1, 'SAVEPOINT' => 1, 'SQL_CACHE' => 1, 'TEMPORARY' => 1, + 'TEMPTABLE' => 1, 'UNDEFINED' => 1, 'UNINSTALL' => 1, 'VARIABLES' => 1, + 'COMPLETION' => 1, 'COMPRESSED' => 1, 'CONCURRENT' => 1, 'CONNECTION' => 1, + 'CONSISTENT' => 1, 'DEALLOCATE' => 1, 'IDENTIFIED' => 1, 'MASTER_SSL' => 1, + 'NDBCLUSTER' => 1, 'PARTITIONS' => 1, 'PERSISTENT' => 1, 'PLUGIN_DIR' => 1, + 'PRIVILEGES' => 1, 'REORGANIZE' => 1, 'REPEATABLE' => 1, 'ROW_FORMAT' => 1, + 'SQL_THREAD' => 1, 'TABLESPACE' => 1, 'TABLE_NAME' => 1, 'VALIDATION' => 1, + 'COLUMN_NAME' => 1, 'COMPRESSION' => 1, 'CURSOR_NAME' => 1, 'DIAGNOSTICS' => 1, + 'EXTENT_SIZE' => 1, 'MASTER_HOST' => 1, 'MASTER_PORT' => 1, 'MASTER_USER' => 1, + 'MYSQL_ERRNO' => 1, 'NONBLOCKING' => 1, 'PROCESSLIST' => 1, 'REPLICATION' => 1, + 'SCHEMA_NAME' => 1, 'SQL_TSI_DAY' => 1, 'TRANSACTION' => 1, 'UNCOMMITTED' => 1, + 'CATALOG_NAME' => 1, 'CLASS_ORIGIN' => 1, 'DEFAULT_AUTH' => 1, 'DES_KEY_FILE' => 1, + 'INITIAL_SIZE' => 1, 'MASTER_DELAY' => 1, 'MESSAGE_TEXT' => 1, 'PARTITIONING' => 1, + 'RELAY_THREAD' => 1, 'SERIALIZABLE' => 1, 'SQL_NO_CACHE' => 1, 'SQL_TSI_HOUR' => 1, + 'SQL_TSI_WEEK' => 1, 'SQL_TSI_YEAR' => 1, 'SUBPARTITION' => 1, + 'COLUMN_FORMAT' => 1, 'INSERT_METHOD' => 1, 'MASTER_SSL_CA' => 1, 'RELAY_LOG_POS' => 1, + 'SQL_TSI_MONTH' => 1, 'SUBPARTITIONS' => 1, + 'AUTO_INCREMENT' => 1, 'AVG_ROW_LENGTH' => 1, 'KEY_BLOCK_SIZE' => 1, 'MASTER_LOG_POS' => 1, + 'MASTER_SSL_CRL' => 1, 'MASTER_SSL_KEY' => 1, 'RELAY_LOG_FILE' => 1, 'SQL_TSI_MINUTE' => 1, + 'SQL_TSI_SECOND' => 1, 'TABLE_CHECKSUM' => 1, 'USER_RESOURCES' => 1, + 'AUTOEXTEND_SIZE' => 1, 'CONSTRAINT_NAME' => 1, 'DELAY_KEY_WRITE' => 1, 'FILE_BLOCK_SIZE' => 1, + 'MASTER_LOG_FILE' => 1, 'MASTER_PASSWORD' => 1, 'MASTER_SSL_CERT' => 1, 'PARSE_GCOL_EXPR' => 1, + 'REPLICATE_DO_DB' => 1, 'SQL_AFTER_GTIDS' => 1, 'SQL_TSI_QUARTER' => 1, 'SUBCLASS_ORIGIN' => 1, + 'MASTER_SERVER_ID' => 1, 'REDO_BUFFER_SIZE' => 1, 'SQL_BEFORE_GTIDS' => 1, + 'STATS_PERSISTENT' => 1, 'UNDO_BUFFER_SIZE' => 1, + 'CONSTRAINT_SCHEMA' => 1, 'GROUP_REPLICATION' => 1, 'IGNORE_SERVER_IDS' => 1, + 'MASTER_SSL_CAPATH' => 1, 'MASTER_SSL_CIPHER' => 1, 'RETURNED_SQLSTATE' => 1, + 'SQL_BUFFER_RESULT' => 1, 'STATS_AUTO_RECALC' => 1, + 'CONSTRAINT_CATALOG' => 1, 'MASTER_RETRY_COUNT' => 1, 'MASTER_SSL_CRLPATH' => 1, + 'MAX_STATEMENT_TIME' => 1, 'REPLICATE_DO_TABLE' => 1, 'SQL_AFTER_MTS_GAPS' => 1, + 'STATS_SAMPLE_PAGES' => 1, + 'REPLICATE_IGNORE_DB' => 1, + 'MASTER_AUTO_POSITION' => 1, 'MASTER_CONNECT_RETRY' => 1, 'MAX_QUERIES_PER_HOUR' => 1, + 'MAX_UPDATES_PER_HOUR' => 1, 'MAX_USER_CONNECTIONS' => 1, 'REPLICATE_REWRITE_DB' => 1, + 'REPLICATE_IGNORE_TABLE' => 1, + 'MASTER_HEARTBEAT_PERIOD' => 1, 'REPLICATE_WILD_DO_TABLE' => 1, + 'MAX_CONNECTIONS_PER_HOUR' => 1, + 'REPLICATE_WILD_IGNORE_TABLE' => 1, + + 'AS' => 3, 'BY' => 3, 'IS' => 3, 'ON' => 3, 'OR' => 3, 'TO' => 3, + 'ADD' => 3, 'ALL' => 3, 'AND' => 3, 'ASC' => 3, 'DEC' => 3, 'DIV' => 3, + 'FOR' => 3, 'GET' => 3, 'NOT' => 3, 'OUT' => 3, 'SQL' => 3, 'SSL' => 3, + 'USE' => 3, 'XOR' => 3, + 'BOTH' => 3, 'CALL' => 3, 'CASE' => 3, 'DESC' => 3, 'DROP' => 3, 'DUAL' => 3, + 'EACH' => 3, 'ELSE' => 3, 'EXIT' => 3, 'FROM' => 3, 'INT1' => 3, 'INT2' => 3, + 'INT3' => 3, 'INT4' => 3, 'INT8' => 3, 'INTO' => 3, 'JOIN' => 3, 'KEYS' => 3, + 'KILL' => 3, 'LIKE' => 3, 'LOAD' => 3, 'LOCK' => 3, 'LONG' => 3, 'LOOP' => 3, + 'NULL' => 3, 'OVER' => 3, 'READ' => 3, 'ROWS' => 3, 'SHOW' => 3, 'THEN' => 3, + 'TRUE' => 3, 'UNDO' => 3, 'WHEN' => 3, 'WITH' => 3, + 'ALTER' => 3, 'CHECK' => 3, 'CROSS' => 3, 'FALSE' => 3, 'FETCH' => 3, + 'FORCE' => 3, 'GRANT' => 3, 'GROUP' => 3, 'INNER' => 3, 'INOUT' => 3, + 'LEAVE' => 3, 'LIMIT' => 3, 'LINES' => 3, 'ORDER' => 3, 'OUTER' => 3, + 'PURGE' => 3, 'RANGE' => 3, 'READS' => 3, 'RLIKE' => 3, 'TABLE' => 3, + 'UNION' => 3, 'USAGE' => 3, 'USING' => 3, 'WHERE' => 3, 'WHILE' => 3, + 'WRITE' => 3, + 'BEFORE' => 3, 'CHANGE' => 3, 'COLUMN' => 3, 'CREATE' => 3, 'CURSOR' => 3, + 'DELETE' => 3, 'ELSEIF' => 3, 'EXCEPT' => 3, 'FLOAT4' => 3, 'FLOAT8' => 3, + 'HAVING' => 3, 'IGNORE' => 3, 'INFILE' => 3, 'LINEAR' => 3, 'OPTION' => 3, + 'REGEXP' => 3, 'RENAME' => 3, 'RETURN' => 3, 'REVOKE' => 3, 'SELECT' => 3, + 'SIGNAL' => 3, 'STORED' => 3, 'UNLOCK' => 3, 'UPDATE' => 3, + 'ANALYZE' => 3, 'BETWEEN' => 3, 'CASCADE' => 3, 'COLLATE' => 3, 'DECLARE' => 3, + 'DELAYED' => 3, 'ESCAPED' => 3, 'EXPLAIN' => 3, 'FOREIGN' => 3, 'ITERATE' => 3, + 'LEADING' => 3, 'NATURAL' => 3, 'OUTFILE' => 3, 'PRIMARY' => 3, 'RELEASE' => 3, + 'REQUIRE' => 3, 'SCHEMAS' => 3, 'TRIGGER' => 3, 'VARYING' => 3, 'VIRTUAL' => 3, + 'CONTINUE' => 3, 'DAY_HOUR' => 3, 'DESCRIBE' => 3, 'DISTINCT' => 3, 'ENCLOSED' => 3, + 'MAXVALUE' => 3, 'MODIFIES' => 3, 'OPTIMIZE' => 3, 'RESIGNAL' => 3, 'RESTRICT' => 3, + 'SPECIFIC' => 3, 'SQLSTATE' => 3, 'STARTING' => 3, 'TRAILING' => 3, 'UNSIGNED' => 3, + 'ZEROFILL' => 3, + 'CONDITION' => 3, 'DATABASES' => 3, 'GENERATED' => 3, 'INTERSECT' => 3, + 'MIDDLEINT' => 3, 'PARTITION' => 3, 'PRECISION' => 3, 'PROCEDURE' => 3, + 'RECURSIVE' => 3, 'SENSITIVE' => 3, 'SEPARATOR' => 3, + 'ACCESSIBLE' => 3, 'ASENSITIVE' => 3, 'CONSTRAINT' => 3, 'DAY_MINUTE' => 3, + 'DAY_SECOND' => 3, 'OPTIONALLY' => 3, 'READ_WRITE' => 3, 'REFERENCES' => 3, + 'SQLWARNING' => 3, 'TERMINATED' => 3, 'YEAR_MONTH' => 3, + 'DISTINCTROW' => 3, 'HOUR_MINUTE' => 3, 'HOUR_SECOND' => 3, 'INSENSITIVE' => 3, + 'MASTER_BIND' => 3, + 'LOW_PRIORITY' => 3, 'SQLEXCEPTION' => 3, 'VARCHARACTER' => 3, + 'DETERMINISTIC' => 3, 'HIGH_PRIORITY' => 3, 'MINUTE_SECOND' => 3, 'STRAIGHT_JOIN' => 3, + 'IO_AFTER_GTIDS' => 3, 'SQL_BIG_RESULT' => 3, + 'DAY_MICROSECOND' => 3, 'IO_BEFORE_GTIDS' => 3, 'OPTIMIZER_COSTS' => 3, + 'HOUR_MICROSECOND' => 3, 'SQL_SMALL_RESULT' => 3, + 'MINUTE_MICROSECOND' => 3, 'NO_WRITE_TO_BINLOG' => 3, 'SECOND_MICROSECOND' => 3, + 'SQL_CALC_FOUND_ROWS' => 3, + 'MASTER_SSL_VERIFY_SERVER_CERT' => 3, + + 'GROUP BY' => 7, 'NOT NULL' => 7, 'ORDER BY' => 7, 'SET NULL' => 7, + 'AND CHAIN' => 7, 'FULL JOIN' => 7, 'IF EXISTS' => 7, 'LEFT JOIN' => 7, + 'LESS THAN' => 7, 'LOAD DATA' => 7, 'NO ACTION' => 7, 'ON DELETE' => 7, + 'ON UPDATE' => 7, 'UNION ALL' => 7, + 'CROSS JOIN' => 7, 'ESCAPED BY' => 7, 'FOR UPDATE' => 7, 'INNER JOIN' => 7, + 'LINEAR KEY' => 7, 'NO RELEASE' => 7, 'OR REPLACE' => 7, 'RIGHT JOIN' => 7, + 'ENCLOSED BY' => 7, 'LINEAR HASH' => 7, 'STARTING BY' => 7, + 'AND NO CHAIN' => 7, 'FOR EACH ROW' => 7, 'NATURAL JOIN' => 7, 'PARTITION BY' => 7, + 'SET PASSWORD' => 7, 'SQL SECURITY' => 7, + 'CHARACTER SET' => 7, 'IF NOT EXISTS' => 7, 'TERMINATED BY' => 7, + 'DATA DIRECTORY' => 7, 'UNION DISTINCT' => 7, + 'DEFAULT CHARSET' => 7, 'DEFAULT COLLATE' => 7, 'FULL OUTER JOIN' => 7, 'INDEX DIRECTORY' => 7, + 'LEFT OUTER JOIN' => 7, 'SUBPARTITION BY' => 7, + 'GENERATED ALWAYS' => 7, 'RIGHT OUTER JOIN' => 7, + 'NATURAL LEFT JOIN' => 7, 'START TRANSACTION' => 7, + 'LOCK IN SHARE MODE' => 7, 'NATURAL RIGHT JOIN' => 7, 'SELECT TRANSACTION' => 7, + 'DEFAULT CHARACTER SET' => 7, + 'NATURAL LEFT OUTER JOIN' => 7, + 'NATURAL RIGHT OUTER JOIN' => 7, 'WITH CONSISTENT SNAPSHOT' => 7, + + 'BIT' => 9, 'XML' => 9, + 'ENUM' => 9, 'JSON' => 9, 'TEXT' => 9, + 'ARRAY' => 9, + 'SERIAL' => 9, + 'BOOLEAN' => 9, + 'DATETIME' => 9, 'GEOMETRY' => 9, 'MULTISET' => 9, + 'MULTILINEPOINT' => 9, + 'MULTILINEPOLYGON' => 9, + + 'INT' => 11, 'SET' => 11, + 'BLOB' => 11, 'REAL' => 11, + 'FLOAT' => 11, + 'BIGINT' => 11, 'DOUBLE' => 11, + 'DECIMAL' => 11, 'INTEGER' => 11, 'NUMERIC' => 11, 'TINYINT' => 11, 'VARCHAR' => 11, + 'LONGBLOB' => 11, 'LONGTEXT' => 11, 'SMALLINT' => 11, 'TINYBLOB' => 11, 'TINYTEXT' => 11, + 'CHARACTER' => 11, 'MEDIUMINT' => 11, 'VARBINARY' => 11, + 'MEDIUMBLOB' => 11, 'MEDIUMTEXT' => 11, + + 'BINARY VARYING' => 15, + + 'KEY' => 19, + 'INDEX' => 19, + 'UNIQUE' => 19, + 'SPATIAL' => 19, + 'FULLTEXT' => 19, + + 'INDEX KEY' => 23, + 'UNIQUE KEY' => 23, + 'FOREIGN KEY' => 23, 'PRIMARY KEY' => 23, 'SPATIAL KEY' => 23, + 'FULLTEXT KEY' => 23, 'UNIQUE INDEX' => 23, + 'SPATIAL INDEX' => 23, + 'FULLTEXT INDEX' => 23, + + 'X' => 33, 'Y' => 33, + 'LN' => 33, 'PI' => 33, + 'ABS' => 33, 'AVG' => 33, 'BIN' => 33, 'COS' => 33, 'COT' => 33, 'DAY' => 33, + 'ELT' => 33, 'EXP' => 33, 'HEX' => 33, 'LOG' => 33, 'MAX' => 33, 'MD5' => 33, + 'MID' => 33, 'MIN' => 33, 'NOW' => 33, 'OCT' => 33, 'ORD' => 33, 'POW' => 33, + 'SHA' => 33, 'SIN' => 33, 'STD' => 33, 'SUM' => 33, 'TAN' => 33, + 'ACOS' => 33, 'AREA' => 33, 'ASIN' => 33, 'ATAN' => 33, 'CAST' => 33, 'CEIL' => 33, + 'CONV' => 33, 'HOUR' => 33, 'LOG2' => 33, 'LPAD' => 33, 'RAND' => 33, 'RPAD' => 33, + 'SHA1' => 33, 'SHA2' => 33, 'SIGN' => 33, 'SQRT' => 33, 'SRID' => 33, 'ST_X' => 33, + 'ST_Y' => 33, 'TRIM' => 33, 'USER' => 33, 'UUID' => 33, 'WEEK' => 33, + 'ASCII' => 33, 'ASWKB' => 33, 'ASWKT' => 33, 'ATAN2' => 33, 'COUNT' => 33, + 'CRC32' => 33, 'FIELD' => 33, 'FLOOR' => 33, 'INSTR' => 33, 'LCASE' => 33, + 'LEAST' => 33, 'LOG10' => 33, 'LOWER' => 33, 'LTRIM' => 33, 'MONTH' => 33, + 'POWER' => 33, 'QUOTE' => 33, 'ROUND' => 33, 'RTRIM' => 33, 'SLEEP' => 33, + 'SPACE' => 33, 'UCASE' => 33, 'UNHEX' => 33, 'UPPER' => 33, + 'ASTEXT' => 33, 'BIT_OR' => 33, 'BUFFER' => 33, 'CONCAT' => 33, 'DECODE' => 33, + 'ENCODE' => 33, 'EQUALS' => 33, 'FORMAT' => 33, 'IFNULL' => 33, 'ISNULL' => 33, + 'LENGTH' => 33, 'LOCATE' => 33, 'MINUTE' => 33, 'NULLIF' => 33, 'POINTN' => 33, + 'SECOND' => 33, 'STDDEV' => 33, 'STRCMP' => 33, 'SUBSTR' => 33, 'WITHIN' => 33, + 'ADDDATE' => 33, 'ADDTIME' => 33, 'AGAINST' => 33, 'BIT_AND' => 33, 'BIT_XOR' => 33, + 'CEILING' => 33, 'CHARSET' => 33, 'CROSSES' => 33, 'CURDATE' => 33, 'CURTIME' => 33, + 'DAYNAME' => 33, 'DEGREES' => 33, 'ENCRYPT' => 33, 'EXTRACT' => 33, 'GLENGTH' => 33, + 'ISEMPTY' => 33, 'IS_IPV4' => 33, 'IS_IPV6' => 33, 'QUARTER' => 33, 'RADIANS' => 33, + 'REVERSE' => 33, 'SOUNDEX' => 33, 'ST_AREA' => 33, 'ST_SRID' => 33, 'SUBDATE' => 33, + 'SUBTIME' => 33, 'SYSDATE' => 33, 'TOUCHES' => 33, 'TO_DAYS' => 33, 'VAR_POP' => 33, + 'VERSION' => 33, 'WEEKDAY' => 33, + 'ASBINARY' => 33, 'CENTROID' => 33, 'COALESCE' => 33, 'COMPRESS' => 33, 'CONTAINS' => 33, + 'DATEDIFF' => 33, 'DATE_ADD' => 33, 'DATE_SUB' => 33, 'DISJOINT' => 33, 'DISTANCE' => 33, + 'ENDPOINT' => 33, 'ENVELOPE' => 33, 'GET_LOCK' => 33, 'GREATEST' => 33, 'ISCLOSED' => 33, + 'ISSIMPLE' => 33, 'JSON_SET' => 33, 'MAKEDATE' => 33, 'MAKETIME' => 33, 'MAKE_SET' => 33, + 'MBREQUAL' => 33, 'OVERLAPS' => 33, 'PASSWORD' => 33, 'POSITION' => 33, 'ST_ASWKB' => 33, + 'ST_ASWKT' => 33, 'ST_UNION' => 33, 'TIMEDIFF' => 33, 'TRUNCATE' => 33, 'VARIANCE' => 33, + 'VAR_SAMP' => 33, 'YEARWEEK' => 33, + 'ANY_VALUE' => 33, 'BENCHMARK' => 33, 'BIT_COUNT' => 33, 'COLLATION' => 33, + 'CONCAT_WS' => 33, 'DAYOFWEEK' => 33, 'DAYOFYEAR' => 33, 'DIMENSION' => 33, + 'FROM_DAYS' => 33, 'GEOMETRYN' => 33, 'INET_ATON' => 33, 'INET_NTOA' => 33, + 'JSON_KEYS' => 33, 'JSON_TYPE' => 33, 'LOAD_FILE' => 33, 'MBRCOVERS' => 33, + 'MBREQUALS' => 33, 'MBRWITHIN' => 33, 'MONTHNAME' => 33, 'NUMPOINTS' => 33, + 'ROW_COUNT' => 33, 'ST_ASTEXT' => 33, 'ST_BUFFER' => 33, 'ST_EQUALS' => 33, + 'ST_LENGTH' => 33, 'ST_POINTN' => 33, 'ST_WITHIN' => 33, 'SUBSTRING' => 33, + 'TO_BASE64' => 33, 'UPDATEXML' => 33, + 'BIT_LENGTH' => 33, 'CONVERT_TZ' => 33, 'CONVEXHULL' => 33, 'DAYOFMONTH' => 33, + 'EXPORT_SET' => 33, 'FOUND_ROWS' => 33, 'GET_FORMAT' => 33, 'INET6_ATON' => 33, + 'INET6_NTOA' => 33, 'INTERSECTS' => 33, 'JSON_ARRAY' => 33, 'JSON_DEPTH' => 33, + 'JSON_MERGE' => 33, 'JSON_QUOTE' => 33, 'JSON_VALID' => 33, 'MBRTOUCHES' => 33, + 'MULTIPOINT' => 33, 'NAME_CONST' => 33, 'PERIOD_ADD' => 33, 'STARTPOINT' => 33, + 'STDDEV_POP' => 33, 'ST_CROSSES' => 33, 'ST_GEOHASH' => 33, 'ST_ISEMPTY' => 33, + 'ST_ISVALID' => 33, 'ST_TOUCHES' => 33, 'TO_SECONDS' => 33, 'UNCOMPRESS' => 33, + 'UUID_SHORT' => 33, 'WEEKOFYEAR' => 33, + 'AES_DECRYPT' => 33, 'AES_ENCRYPT' => 33, 'CHAR_LENGTH' => 33, 'DATE_FORMAT' => 33, + 'DES_DECRYPT' => 33, 'DES_ENCRYPT' => 33, 'FIND_IN_SET' => 33, 'FROM_BASE64' => 33, + 'GEOMFROMWKB' => 33, 'GTID_SUBSET' => 33, 'JSON_INSERT' => 33, 'JSON_LENGTH' => 33, + 'JSON_OBJECT' => 33, 'JSON_PRETTY' => 33, 'JSON_REMOVE' => 33, 'JSON_SEARCH' => 33, + 'LINEFROMWKB' => 33, 'MBRCONTAINS' => 33, 'MBRDISJOINT' => 33, 'MBROVERLAPS' => 33, + 'MICROSECOND' => 33, 'PERIOD_DIFF' => 33, 'POLYFROMWKB' => 33, 'SEC_TO_TIME' => 33, + 'STDDEV_SAMP' => 33, 'STR_TO_DATE' => 33, 'ST_ASBINARY' => 33, 'ST_CENTROID' => 33, + 'ST_CONTAINS' => 33, 'ST_DISJOINT' => 33, 'ST_DISTANCE' => 33, 'ST_ENDPOINT' => 33, + 'ST_ENVELOPE' => 33, 'ST_ISCLOSED' => 33, 'ST_ISSIMPLE' => 33, 'ST_OVERLAPS' => 33, + 'ST_SIMPLIFY' => 33, 'ST_VALIDATE' => 33, 'SYSTEM_USER' => 33, 'TIME_FORMAT' => 33, + 'TIME_TO_SEC' => 33, + 'COERCIBILITY' => 33, 'EXTERIORRING' => 33, 'EXTRACTVALUE' => 33, 'GEOMETRYTYPE' => 33, + 'GEOMFROMTEXT' => 33, 'GROUP_CONCAT' => 33, 'IS_FREE_LOCK' => 33, 'IS_USED_LOCK' => 33, + 'JSON_EXTRACT' => 33, 'JSON_REPLACE' => 33, 'JSON_UNQUOTE' => 33, 'LINEFROMTEXT' => 33, + 'MBRCOVEREDBY' => 33, 'MLINEFROMWKB' => 33, 'MPOLYFROMWKB' => 33, 'MULTIPOLYGON' => 33, + 'OCTET_LENGTH' => 33, 'OLD_PASSWORD' => 33, 'POINTFROMWKB' => 33, 'POLYFROMTEXT' => 33, + 'RANDOM_BYTES' => 33, 'RELEASE_LOCK' => 33, 'SESSION_USER' => 33, 'ST_ASGEOJSON' => 33, + 'ST_DIMENSION' => 33, 'ST_GEOMETRYN' => 33, 'ST_NUMPOINTS' => 33, 'TIMESTAMPADD' => 33, + 'CONNECTION_ID' => 33, 'FROM_UNIXTIME' => 33, 'GTID_SUBTRACT' => 33, 'INTERIORRINGN' => 33, + 'JSON_CONTAINS' => 33, 'MBRINTERSECTS' => 33, 'MLINEFROMTEXT' => 33, 'MPOINTFROMWKB' => 33, + 'MPOLYFROMTEXT' => 33, 'NUMGEOMETRIES' => 33, 'POINTFROMTEXT' => 33, 'ST_CONVEXHULL' => 33, + 'ST_DIFFERENCE' => 33, 'ST_INTERSECTS' => 33, 'ST_STARTPOINT' => 33, 'TIMESTAMPDIFF' => 33, + 'WEIGHT_STRING' => 33, + 'IS_IPV4_COMPAT' => 33, 'IS_IPV4_MAPPED' => 33, 'LAST_INSERT_ID' => 33, 'MPOINTFROMTEXT' => 33, + 'POLYGONFROMWKB' => 33, 'ST_GEOMFROMWKB' => 33, 'ST_LINEFROMWKB' => 33, 'ST_POLYFROMWKB' => 33, + 'UNIX_TIMESTAMP' => 33, + 'GEOMCOLLFROMWKB' => 33, 'MASTER_POS_WAIT' => 33, 'POLYGONFROMTEXT' => 33, 'ST_EXTERIORRING' => 33, + 'ST_GEOMETRYTYPE' => 33, 'ST_GEOMFROMTEXT' => 33, 'ST_INTERSECTION' => 33, 'ST_LINEFROMTEXT' => 33, + 'ST_MAKEENVELOPE' => 33, 'ST_MLINEFROMWKB' => 33, 'ST_MPOLYFROMWKB' => 33, 'ST_POINTFROMWKB' => 33, + 'ST_POLYFROMTEXT' => 33, 'SUBSTRING_INDEX' => 33, + 'CHARACTER_LENGTH' => 33, 'GEOMCOLLFROMTEXT' => 33, 'GEOMETRYFROMTEXT' => 33, + 'JSON_MERGE_PATCH' => 33, 'NUMINTERIORRINGS' => 33, 'ST_INTERIORRINGN' => 33, + 'ST_MLINEFROMTEXT' => 33, 'ST_MPOINTFROMWKB' => 33, 'ST_MPOLYFROMTEXT' => 33, + 'ST_NUMGEOMETRIES' => 33, 'ST_POINTFROMTEXT' => 33, 'ST_SYMDIFFERENCE' => 33, + 'JSON_ARRAY_APPEND' => 33, 'JSON_ARRAY_INSERT' => 33, 'JSON_STORAGE_FREE' => 33, + 'JSON_STORAGE_SIZE' => 33, 'LINESTRINGFROMWKB' => 33, 'MULTIPOINTFROMWKB' => 33, + 'RELEASE_ALL_LOCKS' => 33, 'ST_LATFROMGEOHASH' => 33, 'ST_MPOINTFROMTEXT' => 33, + 'ST_POLYGONFROMWKB' => 33, + 'JSON_CONTAINS_PATH' => 33, 'MULTIPOINTFROMTEXT' => 33, 'ST_BUFFER_STRATEGY' => 33, + 'ST_DISTANCE_SPHERE' => 33, 'ST_GEOMCOLLFROMTXT' => 33, 'ST_GEOMCOLLFROMWKB' => 33, + 'ST_GEOMFROMGEOJSON' => 33, 'ST_LONGFROMGEOHASH' => 33, 'ST_POLYGONFROMTEXT' => 33, + 'JSON_MERGE_PRESERVE' => 33, 'MULTIPOLYGONFROMWKB' => 33, 'ST_GEOMCOLLFROMTEXT' => 33, + 'ST_GEOMETRYFROMTEXT' => 33, 'ST_NUMINTERIORRINGS' => 33, 'ST_POINTFROMGEOHASH' => 33, + 'UNCOMPRESSED_LENGTH' => 33, + 'MULTIPOLYGONFROMTEXT' => 33, 'ST_LINESTRINGFROMWKB' => 33, 'ST_MULTIPOINTFROMWKB' => 33, + 'ST_MULTIPOINTFROMTEXT' => 33, + 'MULTILINESTRINGFROMWKB' => 33, 'ST_MULTIPOLYGONFROMWKB' => 33, + 'MULTILINESTRINGFROMTEXT' => 33, 'ST_MULTIPOLYGONFROMTEXT' => 33, + 'GEOMETRYCOLLECTIONFROMWKB' => 33, 'ST_MULTILINESTRINGFROMWKB' => 33, + 'GEOMETRYCOLLECTIONFROMTEXT' => 33, 'ST_MULTILINESTRINGFROMTEXT' => 33, 'VALIDATE_PASSWORD_STRENGTH' => 33, + 'WAIT_FOR_EXECUTED_GTID_SET' => 33, + 'ST_GEOMETRYCOLLECTIONFROMWKB' => 33, + 'ST_GEOMETRYCOLLECTIONFROMTEXT' => 33, + 'WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS' => 33, + + 'IF' => 35, 'IN' => 35, + 'MOD' => 35, + 'LEFT' => 35, + 'MATCH' => 35, 'RIGHT' => 35, + 'EXISTS' => 35, 'INSERT' => 35, 'REPEAT' => 35, 'SCHEMA' => 35, 'VALUES' => 35, + 'CONVERT' => 35, 'DEFAULT' => 35, 'REPLACE' => 35, + 'DATABASE' => 35, 'UTC_DATE' => 35, 'UTC_TIME' => 35, + 'LOCALTIME' => 35, + 'CURRENT_DATE' => 35, 'CURRENT_TIME' => 35, 'CURRENT_USER' => 35, + 'UTC_TIMESTAMP' => 35, + 'LOCALTIMESTAMP' => 35, + 'CURRENT_TIMESTAMP' => 35, + + 'NOT IN' => 39, + + 'DATE' => 41, 'TIME' => 41, 'YEAR' => 41, + 'POINT' => 41, + 'POLYGON' => 41, + 'TIMESTAMP' => 41, + 'LINESTRING' => 41, + 'MULTILINESTRING' => 41, + 'GEOMETRYCOLLECTION' => 41, + + 'CHAR' => 43, + 'BINARY' => 43, + 'INTERVAL' => 43, + ]; +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Contexts/ContextMariaDb100500.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Contexts/ContextMariaDb100500.php new file mode 100644 index 0000000000..744b85d7ab --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Contexts/ContextMariaDb100500.php @@ -0,0 +1,347 @@ + + * @phpstan-var non-empty-array + */ + public static $KEYWORDS = [ + 'AT' => 1, 'DO' => 1, 'IO' => 1, 'NO' => 1, 'XA' => 1, + 'ANY' => 1, 'CPU' => 1, 'END' => 1, 'IPC' => 1, 'NDB' => 1, 'NEW' => 1, + 'ONE' => 1, 'ROW' => 1, 'XID' => 1, + 'BOOL' => 1, 'BYTE' => 1, 'CODE' => 1, 'CUBE' => 1, 'DATA' => 1, 'DISK' => 1, + 'ENDS' => 1, 'FAST' => 1, 'FILE' => 1, 'FULL' => 1, 'HASH' => 1, 'HELP' => 1, + 'HOST' => 1, 'LAST' => 1, 'LESS' => 1, 'LIST' => 1, 'LOGS' => 1, 'MODE' => 1, + 'NAME' => 1, 'NEXT' => 1, 'NONE' => 1, 'ONLY' => 1, 'OPEN' => 1, 'PAGE' => 1, + 'PORT' => 1, 'PREV' => 1, 'SLOW' => 1, 'SOME' => 1, 'STOP' => 1, 'THAN' => 1, + 'TYPE' => 1, 'VIEW' => 1, 'WAIT' => 1, 'WORK' => 1, 'X509' => 1, + 'AFTER' => 1, 'BEGIN' => 1, 'BLOCK' => 1, 'BTREE' => 1, 'CACHE' => 1, + 'CHAIN' => 1, 'CLOSE' => 1, 'ERROR' => 1, 'EVENT' => 1, 'EVERY' => 1, + 'FIRST' => 1, 'FIXED' => 1, 'FLUSH' => 1, 'FOUND' => 1, 'HOSTS' => 1, + 'LEVEL' => 1, 'LOCAL' => 1, 'LOCKS' => 1, 'MERGE' => 1, 'MUTEX' => 1, + 'NAMES' => 1, 'NCHAR' => 1, 'NEVER' => 1, 'OWNER' => 1, 'PHASE' => 1, + 'PROXY' => 1, 'QUERY' => 1, 'QUICK' => 1, 'RELAY' => 1, 'RESET' => 1, + 'RTREE' => 1, 'SHARE' => 1, 'SLAVE' => 1, 'START' => 1, 'SUPER' => 1, + 'SWAPS' => 1, 'TYPES' => 1, 'UNTIL' => 1, 'VALUE' => 1, + 'ACTION' => 1, 'ALWAYS' => 1, 'BACKUP' => 1, 'BINLOG' => 1, 'CIPHER' => 1, + 'CLIENT' => 1, 'COMMIT' => 1, 'ENABLE' => 1, 'ENGINE' => 1, 'ERRORS' => 1, + 'ESCAPE' => 1, 'EVENTS' => 1, 'EXPIRE' => 1, 'EXPORT' => 1, 'FAULTS' => 1, + 'FIELDS' => 1, 'FILTER' => 1, 'GLOBAL' => 1, 'GRANTS' => 1, 'IMPORT' => 1, + 'ISSUER' => 1, 'LEAVES' => 1, 'MASTER' => 1, 'MEDIUM' => 1, 'MEMORY' => 1, + 'MODIFY' => 1, 'NUMBER' => 1, 'OFFSET' => 1, 'PARSER' => 1, 'PLUGIN' => 1, + 'RELOAD' => 1, 'REMOVE' => 1, 'REPAIR' => 1, 'RESUME' => 1, 'ROLLUP' => 1, + 'SERVER' => 1, 'SIGNED' => 1, 'SIMPLE' => 1, 'SOCKET' => 1, 'SONAME' => 1, + 'SOUNDS' => 1, 'SOURCE' => 1, 'STARTS' => 1, 'STATUS' => 1, 'STRING' => 1, + 'TABLES' => 1, + 'ACCOUNT' => 1, 'ANALYSE' => 1, 'CHANGED' => 1, 'CHANNEL' => 1, 'COLUMNS' => 1, + 'COMMENT' => 1, 'COMPACT' => 1, 'CONTEXT' => 1, 'CURRENT' => 1, 'DEFINER' => 1, + 'DISABLE' => 1, 'DISCARD' => 1, 'DYNAMIC' => 1, 'ENGINES' => 1, 'EXECUTE' => 1, + 'FOLLOWS' => 1, 'GENERAL' => 1, 'HANDLER' => 1, 'INDEXES' => 1, 'INSTALL' => 1, + 'INVOKER' => 1, 'LOGFILE' => 1, 'MIGRATE' => 1, 'NO_WAIT' => 1, 'OPTIONS' => 1, + 'PARTIAL' => 1, 'PLUGINS' => 1, 'PREPARE' => 1, 'PROFILE' => 1, 'REBUILD' => 1, + 'RECOVER' => 1, 'RESTORE' => 1, 'RETURNS' => 1, 'ROUTINE' => 1, 'SESSION' => 1, + 'STACKED' => 1, 'STORAGE' => 1, 'SUBJECT' => 1, 'SUSPEND' => 1, 'UNICODE' => 1, + 'UNKNOWN' => 1, 'UPGRADE' => 1, 'USE_FRM' => 1, 'WITHOUT' => 1, 'WRAPPER' => 1, + 'CASCADED' => 1, 'CHECKSUM' => 1, 'DATAFILE' => 1, 'DUMPFILE' => 1, 'EXCHANGE' => 1, + 'EXTENDED' => 1, 'FUNCTION' => 1, 'LANGUAGE' => 1, 'MAX_ROWS' => 1, 'MAX_SIZE' => 1, + 'MIN_ROWS' => 1, 'NATIONAL' => 1, 'NVARCHAR' => 1, 'PRECEDES' => 1, 'PRESERVE' => 1, + 'PROFILES' => 1, 'REDOFILE' => 1, 'RELAYLOG' => 1, 'ROLLBACK' => 1, 'SCHEDULE' => 1, + 'SECURITY' => 1, 'SEQUENCE' => 1, 'SHUTDOWN' => 1, 'SNAPSHOT' => 1, 'SWITCHES' => 1, + 'TRIGGERS' => 1, 'UNDOFILE' => 1, 'WARNINGS' => 1, + 'AGGREGATE' => 1, 'ALGORITHM' => 1, 'COMMITTED' => 1, 'DIRECTORY' => 1, + 'DUPLICATE' => 1, 'EXPANSION' => 1, 'INVISIBLE' => 1, 'IO_THREAD' => 1, + 'ISOLATION' => 1, 'NODEGROUP' => 1, 'PACK_KEYS' => 1, 'READ_ONLY' => 1, + 'REDUNDANT' => 1, 'SAVEPOINT' => 1, 'SQL_CACHE' => 1, 'TEMPORARY' => 1, + 'TEMPTABLE' => 1, 'UNDEFINED' => 1, 'UNINSTALL' => 1, 'VARIABLES' => 1, + 'COMPLETION' => 1, 'COMPRESSED' => 1, 'CONCURRENT' => 1, 'CONNECTION' => 1, + 'CONSISTENT' => 1, 'DEALLOCATE' => 1, 'IDENTIFIED' => 1, 'MASTER_SSL' => 1, + 'NDBCLUSTER' => 1, 'PARTITIONS' => 1, 'PERSISTENT' => 1, 'PLUGIN_DIR' => 1, + 'PRIVILEGES' => 1, 'REORGANIZE' => 1, 'REPEATABLE' => 1, 'ROW_FORMAT' => 1, + 'SQL_THREAD' => 1, 'TABLESPACE' => 1, 'TABLE_NAME' => 1, 'VALIDATION' => 1, + 'COLUMN_NAME' => 1, 'COMPRESSION' => 1, 'CURSOR_NAME' => 1, 'DIAGNOSTICS' => 1, + 'EXTENT_SIZE' => 1, 'MASTER_HOST' => 1, 'MASTER_PORT' => 1, 'MASTER_USER' => 1, + 'MYSQL_ERRNO' => 1, 'NONBLOCKING' => 1, 'PROCESSLIST' => 1, 'REPLICATION' => 1, + 'SCHEMA_NAME' => 1, 'SQL_TSI_DAY' => 1, 'TRANSACTION' => 1, 'UNCOMMITTED' => 1, + 'CATALOG_NAME' => 1, 'CLASS_ORIGIN' => 1, 'DEFAULT_AUTH' => 1, 'DES_KEY_FILE' => 1, + 'INITIAL_SIZE' => 1, 'MASTER_DELAY' => 1, 'MESSAGE_TEXT' => 1, 'PARTITIONING' => 1, + 'RELAY_THREAD' => 1, 'SERIALIZABLE' => 1, 'SQL_NO_CACHE' => 1, 'SQL_TSI_HOUR' => 1, + 'SQL_TSI_WEEK' => 1, 'SQL_TSI_YEAR' => 1, 'SUBPARTITION' => 1, + 'COLUMN_FORMAT' => 1, 'INSERT_METHOD' => 1, 'MASTER_SSL_CA' => 1, 'RELAY_LOG_POS' => 1, + 'SQL_TSI_MONTH' => 1, 'SUBPARTITIONS' => 1, + 'AUTO_INCREMENT' => 1, 'AVG_ROW_LENGTH' => 1, 'KEY_BLOCK_SIZE' => 1, 'MASTER_LOG_POS' => 1, + 'MASTER_SSL_CRL' => 1, 'MASTER_SSL_KEY' => 1, 'RELAY_LOG_FILE' => 1, 'SQL_TSI_MINUTE' => 1, + 'SQL_TSI_SECOND' => 1, 'TABLE_CHECKSUM' => 1, 'USER_RESOURCES' => 1, + 'AUTOEXTEND_SIZE' => 1, 'CONSTRAINT_NAME' => 1, 'DELAY_KEY_WRITE' => 1, 'FILE_BLOCK_SIZE' => 1, + 'MASTER_LOG_FILE' => 1, 'MASTER_PASSWORD' => 1, 'MASTER_SSL_CERT' => 1, 'PARSE_GCOL_EXPR' => 1, + 'REPLICATE_DO_DB' => 1, 'SQL_AFTER_GTIDS' => 1, 'SQL_TSI_QUARTER' => 1, 'SUBCLASS_ORIGIN' => 1, + 'MASTER_SERVER_ID' => 1, 'REDO_BUFFER_SIZE' => 1, 'SQL_BEFORE_GTIDS' => 1, + 'STATS_PERSISTENT' => 1, 'UNDO_BUFFER_SIZE' => 1, + 'CONSTRAINT_SCHEMA' => 1, 'GROUP_REPLICATION' => 1, 'IGNORE_SERVER_IDS' => 1, + 'MASTER_SSL_CAPATH' => 1, 'MASTER_SSL_CIPHER' => 1, 'RETURNED_SQLSTATE' => 1, + 'SQL_BUFFER_RESULT' => 1, 'STATS_AUTO_RECALC' => 1, + 'CONSTRAINT_CATALOG' => 1, 'MASTER_RETRY_COUNT' => 1, 'MASTER_SSL_CRLPATH' => 1, + 'MAX_STATEMENT_TIME' => 1, 'REPLICATE_DO_TABLE' => 1, 'SQL_AFTER_MTS_GAPS' => 1, + 'STATS_SAMPLE_PAGES' => 1, + 'REPLICATE_IGNORE_DB' => 1, + 'MASTER_AUTO_POSITION' => 1, 'MASTER_CONNECT_RETRY' => 1, 'MAX_QUERIES_PER_HOUR' => 1, + 'MAX_UPDATES_PER_HOUR' => 1, 'MAX_USER_CONNECTIONS' => 1, 'REPLICATE_REWRITE_DB' => 1, + 'REPLICATE_IGNORE_TABLE' => 1, + 'MASTER_HEARTBEAT_PERIOD' => 1, 'REPLICATE_WILD_DO_TABLE' => 1, + 'MAX_CONNECTIONS_PER_HOUR' => 1, + 'REPLICATE_WILD_IGNORE_TABLE' => 1, + + 'AS' => 3, 'BY' => 3, 'IS' => 3, 'ON' => 3, 'OR' => 3, 'TO' => 3, + 'ADD' => 3, 'ALL' => 3, 'AND' => 3, 'ASC' => 3, 'DEC' => 3, 'DIV' => 3, + 'FOR' => 3, 'GET' => 3, 'NOT' => 3, 'OUT' => 3, 'SQL' => 3, 'SSL' => 3, + 'USE' => 3, 'XOR' => 3, + 'BOTH' => 3, 'CALL' => 3, 'CASE' => 3, 'DESC' => 3, 'DROP' => 3, 'DUAL' => 3, + 'EACH' => 3, 'ELSE' => 3, 'EXIT' => 3, 'FROM' => 3, 'INT1' => 3, 'INT2' => 3, + 'INT3' => 3, 'INT4' => 3, 'INT8' => 3, 'INTO' => 3, 'JOIN' => 3, 'KEYS' => 3, + 'KILL' => 3, 'LIKE' => 3, 'LOAD' => 3, 'LOCK' => 3, 'LONG' => 3, 'LOOP' => 3, + 'NULL' => 3, 'OVER' => 3, 'READ' => 3, 'ROWS' => 3, 'SHOW' => 3, 'THEN' => 3, + 'TRUE' => 3, 'UNDO' => 3, 'WHEN' => 3, 'WITH' => 3, + 'ALTER' => 3, 'CHECK' => 3, 'CROSS' => 3, 'FALSE' => 3, 'FETCH' => 3, + 'FORCE' => 3, 'GRANT' => 3, 'GROUP' => 3, 'INNER' => 3, 'INOUT' => 3, + 'LEAVE' => 3, 'LIMIT' => 3, 'LINES' => 3, 'ORDER' => 3, 'OUTER' => 3, + 'PURGE' => 3, 'RANGE' => 3, 'READS' => 3, 'RLIKE' => 3, 'TABLE' => 3, + 'UNION' => 3, 'USAGE' => 3, 'USING' => 3, 'WHERE' => 3, 'WHILE' => 3, + 'WRITE' => 3, + 'BEFORE' => 3, 'CHANGE' => 3, 'COLUMN' => 3, 'CREATE' => 3, 'CURSOR' => 3, + 'DELETE' => 3, 'ELSEIF' => 3, 'EXCEPT' => 3, 'FLOAT4' => 3, 'FLOAT8' => 3, + 'HAVING' => 3, 'IGNORE' => 3, 'INFILE' => 3, 'LINEAR' => 3, 'OPTION' => 3, + 'REGEXP' => 3, 'RENAME' => 3, 'RETURN' => 3, 'REVOKE' => 3, 'SELECT' => 3, + 'SIGNAL' => 3, 'STORED' => 3, 'UNLOCK' => 3, 'UPDATE' => 3, + 'ANALYZE' => 3, 'BETWEEN' => 3, 'CASCADE' => 3, 'COLLATE' => 3, 'DECLARE' => 3, + 'DELAYED' => 3, 'ESCAPED' => 3, 'EXPLAIN' => 3, 'FOREIGN' => 3, 'ITERATE' => 3, + 'LEADING' => 3, 'NATURAL' => 3, 'OUTFILE' => 3, 'PRIMARY' => 3, 'RELEASE' => 3, + 'REQUIRE' => 3, 'SCHEMAS' => 3, 'TRIGGER' => 3, 'VARYING' => 3, 'VIRTUAL' => 3, + 'CONTINUE' => 3, 'DAY_HOUR' => 3, 'DESCRIBE' => 3, 'DISTINCT' => 3, 'ENCLOSED' => 3, + 'MAXVALUE' => 3, 'MODIFIES' => 3, 'OPTIMIZE' => 3, 'RESIGNAL' => 3, 'RESTRICT' => 3, + 'SPECIFIC' => 3, 'SQLSTATE' => 3, 'STARTING' => 3, 'TRAILING' => 3, 'UNSIGNED' => 3, + 'ZEROFILL' => 3, + 'CONDITION' => 3, 'DATABASES' => 3, 'GENERATED' => 3, 'INTERSECT' => 3, + 'MIDDLEINT' => 3, 'PARTITION' => 3, 'PRECISION' => 3, 'PROCEDURE' => 3, + 'RECURSIVE' => 3, 'SENSITIVE' => 3, 'SEPARATOR' => 3, + 'ACCESSIBLE' => 3, 'ASENSITIVE' => 3, 'CONSTRAINT' => 3, 'DAY_MINUTE' => 3, + 'DAY_SECOND' => 3, 'OPTIONALLY' => 3, 'READ_WRITE' => 3, 'REFERENCES' => 3, + 'SQLWARNING' => 3, 'TERMINATED' => 3, 'YEAR_MONTH' => 3, + 'DISTINCTROW' => 3, 'HOUR_MINUTE' => 3, 'HOUR_SECOND' => 3, 'INSENSITIVE' => 3, + 'MASTER_BIND' => 3, + 'LOW_PRIORITY' => 3, 'SQLEXCEPTION' => 3, 'VARCHARACTER' => 3, + 'DETERMINISTIC' => 3, 'HIGH_PRIORITY' => 3, 'MINUTE_SECOND' => 3, 'STRAIGHT_JOIN' => 3, + 'IO_AFTER_GTIDS' => 3, 'SQL_BIG_RESULT' => 3, + 'DAY_MICROSECOND' => 3, 'IO_BEFORE_GTIDS' => 3, 'OPTIMIZER_COSTS' => 3, + 'HOUR_MICROSECOND' => 3, 'SQL_SMALL_RESULT' => 3, + 'MINUTE_MICROSECOND' => 3, 'NO_WRITE_TO_BINLOG' => 3, 'SECOND_MICROSECOND' => 3, + 'SQL_CALC_FOUND_ROWS' => 3, + 'MASTER_SSL_VERIFY_SERVER_CERT' => 3, + + 'GROUP BY' => 7, 'NOT NULL' => 7, 'ORDER BY' => 7, 'SET NULL' => 7, + 'AND CHAIN' => 7, 'FULL JOIN' => 7, 'IF EXISTS' => 7, 'LEFT JOIN' => 7, + 'LESS THAN' => 7, 'LOAD DATA' => 7, 'NO ACTION' => 7, 'ON DELETE' => 7, + 'ON UPDATE' => 7, 'UNION ALL' => 7, + 'CROSS JOIN' => 7, 'ESCAPED BY' => 7, 'FOR UPDATE' => 7, 'INNER JOIN' => 7, + 'LINEAR KEY' => 7, 'NO RELEASE' => 7, 'OR REPLACE' => 7, 'RIGHT JOIN' => 7, + 'ENCLOSED BY' => 7, 'LINEAR HASH' => 7, 'STARTING BY' => 7, + 'AND NO CHAIN' => 7, 'FOR EACH ROW' => 7, 'NATURAL JOIN' => 7, 'PARTITION BY' => 7, + 'SET PASSWORD' => 7, 'SQL SECURITY' => 7, + 'CHARACTER SET' => 7, 'IF NOT EXISTS' => 7, 'TERMINATED BY' => 7, + 'DATA DIRECTORY' => 7, 'UNION DISTINCT' => 7, + 'DEFAULT CHARSET' => 7, 'DEFAULT COLLATE' => 7, 'FULL OUTER JOIN' => 7, 'INDEX DIRECTORY' => 7, + 'LEFT OUTER JOIN' => 7, 'SUBPARTITION BY' => 7, + 'GENERATED ALWAYS' => 7, 'RIGHT OUTER JOIN' => 7, + 'NATURAL LEFT JOIN' => 7, 'START TRANSACTION' => 7, + 'LOCK IN SHARE MODE' => 7, 'NATURAL RIGHT JOIN' => 7, 'SELECT TRANSACTION' => 7, + 'DEFAULT CHARACTER SET' => 7, + 'NATURAL LEFT OUTER JOIN' => 7, + 'NATURAL RIGHT OUTER JOIN' => 7, 'WITH CONSISTENT SNAPSHOT' => 7, + + 'BIT' => 9, 'XML' => 9, + 'ENUM' => 9, 'JSON' => 9, 'TEXT' => 9, + 'ARRAY' => 9, + 'SERIAL' => 9, + 'BOOLEAN' => 9, + 'DATETIME' => 9, 'GEOMETRY' => 9, 'MULTISET' => 9, + 'MULTILINEPOINT' => 9, + 'MULTILINEPOLYGON' => 9, + + 'INT' => 11, 'SET' => 11, + 'BLOB' => 11, 'REAL' => 11, + 'FLOAT' => 11, + 'BIGINT' => 11, 'DOUBLE' => 11, + 'DECIMAL' => 11, 'INTEGER' => 11, 'NUMERIC' => 11, 'TINYINT' => 11, 'VARCHAR' => 11, + 'LONGBLOB' => 11, 'LONGTEXT' => 11, 'SMALLINT' => 11, 'TINYBLOB' => 11, 'TINYTEXT' => 11, + 'CHARACTER' => 11, 'MEDIUMINT' => 11, 'VARBINARY' => 11, + 'MEDIUMBLOB' => 11, 'MEDIUMTEXT' => 11, + + 'BINARY VARYING' => 15, + + 'KEY' => 19, + 'INDEX' => 19, + 'UNIQUE' => 19, + 'SPATIAL' => 19, + 'FULLTEXT' => 19, + + 'INDEX KEY' => 23, + 'UNIQUE KEY' => 23, + 'FOREIGN KEY' => 23, 'PRIMARY KEY' => 23, 'SPATIAL KEY' => 23, + 'FULLTEXT KEY' => 23, 'UNIQUE INDEX' => 23, + 'SPATIAL INDEX' => 23, + 'FULLTEXT INDEX' => 23, + + 'X' => 33, 'Y' => 33, + 'LN' => 33, 'PI' => 33, + 'ABS' => 33, 'AVG' => 33, 'BIN' => 33, 'COS' => 33, 'COT' => 33, 'DAY' => 33, + 'ELT' => 33, 'EXP' => 33, 'HEX' => 33, 'LOG' => 33, 'MAX' => 33, 'MD5' => 33, + 'MID' => 33, 'MIN' => 33, 'NOW' => 33, 'OCT' => 33, 'ORD' => 33, 'POW' => 33, + 'SHA' => 33, 'SIN' => 33, 'STD' => 33, 'SUM' => 33, 'TAN' => 33, + 'ACOS' => 33, 'AREA' => 33, 'ASIN' => 33, 'ATAN' => 33, 'CAST' => 33, 'CEIL' => 33, + 'CONV' => 33, 'HOUR' => 33, 'LOG2' => 33, 'LPAD' => 33, 'RAND' => 33, 'RPAD' => 33, + 'SHA1' => 33, 'SHA2' => 33, 'SIGN' => 33, 'SQRT' => 33, 'SRID' => 33, 'ST_X' => 33, + 'ST_Y' => 33, 'TRIM' => 33, 'USER' => 33, 'UUID' => 33, 'WEEK' => 33, + 'ASCII' => 33, 'ASWKB' => 33, 'ASWKT' => 33, 'ATAN2' => 33, 'COUNT' => 33, + 'CRC32' => 33, 'FIELD' => 33, 'FLOOR' => 33, 'INSTR' => 33, 'LCASE' => 33, + 'LEAST' => 33, 'LOG10' => 33, 'LOWER' => 33, 'LTRIM' => 33, 'MONTH' => 33, + 'POWER' => 33, 'QUOTE' => 33, 'ROUND' => 33, 'RTRIM' => 33, 'SLEEP' => 33, + 'SPACE' => 33, 'UCASE' => 33, 'UNHEX' => 33, 'UPPER' => 33, + 'ASTEXT' => 33, 'BIT_OR' => 33, 'BUFFER' => 33, 'CONCAT' => 33, 'DECODE' => 33, + 'ENCODE' => 33, 'EQUALS' => 33, 'FORMAT' => 33, 'IFNULL' => 33, 'ISNULL' => 33, + 'LENGTH' => 33, 'LOCATE' => 33, 'MINUTE' => 33, 'NULLIF' => 33, 'POINTN' => 33, + 'SECOND' => 33, 'STDDEV' => 33, 'STRCMP' => 33, 'SUBSTR' => 33, 'WITHIN' => 33, + 'ADDDATE' => 33, 'ADDTIME' => 33, 'AGAINST' => 33, 'BIT_AND' => 33, 'BIT_XOR' => 33, + 'CEILING' => 33, 'CHARSET' => 33, 'CROSSES' => 33, 'CURDATE' => 33, 'CURTIME' => 33, + 'DAYNAME' => 33, 'DEGREES' => 33, 'ENCRYPT' => 33, 'EXTRACT' => 33, 'GLENGTH' => 33, + 'ISEMPTY' => 33, 'IS_IPV4' => 33, 'IS_IPV6' => 33, 'QUARTER' => 33, 'RADIANS' => 33, + 'REVERSE' => 33, 'SOUNDEX' => 33, 'ST_AREA' => 33, 'ST_SRID' => 33, 'SUBDATE' => 33, + 'SUBTIME' => 33, 'SYSDATE' => 33, 'TOUCHES' => 33, 'TO_DAYS' => 33, 'VAR_POP' => 33, + 'VERSION' => 33, 'WEEKDAY' => 33, + 'ASBINARY' => 33, 'CENTROID' => 33, 'COALESCE' => 33, 'COMPRESS' => 33, 'CONTAINS' => 33, + 'DATEDIFF' => 33, 'DATE_ADD' => 33, 'DATE_SUB' => 33, 'DISJOINT' => 33, 'DISTANCE' => 33, + 'ENDPOINT' => 33, 'ENVELOPE' => 33, 'GET_LOCK' => 33, 'GREATEST' => 33, 'ISCLOSED' => 33, + 'ISSIMPLE' => 33, 'JSON_SET' => 33, 'MAKEDATE' => 33, 'MAKETIME' => 33, 'MAKE_SET' => 33, + 'MBREQUAL' => 33, 'OVERLAPS' => 33, 'PASSWORD' => 33, 'POSITION' => 33, 'ST_ASWKB' => 33, + 'ST_ASWKT' => 33, 'ST_UNION' => 33, 'TIMEDIFF' => 33, 'TRUNCATE' => 33, 'VARIANCE' => 33, + 'VAR_SAMP' => 33, 'YEARWEEK' => 33, + 'ANY_VALUE' => 33, 'BENCHMARK' => 33, 'BIT_COUNT' => 33, 'COLLATION' => 33, + 'CONCAT_WS' => 33, 'DAYOFWEEK' => 33, 'DAYOFYEAR' => 33, 'DIMENSION' => 33, + 'FROM_DAYS' => 33, 'GEOMETRYN' => 33, 'INET_ATON' => 33, 'INET_NTOA' => 33, + 'JSON_KEYS' => 33, 'JSON_TYPE' => 33, 'LOAD_FILE' => 33, 'MBRCOVERS' => 33, + 'MBREQUALS' => 33, 'MBRWITHIN' => 33, 'MONTHNAME' => 33, 'NUMPOINTS' => 33, + 'ROW_COUNT' => 33, 'ST_ASTEXT' => 33, 'ST_BUFFER' => 33, 'ST_EQUALS' => 33, + 'ST_LENGTH' => 33, 'ST_POINTN' => 33, 'ST_WITHIN' => 33, 'SUBSTRING' => 33, + 'TO_BASE64' => 33, 'UPDATEXML' => 33, + 'BIT_LENGTH' => 33, 'CONVERT_TZ' => 33, 'CONVEXHULL' => 33, 'DAYOFMONTH' => 33, + 'EXPORT_SET' => 33, 'FOUND_ROWS' => 33, 'GET_FORMAT' => 33, 'INET6_ATON' => 33, + 'INET6_NTOA' => 33, 'INTERSECTS' => 33, 'JSON_ARRAY' => 33, 'JSON_DEPTH' => 33, + 'JSON_MERGE' => 33, 'JSON_QUOTE' => 33, 'JSON_VALID' => 33, 'MBRTOUCHES' => 33, + 'MULTIPOINT' => 33, 'NAME_CONST' => 33, 'PERIOD_ADD' => 33, 'STARTPOINT' => 33, + 'STDDEV_POP' => 33, 'ST_CROSSES' => 33, 'ST_GEOHASH' => 33, 'ST_ISEMPTY' => 33, + 'ST_ISVALID' => 33, 'ST_TOUCHES' => 33, 'TO_SECONDS' => 33, 'UNCOMPRESS' => 33, + 'UUID_SHORT' => 33, 'WEEKOFYEAR' => 33, + 'AES_DECRYPT' => 33, 'AES_ENCRYPT' => 33, 'CHAR_LENGTH' => 33, 'DATE_FORMAT' => 33, + 'DES_DECRYPT' => 33, 'DES_ENCRYPT' => 33, 'FIND_IN_SET' => 33, 'FROM_BASE64' => 33, + 'GEOMFROMWKB' => 33, 'GTID_SUBSET' => 33, 'JSON_INSERT' => 33, 'JSON_LENGTH' => 33, + 'JSON_OBJECT' => 33, 'JSON_PRETTY' => 33, 'JSON_REMOVE' => 33, 'JSON_SEARCH' => 33, + 'LINEFROMWKB' => 33, 'MBRCONTAINS' => 33, 'MBRDISJOINT' => 33, 'MBROVERLAPS' => 33, + 'MICROSECOND' => 33, 'PERIOD_DIFF' => 33, 'POLYFROMWKB' => 33, 'SEC_TO_TIME' => 33, + 'STDDEV_SAMP' => 33, 'STR_TO_DATE' => 33, 'ST_ASBINARY' => 33, 'ST_CENTROID' => 33, + 'ST_CONTAINS' => 33, 'ST_DISJOINT' => 33, 'ST_DISTANCE' => 33, 'ST_ENDPOINT' => 33, + 'ST_ENVELOPE' => 33, 'ST_ISCLOSED' => 33, 'ST_ISSIMPLE' => 33, 'ST_OVERLAPS' => 33, + 'ST_SIMPLIFY' => 33, 'ST_VALIDATE' => 33, 'SYSTEM_USER' => 33, 'TIME_FORMAT' => 33, + 'TIME_TO_SEC' => 33, + 'COERCIBILITY' => 33, 'EXTERIORRING' => 33, 'EXTRACTVALUE' => 33, 'GEOMETRYTYPE' => 33, + 'GEOMFROMTEXT' => 33, 'GROUP_CONCAT' => 33, 'IS_FREE_LOCK' => 33, 'IS_USED_LOCK' => 33, + 'JSON_EXTRACT' => 33, 'JSON_REPLACE' => 33, 'JSON_UNQUOTE' => 33, 'LINEFROMTEXT' => 33, + 'MBRCOVEREDBY' => 33, 'MLINEFROMWKB' => 33, 'MPOLYFROMWKB' => 33, 'MULTIPOLYGON' => 33, + 'OCTET_LENGTH' => 33, 'OLD_PASSWORD' => 33, 'POINTFROMWKB' => 33, 'POLYFROMTEXT' => 33, + 'RANDOM_BYTES' => 33, 'RELEASE_LOCK' => 33, 'SESSION_USER' => 33, 'ST_ASGEOJSON' => 33, + 'ST_DIMENSION' => 33, 'ST_GEOMETRYN' => 33, 'ST_NUMPOINTS' => 33, 'TIMESTAMPADD' => 33, + 'CONNECTION_ID' => 33, 'FROM_UNIXTIME' => 33, 'GTID_SUBTRACT' => 33, 'INTERIORRINGN' => 33, + 'JSON_CONTAINS' => 33, 'MBRINTERSECTS' => 33, 'MLINEFROMTEXT' => 33, 'MPOINTFROMWKB' => 33, + 'MPOLYFROMTEXT' => 33, 'NUMGEOMETRIES' => 33, 'POINTFROMTEXT' => 33, 'ST_CONVEXHULL' => 33, + 'ST_DIFFERENCE' => 33, 'ST_INTERSECTS' => 33, 'ST_STARTPOINT' => 33, 'TIMESTAMPDIFF' => 33, + 'WEIGHT_STRING' => 33, + 'IS_IPV4_COMPAT' => 33, 'IS_IPV4_MAPPED' => 33, 'LAST_INSERT_ID' => 33, 'MPOINTFROMTEXT' => 33, + 'POLYGONFROMWKB' => 33, 'ST_GEOMFROMWKB' => 33, 'ST_LINEFROMWKB' => 33, 'ST_POLYFROMWKB' => 33, + 'UNIX_TIMESTAMP' => 33, + 'GEOMCOLLFROMWKB' => 33, 'MASTER_POS_WAIT' => 33, 'POLYGONFROMTEXT' => 33, 'ST_EXTERIORRING' => 33, + 'ST_GEOMETRYTYPE' => 33, 'ST_GEOMFROMTEXT' => 33, 'ST_INTERSECTION' => 33, 'ST_LINEFROMTEXT' => 33, + 'ST_MAKEENVELOPE' => 33, 'ST_MLINEFROMWKB' => 33, 'ST_MPOLYFROMWKB' => 33, 'ST_POINTFROMWKB' => 33, + 'ST_POLYFROMTEXT' => 33, 'SUBSTRING_INDEX' => 33, + 'CHARACTER_LENGTH' => 33, 'GEOMCOLLFROMTEXT' => 33, 'GEOMETRYFROMTEXT' => 33, + 'JSON_MERGE_PATCH' => 33, 'NUMINTERIORRINGS' => 33, 'ST_INTERIORRINGN' => 33, + 'ST_MLINEFROMTEXT' => 33, 'ST_MPOINTFROMWKB' => 33, 'ST_MPOLYFROMTEXT' => 33, + 'ST_NUMGEOMETRIES' => 33, 'ST_POINTFROMTEXT' => 33, 'ST_SYMDIFFERENCE' => 33, + 'JSON_ARRAY_APPEND' => 33, 'JSON_ARRAY_INSERT' => 33, 'JSON_STORAGE_FREE' => 33, + 'JSON_STORAGE_SIZE' => 33, 'LINESTRINGFROMWKB' => 33, 'MULTIPOINTFROMWKB' => 33, + 'RELEASE_ALL_LOCKS' => 33, 'ST_LATFROMGEOHASH' => 33, 'ST_MPOINTFROMTEXT' => 33, + 'ST_POLYGONFROMWKB' => 33, + 'JSON_CONTAINS_PATH' => 33, 'MULTIPOINTFROMTEXT' => 33, 'ST_BUFFER_STRATEGY' => 33, + 'ST_DISTANCE_SPHERE' => 33, 'ST_GEOMCOLLFROMTXT' => 33, 'ST_GEOMCOLLFROMWKB' => 33, + 'ST_GEOMFROMGEOJSON' => 33, 'ST_LONGFROMGEOHASH' => 33, 'ST_POLYGONFROMTEXT' => 33, + 'JSON_MERGE_PRESERVE' => 33, 'MULTIPOLYGONFROMWKB' => 33, 'ST_GEOMCOLLFROMTEXT' => 33, + 'ST_GEOMETRYFROMTEXT' => 33, 'ST_NUMINTERIORRINGS' => 33, 'ST_POINTFROMGEOHASH' => 33, + 'UNCOMPRESSED_LENGTH' => 33, + 'MULTIPOLYGONFROMTEXT' => 33, 'ST_LINESTRINGFROMWKB' => 33, 'ST_MULTIPOINTFROMWKB' => 33, + 'ST_MULTIPOINTFROMTEXT' => 33, + 'MULTILINESTRINGFROMWKB' => 33, 'ST_MULTIPOLYGONFROMWKB' => 33, + 'MULTILINESTRINGFROMTEXT' => 33, 'ST_MULTIPOLYGONFROMTEXT' => 33, + 'GEOMETRYCOLLECTIONFROMWKB' => 33, 'ST_MULTILINESTRINGFROMWKB' => 33, + 'GEOMETRYCOLLECTIONFROMTEXT' => 33, 'ST_MULTILINESTRINGFROMTEXT' => 33, 'VALIDATE_PASSWORD_STRENGTH' => 33, + 'WAIT_FOR_EXECUTED_GTID_SET' => 33, + 'ST_GEOMETRYCOLLECTIONFROMWKB' => 33, + 'ST_GEOMETRYCOLLECTIONFROMTEXT' => 33, + 'WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS' => 33, + + 'IF' => 35, 'IN' => 35, + 'MOD' => 35, + 'LEFT' => 35, + 'MATCH' => 35, 'RIGHT' => 35, + 'EXISTS' => 35, 'INSERT' => 35, 'REPEAT' => 35, 'SCHEMA' => 35, 'VALUES' => 35, + 'CONVERT' => 35, 'DEFAULT' => 35, 'REPLACE' => 35, + 'DATABASE' => 35, 'UTC_DATE' => 35, 'UTC_TIME' => 35, + 'LOCALTIME' => 35, + 'CURRENT_DATE' => 35, 'CURRENT_TIME' => 35, 'CURRENT_USER' => 35, + 'UTC_TIMESTAMP' => 35, + 'LOCALTIMESTAMP' => 35, + 'CURRENT_TIMESTAMP' => 35, + + 'NOT IN' => 39, + + 'DATE' => 41, 'TIME' => 41, 'YEAR' => 41, + 'POINT' => 41, + 'POLYGON' => 41, + 'TIMESTAMP' => 41, + 'LINESTRING' => 41, + 'MULTILINESTRING' => 41, + 'GEOMETRYCOLLECTION' => 41, + + 'CHAR' => 43, + 'BINARY' => 43, + 'INTERVAL' => 43, + ]; +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Contexts/ContextMariaDb100600.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Contexts/ContextMariaDb100600.php new file mode 100644 index 0000000000..4691859dab --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Contexts/ContextMariaDb100600.php @@ -0,0 +1,347 @@ + + * @phpstan-var non-empty-array + */ + public static $KEYWORDS = [ + 'AT' => 1, 'DO' => 1, 'IO' => 1, 'NO' => 1, 'XA' => 1, + 'ANY' => 1, 'CPU' => 1, 'END' => 1, 'IPC' => 1, 'NDB' => 1, 'NEW' => 1, + 'ONE' => 1, 'ROW' => 1, 'XID' => 1, + 'BOOL' => 1, 'BYTE' => 1, 'CODE' => 1, 'CUBE' => 1, 'DATA' => 1, 'DISK' => 1, + 'ENDS' => 1, 'FAST' => 1, 'FILE' => 1, 'FULL' => 1, 'HASH' => 1, 'HELP' => 1, + 'HOST' => 1, 'LAST' => 1, 'LESS' => 1, 'LIST' => 1, 'LOGS' => 1, 'MODE' => 1, + 'NAME' => 1, 'NEXT' => 1, 'NONE' => 1, 'ONLY' => 1, 'OPEN' => 1, 'PAGE' => 1, + 'PORT' => 1, 'PREV' => 1, 'SLOW' => 1, 'SOME' => 1, 'STOP' => 1, 'THAN' => 1, + 'TYPE' => 1, 'VIEW' => 1, 'WAIT' => 1, 'WORK' => 1, 'X509' => 1, + 'AFTER' => 1, 'BEGIN' => 1, 'BLOCK' => 1, 'BTREE' => 1, 'CACHE' => 1, + 'CHAIN' => 1, 'CLOSE' => 1, 'ERROR' => 1, 'EVENT' => 1, 'EVERY' => 1, + 'FIRST' => 1, 'FIXED' => 1, 'FLUSH' => 1, 'FOUND' => 1, 'HOSTS' => 1, + 'LEVEL' => 1, 'LOCAL' => 1, 'LOCKS' => 1, 'MERGE' => 1, 'MUTEX' => 1, + 'NAMES' => 1, 'NCHAR' => 1, 'NEVER' => 1, 'OWNER' => 1, 'PHASE' => 1, + 'PROXY' => 1, 'QUERY' => 1, 'QUICK' => 1, 'RELAY' => 1, 'RESET' => 1, + 'RTREE' => 1, 'SHARE' => 1, 'SLAVE' => 1, 'START' => 1, 'SUPER' => 1, + 'SWAPS' => 1, 'TYPES' => 1, 'UNTIL' => 1, 'VALUE' => 1, + 'ACTION' => 1, 'ALWAYS' => 1, 'BACKUP' => 1, 'BINLOG' => 1, 'CIPHER' => 1, + 'CLIENT' => 1, 'COMMIT' => 1, 'ENABLE' => 1, 'ENGINE' => 1, 'ERRORS' => 1, + 'ESCAPE' => 1, 'EVENTS' => 1, 'EXPIRE' => 1, 'EXPORT' => 1, 'FAULTS' => 1, + 'FIELDS' => 1, 'FILTER' => 1, 'GLOBAL' => 1, 'GRANTS' => 1, 'IMPORT' => 1, + 'ISSUER' => 1, 'LEAVES' => 1, 'MASTER' => 1, 'MEDIUM' => 1, 'MEMORY' => 1, + 'MODIFY' => 1, 'NUMBER' => 1, 'OFFSET' => 1, 'PARSER' => 1, 'PLUGIN' => 1, + 'RELOAD' => 1, 'REMOVE' => 1, 'REPAIR' => 1, 'RESUME' => 1, 'ROLLUP' => 1, + 'SERVER' => 1, 'SIGNED' => 1, 'SIMPLE' => 1, 'SOCKET' => 1, 'SONAME' => 1, + 'SOUNDS' => 1, 'SOURCE' => 1, 'STARTS' => 1, 'STATUS' => 1, 'STRING' => 1, + 'TABLES' => 1, + 'ACCOUNT' => 1, 'ANALYSE' => 1, 'CHANGED' => 1, 'CHANNEL' => 1, 'COLUMNS' => 1, + 'COMMENT' => 1, 'COMPACT' => 1, 'CONTEXT' => 1, 'CURRENT' => 1, 'DEFINER' => 1, + 'DISABLE' => 1, 'DISCARD' => 1, 'DYNAMIC' => 1, 'ENGINES' => 1, 'EXECUTE' => 1, + 'FOLLOWS' => 1, 'GENERAL' => 1, 'HANDLER' => 1, 'INDEXES' => 1, 'INSTALL' => 1, + 'INVOKER' => 1, 'LOGFILE' => 1, 'MIGRATE' => 1, 'NO_WAIT' => 1, 'OPTIONS' => 1, + 'PARTIAL' => 1, 'PLUGINS' => 1, 'PREPARE' => 1, 'PROFILE' => 1, 'REBUILD' => 1, + 'RECOVER' => 1, 'RESTORE' => 1, 'RETURNS' => 1, 'ROUTINE' => 1, 'SESSION' => 1, + 'STACKED' => 1, 'STORAGE' => 1, 'SUBJECT' => 1, 'SUSPEND' => 1, 'UNICODE' => 1, + 'UNKNOWN' => 1, 'UPGRADE' => 1, 'USE_FRM' => 1, 'WITHOUT' => 1, 'WRAPPER' => 1, + 'CASCADED' => 1, 'CHECKSUM' => 1, 'DATAFILE' => 1, 'DUMPFILE' => 1, 'EXCHANGE' => 1, + 'EXTENDED' => 1, 'FUNCTION' => 1, 'LANGUAGE' => 1, 'MAX_ROWS' => 1, 'MAX_SIZE' => 1, + 'MIN_ROWS' => 1, 'NATIONAL' => 1, 'NVARCHAR' => 1, 'PRECEDES' => 1, 'PRESERVE' => 1, + 'PROFILES' => 1, 'REDOFILE' => 1, 'RELAYLOG' => 1, 'ROLLBACK' => 1, 'SCHEDULE' => 1, + 'SECURITY' => 1, 'SEQUENCE' => 1, 'SHUTDOWN' => 1, 'SNAPSHOT' => 1, 'SWITCHES' => 1, + 'TRIGGERS' => 1, 'UNDOFILE' => 1, 'WARNINGS' => 1, + 'AGGREGATE' => 1, 'ALGORITHM' => 1, 'COMMITTED' => 1, 'DIRECTORY' => 1, + 'DUPLICATE' => 1, 'EXPANSION' => 1, 'INVISIBLE' => 1, 'IO_THREAD' => 1, + 'ISOLATION' => 1, 'NODEGROUP' => 1, 'PACK_KEYS' => 1, 'READ_ONLY' => 1, + 'REDUNDANT' => 1, 'SAVEPOINT' => 1, 'SQL_CACHE' => 1, 'TEMPORARY' => 1, + 'TEMPTABLE' => 1, 'UNDEFINED' => 1, 'UNINSTALL' => 1, 'VARIABLES' => 1, + 'COMPLETION' => 1, 'COMPRESSED' => 1, 'CONCURRENT' => 1, 'CONNECTION' => 1, + 'CONSISTENT' => 1, 'DEALLOCATE' => 1, 'IDENTIFIED' => 1, 'MASTER_SSL' => 1, + 'NDBCLUSTER' => 1, 'PARTITIONS' => 1, 'PERSISTENT' => 1, 'PLUGIN_DIR' => 1, + 'PRIVILEGES' => 1, 'REORGANIZE' => 1, 'REPEATABLE' => 1, 'ROW_FORMAT' => 1, + 'SQL_THREAD' => 1, 'TABLESPACE' => 1, 'TABLE_NAME' => 1, 'VALIDATION' => 1, + 'COLUMN_NAME' => 1, 'COMPRESSION' => 1, 'CURSOR_NAME' => 1, 'DIAGNOSTICS' => 1, + 'EXTENT_SIZE' => 1, 'MASTER_HOST' => 1, 'MASTER_PORT' => 1, 'MASTER_USER' => 1, + 'MYSQL_ERRNO' => 1, 'NONBLOCKING' => 1, 'PROCESSLIST' => 1, 'REPLICATION' => 1, + 'SCHEMA_NAME' => 1, 'SQL_TSI_DAY' => 1, 'TRANSACTION' => 1, 'UNCOMMITTED' => 1, + 'CATALOG_NAME' => 1, 'CLASS_ORIGIN' => 1, 'DEFAULT_AUTH' => 1, 'DES_KEY_FILE' => 1, + 'INITIAL_SIZE' => 1, 'MASTER_DELAY' => 1, 'MESSAGE_TEXT' => 1, 'PARTITIONING' => 1, + 'RELAY_THREAD' => 1, 'SERIALIZABLE' => 1, 'SQL_NO_CACHE' => 1, 'SQL_TSI_HOUR' => 1, + 'SQL_TSI_WEEK' => 1, 'SQL_TSI_YEAR' => 1, 'SUBPARTITION' => 1, + 'COLUMN_FORMAT' => 1, 'INSERT_METHOD' => 1, 'MASTER_SSL_CA' => 1, 'RELAY_LOG_POS' => 1, + 'SQL_TSI_MONTH' => 1, 'SUBPARTITIONS' => 1, + 'AUTO_INCREMENT' => 1, 'AVG_ROW_LENGTH' => 1, 'KEY_BLOCK_SIZE' => 1, 'MASTER_LOG_POS' => 1, + 'MASTER_SSL_CRL' => 1, 'MASTER_SSL_KEY' => 1, 'RELAY_LOG_FILE' => 1, 'SQL_TSI_MINUTE' => 1, + 'SQL_TSI_SECOND' => 1, 'TABLE_CHECKSUM' => 1, 'USER_RESOURCES' => 1, + 'AUTOEXTEND_SIZE' => 1, 'CONSTRAINT_NAME' => 1, 'DELAY_KEY_WRITE' => 1, 'FILE_BLOCK_SIZE' => 1, + 'MASTER_LOG_FILE' => 1, 'MASTER_PASSWORD' => 1, 'MASTER_SSL_CERT' => 1, 'PARSE_GCOL_EXPR' => 1, + 'REPLICATE_DO_DB' => 1, 'SQL_AFTER_GTIDS' => 1, 'SQL_TSI_QUARTER' => 1, 'SUBCLASS_ORIGIN' => 1, + 'MASTER_SERVER_ID' => 1, 'REDO_BUFFER_SIZE' => 1, 'SQL_BEFORE_GTIDS' => 1, + 'STATS_PERSISTENT' => 1, 'UNDO_BUFFER_SIZE' => 1, + 'CONSTRAINT_SCHEMA' => 1, 'GROUP_REPLICATION' => 1, 'IGNORE_SERVER_IDS' => 1, + 'MASTER_SSL_CAPATH' => 1, 'MASTER_SSL_CIPHER' => 1, 'RETURNED_SQLSTATE' => 1, + 'SQL_BUFFER_RESULT' => 1, 'STATS_AUTO_RECALC' => 1, + 'CONSTRAINT_CATALOG' => 1, 'MASTER_RETRY_COUNT' => 1, 'MASTER_SSL_CRLPATH' => 1, + 'MAX_STATEMENT_TIME' => 1, 'REPLICATE_DO_TABLE' => 1, 'SQL_AFTER_MTS_GAPS' => 1, + 'STATS_SAMPLE_PAGES' => 1, + 'REPLICATE_IGNORE_DB' => 1, + 'MASTER_AUTO_POSITION' => 1, 'MASTER_CONNECT_RETRY' => 1, 'MAX_QUERIES_PER_HOUR' => 1, + 'MAX_UPDATES_PER_HOUR' => 1, 'MAX_USER_CONNECTIONS' => 1, 'REPLICATE_REWRITE_DB' => 1, + 'REPLICATE_IGNORE_TABLE' => 1, + 'MASTER_HEARTBEAT_PERIOD' => 1, 'REPLICATE_WILD_DO_TABLE' => 1, + 'MAX_CONNECTIONS_PER_HOUR' => 1, + 'REPLICATE_WILD_IGNORE_TABLE' => 1, + + 'AS' => 3, 'BY' => 3, 'IS' => 3, 'ON' => 3, 'OR' => 3, 'TO' => 3, + 'ADD' => 3, 'ALL' => 3, 'AND' => 3, 'ASC' => 3, 'DEC' => 3, 'DIV' => 3, + 'FOR' => 3, 'GET' => 3, 'NOT' => 3, 'OUT' => 3, 'SQL' => 3, 'SSL' => 3, + 'USE' => 3, 'XOR' => 3, + 'BOTH' => 3, 'CALL' => 3, 'CASE' => 3, 'DESC' => 3, 'DROP' => 3, 'DUAL' => 3, + 'EACH' => 3, 'ELSE' => 3, 'EXIT' => 3, 'FROM' => 3, 'INT1' => 3, 'INT2' => 3, + 'INT3' => 3, 'INT4' => 3, 'INT8' => 3, 'INTO' => 3, 'JOIN' => 3, 'KEYS' => 3, + 'KILL' => 3, 'LIKE' => 3, 'LOAD' => 3, 'LOCK' => 3, 'LONG' => 3, 'LOOP' => 3, + 'NULL' => 3, 'OVER' => 3, 'READ' => 3, 'ROWS' => 3, 'SHOW' => 3, 'THEN' => 3, + 'TRUE' => 3, 'UNDO' => 3, 'WHEN' => 3, 'WITH' => 3, + 'ALTER' => 3, 'CHECK' => 3, 'CROSS' => 3, 'FALSE' => 3, 'FETCH' => 3, + 'FORCE' => 3, 'GRANT' => 3, 'GROUP' => 3, 'INNER' => 3, 'INOUT' => 3, + 'LEAVE' => 3, 'LIMIT' => 3, 'LINES' => 3, 'ORDER' => 3, 'OUTER' => 3, + 'PURGE' => 3, 'RANGE' => 3, 'READS' => 3, 'RLIKE' => 3, 'TABLE' => 3, + 'UNION' => 3, 'USAGE' => 3, 'USING' => 3, 'WHERE' => 3, 'WHILE' => 3, + 'WRITE' => 3, + 'BEFORE' => 3, 'CHANGE' => 3, 'COLUMN' => 3, 'CREATE' => 3, 'CURSOR' => 3, + 'DELETE' => 3, 'ELSEIF' => 3, 'EXCEPT' => 3, 'FLOAT4' => 3, 'FLOAT8' => 3, + 'HAVING' => 3, 'IGNORE' => 3, 'INFILE' => 3, 'LINEAR' => 3, 'OPTION' => 3, + 'REGEXP' => 3, 'RENAME' => 3, 'RETURN' => 3, 'REVOKE' => 3, 'SELECT' => 3, + 'SIGNAL' => 3, 'STORED' => 3, 'UNLOCK' => 3, 'UPDATE' => 3, + 'ANALYZE' => 3, 'BETWEEN' => 3, 'CASCADE' => 3, 'COLLATE' => 3, 'DECLARE' => 3, + 'DELAYED' => 3, 'ESCAPED' => 3, 'EXPLAIN' => 3, 'FOREIGN' => 3, 'ITERATE' => 3, + 'LEADING' => 3, 'NATURAL' => 3, 'OUTFILE' => 3, 'PRIMARY' => 3, 'RELEASE' => 3, + 'REQUIRE' => 3, 'SCHEMAS' => 3, 'TRIGGER' => 3, 'VARYING' => 3, 'VIRTUAL' => 3, + 'CONTINUE' => 3, 'DAY_HOUR' => 3, 'DESCRIBE' => 3, 'DISTINCT' => 3, 'ENCLOSED' => 3, + 'MAXVALUE' => 3, 'MODIFIES' => 3, 'OPTIMIZE' => 3, 'RESIGNAL' => 3, 'RESTRICT' => 3, + 'SPECIFIC' => 3, 'SQLSTATE' => 3, 'STARTING' => 3, 'TRAILING' => 3, 'UNSIGNED' => 3, + 'ZEROFILL' => 3, + 'CONDITION' => 3, 'DATABASES' => 3, 'GENERATED' => 3, 'INTERSECT' => 3, + 'MIDDLEINT' => 3, 'PARTITION' => 3, 'PRECISION' => 3, 'PROCEDURE' => 3, + 'RECURSIVE' => 3, 'SENSITIVE' => 3, 'SEPARATOR' => 3, + 'ACCESSIBLE' => 3, 'ASENSITIVE' => 3, 'CONSTRAINT' => 3, 'DAY_MINUTE' => 3, + 'DAY_SECOND' => 3, 'OPTIONALLY' => 3, 'READ_WRITE' => 3, 'REFERENCES' => 3, + 'SQLWARNING' => 3, 'TERMINATED' => 3, 'YEAR_MONTH' => 3, + 'DISTINCTROW' => 3, 'HOUR_MINUTE' => 3, 'HOUR_SECOND' => 3, 'INSENSITIVE' => 3, + 'MASTER_BIND' => 3, + 'LOW_PRIORITY' => 3, 'SQLEXCEPTION' => 3, 'VARCHARACTER' => 3, + 'DETERMINISTIC' => 3, 'HIGH_PRIORITY' => 3, 'MINUTE_SECOND' => 3, 'STRAIGHT_JOIN' => 3, + 'IO_AFTER_GTIDS' => 3, 'SQL_BIG_RESULT' => 3, + 'DAY_MICROSECOND' => 3, 'IO_BEFORE_GTIDS' => 3, 'OPTIMIZER_COSTS' => 3, + 'HOUR_MICROSECOND' => 3, 'SQL_SMALL_RESULT' => 3, + 'MINUTE_MICROSECOND' => 3, 'NO_WRITE_TO_BINLOG' => 3, 'SECOND_MICROSECOND' => 3, + 'SQL_CALC_FOUND_ROWS' => 3, + 'MASTER_SSL_VERIFY_SERVER_CERT' => 3, + + 'GROUP BY' => 7, 'NOT NULL' => 7, 'ORDER BY' => 7, 'SET NULL' => 7, + 'AND CHAIN' => 7, 'FULL JOIN' => 7, 'IF EXISTS' => 7, 'LEFT JOIN' => 7, + 'LESS THAN' => 7, 'LOAD DATA' => 7, 'NO ACTION' => 7, 'ON DELETE' => 7, + 'ON UPDATE' => 7, 'UNION ALL' => 7, + 'CROSS JOIN' => 7, 'ESCAPED BY' => 7, 'FOR UPDATE' => 7, 'INNER JOIN' => 7, + 'LINEAR KEY' => 7, 'NO RELEASE' => 7, 'OR REPLACE' => 7, 'RIGHT JOIN' => 7, + 'ENCLOSED BY' => 7, 'LINEAR HASH' => 7, 'STARTING BY' => 7, + 'AND NO CHAIN' => 7, 'FOR EACH ROW' => 7, 'NATURAL JOIN' => 7, 'PARTITION BY' => 7, + 'SET PASSWORD' => 7, 'SQL SECURITY' => 7, + 'CHARACTER SET' => 7, 'IF NOT EXISTS' => 7, 'TERMINATED BY' => 7, + 'DATA DIRECTORY' => 7, 'UNION DISTINCT' => 7, + 'DEFAULT CHARSET' => 7, 'DEFAULT COLLATE' => 7, 'FULL OUTER JOIN' => 7, 'INDEX DIRECTORY' => 7, + 'LEFT OUTER JOIN' => 7, 'SUBPARTITION BY' => 7, + 'GENERATED ALWAYS' => 7, 'RIGHT OUTER JOIN' => 7, + 'NATURAL LEFT JOIN' => 7, 'START TRANSACTION' => 7, + 'LOCK IN SHARE MODE' => 7, 'NATURAL RIGHT JOIN' => 7, 'SELECT TRANSACTION' => 7, + 'DEFAULT CHARACTER SET' => 7, + 'NATURAL LEFT OUTER JOIN' => 7, + 'NATURAL RIGHT OUTER JOIN' => 7, 'WITH CONSISTENT SNAPSHOT' => 7, + + 'BIT' => 9, 'XML' => 9, + 'ENUM' => 9, 'JSON' => 9, 'TEXT' => 9, + 'ARRAY' => 9, + 'SERIAL' => 9, + 'BOOLEAN' => 9, + 'DATETIME' => 9, 'GEOMETRY' => 9, 'MULTISET' => 9, + 'MULTILINEPOINT' => 9, + 'MULTILINEPOLYGON' => 9, + + 'INT' => 11, 'SET' => 11, + 'BLOB' => 11, 'REAL' => 11, + 'FLOAT' => 11, + 'BIGINT' => 11, 'DOUBLE' => 11, + 'DECIMAL' => 11, 'INTEGER' => 11, 'NUMERIC' => 11, 'TINYINT' => 11, 'VARCHAR' => 11, + 'LONGBLOB' => 11, 'LONGTEXT' => 11, 'SMALLINT' => 11, 'TINYBLOB' => 11, 'TINYTEXT' => 11, + 'CHARACTER' => 11, 'MEDIUMINT' => 11, 'VARBINARY' => 11, + 'MEDIUMBLOB' => 11, 'MEDIUMTEXT' => 11, + + 'BINARY VARYING' => 15, + + 'KEY' => 19, + 'INDEX' => 19, + 'UNIQUE' => 19, + 'SPATIAL' => 19, + 'FULLTEXT' => 19, + + 'INDEX KEY' => 23, + 'UNIQUE KEY' => 23, + 'FOREIGN KEY' => 23, 'PRIMARY KEY' => 23, 'SPATIAL KEY' => 23, + 'FULLTEXT KEY' => 23, 'UNIQUE INDEX' => 23, + 'SPATIAL INDEX' => 23, + 'FULLTEXT INDEX' => 23, + + 'X' => 33, 'Y' => 33, + 'LN' => 33, 'PI' => 33, + 'ABS' => 33, 'AVG' => 33, 'BIN' => 33, 'COS' => 33, 'COT' => 33, 'DAY' => 33, + 'ELT' => 33, 'EXP' => 33, 'HEX' => 33, 'LOG' => 33, 'MAX' => 33, 'MD5' => 33, + 'MID' => 33, 'MIN' => 33, 'NOW' => 33, 'OCT' => 33, 'ORD' => 33, 'POW' => 33, + 'SHA' => 33, 'SIN' => 33, 'STD' => 33, 'SUM' => 33, 'TAN' => 33, + 'ACOS' => 33, 'AREA' => 33, 'ASIN' => 33, 'ATAN' => 33, 'CAST' => 33, 'CEIL' => 33, + 'CONV' => 33, 'HOUR' => 33, 'LOG2' => 33, 'LPAD' => 33, 'RAND' => 33, 'RPAD' => 33, + 'SHA1' => 33, 'SHA2' => 33, 'SIGN' => 33, 'SQRT' => 33, 'SRID' => 33, 'ST_X' => 33, + 'ST_Y' => 33, 'TRIM' => 33, 'USER' => 33, 'UUID' => 33, 'WEEK' => 33, + 'ASCII' => 33, 'ASWKB' => 33, 'ASWKT' => 33, 'ATAN2' => 33, 'COUNT' => 33, + 'CRC32' => 33, 'FIELD' => 33, 'FLOOR' => 33, 'INSTR' => 33, 'LCASE' => 33, + 'LEAST' => 33, 'LOG10' => 33, 'LOWER' => 33, 'LTRIM' => 33, 'MONTH' => 33, + 'POWER' => 33, 'QUOTE' => 33, 'ROUND' => 33, 'RTRIM' => 33, 'SLEEP' => 33, + 'SPACE' => 33, 'UCASE' => 33, 'UNHEX' => 33, 'UPPER' => 33, + 'ASTEXT' => 33, 'BIT_OR' => 33, 'BUFFER' => 33, 'CONCAT' => 33, 'DECODE' => 33, + 'ENCODE' => 33, 'EQUALS' => 33, 'FORMAT' => 33, 'IFNULL' => 33, 'ISNULL' => 33, + 'LENGTH' => 33, 'LOCATE' => 33, 'MINUTE' => 33, 'NULLIF' => 33, 'POINTN' => 33, + 'SECOND' => 33, 'STDDEV' => 33, 'STRCMP' => 33, 'SUBSTR' => 33, 'WITHIN' => 33, + 'ADDDATE' => 33, 'ADDTIME' => 33, 'AGAINST' => 33, 'BIT_AND' => 33, 'BIT_XOR' => 33, + 'CEILING' => 33, 'CHARSET' => 33, 'CROSSES' => 33, 'CURDATE' => 33, 'CURTIME' => 33, + 'DAYNAME' => 33, 'DEGREES' => 33, 'ENCRYPT' => 33, 'EXTRACT' => 33, 'GLENGTH' => 33, + 'ISEMPTY' => 33, 'IS_IPV4' => 33, 'IS_IPV6' => 33, 'QUARTER' => 33, 'RADIANS' => 33, + 'REVERSE' => 33, 'SOUNDEX' => 33, 'ST_AREA' => 33, 'ST_SRID' => 33, 'SUBDATE' => 33, + 'SUBTIME' => 33, 'SYSDATE' => 33, 'TOUCHES' => 33, 'TO_DAYS' => 33, 'VAR_POP' => 33, + 'VERSION' => 33, 'WEEKDAY' => 33, + 'ASBINARY' => 33, 'CENTROID' => 33, 'COALESCE' => 33, 'COMPRESS' => 33, 'CONTAINS' => 33, + 'DATEDIFF' => 33, 'DATE_ADD' => 33, 'DATE_SUB' => 33, 'DISJOINT' => 33, 'DISTANCE' => 33, + 'ENDPOINT' => 33, 'ENVELOPE' => 33, 'GET_LOCK' => 33, 'GREATEST' => 33, 'ISCLOSED' => 33, + 'ISSIMPLE' => 33, 'JSON_SET' => 33, 'MAKEDATE' => 33, 'MAKETIME' => 33, 'MAKE_SET' => 33, + 'MBREQUAL' => 33, 'OVERLAPS' => 33, 'PASSWORD' => 33, 'POSITION' => 33, 'ST_ASWKB' => 33, + 'ST_ASWKT' => 33, 'ST_UNION' => 33, 'TIMEDIFF' => 33, 'TRUNCATE' => 33, 'VARIANCE' => 33, + 'VAR_SAMP' => 33, 'YEARWEEK' => 33, + 'ANY_VALUE' => 33, 'BENCHMARK' => 33, 'BIT_COUNT' => 33, 'COLLATION' => 33, + 'CONCAT_WS' => 33, 'DAYOFWEEK' => 33, 'DAYOFYEAR' => 33, 'DIMENSION' => 33, + 'FROM_DAYS' => 33, 'GEOMETRYN' => 33, 'INET_ATON' => 33, 'INET_NTOA' => 33, + 'JSON_KEYS' => 33, 'JSON_TYPE' => 33, 'LOAD_FILE' => 33, 'MBRCOVERS' => 33, + 'MBREQUALS' => 33, 'MBRWITHIN' => 33, 'MONTHNAME' => 33, 'NUMPOINTS' => 33, + 'ROW_COUNT' => 33, 'ST_ASTEXT' => 33, 'ST_BUFFER' => 33, 'ST_EQUALS' => 33, + 'ST_LENGTH' => 33, 'ST_POINTN' => 33, 'ST_WITHIN' => 33, 'SUBSTRING' => 33, + 'TO_BASE64' => 33, 'UPDATEXML' => 33, + 'BIT_LENGTH' => 33, 'CONVERT_TZ' => 33, 'CONVEXHULL' => 33, 'DAYOFMONTH' => 33, + 'EXPORT_SET' => 33, 'FOUND_ROWS' => 33, 'GET_FORMAT' => 33, 'INET6_ATON' => 33, + 'INET6_NTOA' => 33, 'INTERSECTS' => 33, 'JSON_ARRAY' => 33, 'JSON_DEPTH' => 33, + 'JSON_MERGE' => 33, 'JSON_QUOTE' => 33, 'JSON_VALID' => 33, 'MBRTOUCHES' => 33, + 'MULTIPOINT' => 33, 'NAME_CONST' => 33, 'PERIOD_ADD' => 33, 'STARTPOINT' => 33, + 'STDDEV_POP' => 33, 'ST_CROSSES' => 33, 'ST_GEOHASH' => 33, 'ST_ISEMPTY' => 33, + 'ST_ISVALID' => 33, 'ST_TOUCHES' => 33, 'TO_SECONDS' => 33, 'UNCOMPRESS' => 33, + 'UUID_SHORT' => 33, 'WEEKOFYEAR' => 33, + 'AES_DECRYPT' => 33, 'AES_ENCRYPT' => 33, 'CHAR_LENGTH' => 33, 'DATE_FORMAT' => 33, + 'DES_DECRYPT' => 33, 'DES_ENCRYPT' => 33, 'FIND_IN_SET' => 33, 'FROM_BASE64' => 33, + 'GEOMFROMWKB' => 33, 'GTID_SUBSET' => 33, 'JSON_INSERT' => 33, 'JSON_LENGTH' => 33, + 'JSON_OBJECT' => 33, 'JSON_PRETTY' => 33, 'JSON_REMOVE' => 33, 'JSON_SEARCH' => 33, + 'LINEFROMWKB' => 33, 'MBRCONTAINS' => 33, 'MBRDISJOINT' => 33, 'MBROVERLAPS' => 33, + 'MICROSECOND' => 33, 'PERIOD_DIFF' => 33, 'POLYFROMWKB' => 33, 'SEC_TO_TIME' => 33, + 'STDDEV_SAMP' => 33, 'STR_TO_DATE' => 33, 'ST_ASBINARY' => 33, 'ST_CENTROID' => 33, + 'ST_CONTAINS' => 33, 'ST_DISJOINT' => 33, 'ST_DISTANCE' => 33, 'ST_ENDPOINT' => 33, + 'ST_ENVELOPE' => 33, 'ST_ISCLOSED' => 33, 'ST_ISSIMPLE' => 33, 'ST_OVERLAPS' => 33, + 'ST_SIMPLIFY' => 33, 'ST_VALIDATE' => 33, 'SYSTEM_USER' => 33, 'TIME_FORMAT' => 33, + 'TIME_TO_SEC' => 33, + 'COERCIBILITY' => 33, 'EXTERIORRING' => 33, 'EXTRACTVALUE' => 33, 'GEOMETRYTYPE' => 33, + 'GEOMFROMTEXT' => 33, 'GROUP_CONCAT' => 33, 'IS_FREE_LOCK' => 33, 'IS_USED_LOCK' => 33, + 'JSON_EXTRACT' => 33, 'JSON_REPLACE' => 33, 'JSON_UNQUOTE' => 33, 'LINEFROMTEXT' => 33, + 'MBRCOVEREDBY' => 33, 'MLINEFROMWKB' => 33, 'MPOLYFROMWKB' => 33, 'MULTIPOLYGON' => 33, + 'OCTET_LENGTH' => 33, 'OLD_PASSWORD' => 33, 'POINTFROMWKB' => 33, 'POLYFROMTEXT' => 33, + 'RANDOM_BYTES' => 33, 'RELEASE_LOCK' => 33, 'SESSION_USER' => 33, 'ST_ASGEOJSON' => 33, + 'ST_DIMENSION' => 33, 'ST_GEOMETRYN' => 33, 'ST_NUMPOINTS' => 33, 'TIMESTAMPADD' => 33, + 'CONNECTION_ID' => 33, 'FROM_UNIXTIME' => 33, 'GTID_SUBTRACT' => 33, 'INTERIORRINGN' => 33, + 'JSON_CONTAINS' => 33, 'MBRINTERSECTS' => 33, 'MLINEFROMTEXT' => 33, 'MPOINTFROMWKB' => 33, + 'MPOLYFROMTEXT' => 33, 'NUMGEOMETRIES' => 33, 'POINTFROMTEXT' => 33, 'ST_CONVEXHULL' => 33, + 'ST_DIFFERENCE' => 33, 'ST_INTERSECTS' => 33, 'ST_STARTPOINT' => 33, 'TIMESTAMPDIFF' => 33, + 'WEIGHT_STRING' => 33, + 'IS_IPV4_COMPAT' => 33, 'IS_IPV4_MAPPED' => 33, 'LAST_INSERT_ID' => 33, 'MPOINTFROMTEXT' => 33, + 'POLYGONFROMWKB' => 33, 'ST_GEOMFROMWKB' => 33, 'ST_LINEFROMWKB' => 33, 'ST_POLYFROMWKB' => 33, + 'UNIX_TIMESTAMP' => 33, + 'GEOMCOLLFROMWKB' => 33, 'MASTER_POS_WAIT' => 33, 'POLYGONFROMTEXT' => 33, 'ST_EXTERIORRING' => 33, + 'ST_GEOMETRYTYPE' => 33, 'ST_GEOMFROMTEXT' => 33, 'ST_INTERSECTION' => 33, 'ST_LINEFROMTEXT' => 33, + 'ST_MAKEENVELOPE' => 33, 'ST_MLINEFROMWKB' => 33, 'ST_MPOLYFROMWKB' => 33, 'ST_POINTFROMWKB' => 33, + 'ST_POLYFROMTEXT' => 33, 'SUBSTRING_INDEX' => 33, + 'CHARACTER_LENGTH' => 33, 'GEOMCOLLFROMTEXT' => 33, 'GEOMETRYFROMTEXT' => 33, + 'JSON_MERGE_PATCH' => 33, 'NUMINTERIORRINGS' => 33, 'ST_INTERIORRINGN' => 33, + 'ST_MLINEFROMTEXT' => 33, 'ST_MPOINTFROMWKB' => 33, 'ST_MPOLYFROMTEXT' => 33, + 'ST_NUMGEOMETRIES' => 33, 'ST_POINTFROMTEXT' => 33, 'ST_SYMDIFFERENCE' => 33, + 'JSON_ARRAY_APPEND' => 33, 'JSON_ARRAY_INSERT' => 33, 'JSON_STORAGE_FREE' => 33, + 'JSON_STORAGE_SIZE' => 33, 'LINESTRINGFROMWKB' => 33, 'MULTIPOINTFROMWKB' => 33, + 'RELEASE_ALL_LOCKS' => 33, 'ST_LATFROMGEOHASH' => 33, 'ST_MPOINTFROMTEXT' => 33, + 'ST_POLYGONFROMWKB' => 33, + 'JSON_CONTAINS_PATH' => 33, 'MULTIPOINTFROMTEXT' => 33, 'ST_BUFFER_STRATEGY' => 33, + 'ST_DISTANCE_SPHERE' => 33, 'ST_GEOMCOLLFROMTXT' => 33, 'ST_GEOMCOLLFROMWKB' => 33, + 'ST_GEOMFROMGEOJSON' => 33, 'ST_LONGFROMGEOHASH' => 33, 'ST_POLYGONFROMTEXT' => 33, + 'JSON_MERGE_PRESERVE' => 33, 'MULTIPOLYGONFROMWKB' => 33, 'ST_GEOMCOLLFROMTEXT' => 33, + 'ST_GEOMETRYFROMTEXT' => 33, 'ST_NUMINTERIORRINGS' => 33, 'ST_POINTFROMGEOHASH' => 33, + 'UNCOMPRESSED_LENGTH' => 33, + 'MULTIPOLYGONFROMTEXT' => 33, 'ST_LINESTRINGFROMWKB' => 33, 'ST_MULTIPOINTFROMWKB' => 33, + 'ST_MULTIPOINTFROMTEXT' => 33, + 'MULTILINESTRINGFROMWKB' => 33, 'ST_MULTIPOLYGONFROMWKB' => 33, + 'MULTILINESTRINGFROMTEXT' => 33, 'ST_MULTIPOLYGONFROMTEXT' => 33, + 'GEOMETRYCOLLECTIONFROMWKB' => 33, 'ST_MULTILINESTRINGFROMWKB' => 33, + 'GEOMETRYCOLLECTIONFROMTEXT' => 33, 'ST_MULTILINESTRINGFROMTEXT' => 33, 'VALIDATE_PASSWORD_STRENGTH' => 33, + 'WAIT_FOR_EXECUTED_GTID_SET' => 33, + 'ST_GEOMETRYCOLLECTIONFROMWKB' => 33, + 'ST_GEOMETRYCOLLECTIONFROMTEXT' => 33, + 'WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS' => 33, + + 'IF' => 35, 'IN' => 35, + 'MOD' => 35, + 'LEFT' => 35, + 'MATCH' => 35, 'RIGHT' => 35, + 'EXISTS' => 35, 'INSERT' => 35, 'REPEAT' => 35, 'SCHEMA' => 35, 'VALUES' => 35, + 'CONVERT' => 35, 'DEFAULT' => 35, 'REPLACE' => 35, + 'DATABASE' => 35, 'UTC_DATE' => 35, 'UTC_TIME' => 35, + 'LOCALTIME' => 35, + 'CURRENT_DATE' => 35, 'CURRENT_TIME' => 35, 'CURRENT_USER' => 35, + 'UTC_TIMESTAMP' => 35, + 'LOCALTIMESTAMP' => 35, + 'CURRENT_TIMESTAMP' => 35, + + 'NOT IN' => 39, + + 'DATE' => 41, 'TIME' => 41, 'YEAR' => 41, + 'POINT' => 41, + 'POLYGON' => 41, + 'TIMESTAMP' => 41, + 'LINESTRING' => 41, + 'MULTILINESTRING' => 41, + 'GEOMETRYCOLLECTION' => 41, + + 'CHAR' => 43, + 'BINARY' => 43, + 'INTERVAL' => 43, + ]; +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Contexts/ContextMySql50000.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Contexts/ContextMySql50000.php new file mode 100644 index 0000000000..f649fe4f3b --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Contexts/ContextMySql50000.php @@ -0,0 +1,274 @@ + + * @phpstan-var non-empty-array + */ + public static $KEYWORDS = [ + 'DO' => 1, 'IO' => 1, 'NO' => 1, 'XA' => 1, + 'ANY' => 1, 'BDB' => 1, 'CPU' => 1, 'END' => 1, 'IPC' => 1, 'NDB' => 1, + 'NEW' => 1, 'ONE' => 1, 'ROW' => 1, + 'BOOL' => 1, 'BYTE' => 1, 'CODE' => 1, 'CUBE' => 1, 'DATA' => 1, 'FAST' => 1, + 'FILE' => 1, 'FULL' => 1, 'HASH' => 1, 'HELP' => 1, 'LAST' => 1, 'LOGS' => 1, + 'MODE' => 1, 'NAME' => 1, 'NEXT' => 1, 'NONE' => 1, 'OPEN' => 1, 'PAGE' => 1, + 'PREV' => 1, 'ROWS' => 1, 'SOME' => 1, 'STOP' => 1, 'TYPE' => 1, 'VIEW' => 1, + 'WORK' => 1, 'X509' => 1, + 'AFTER' => 1, 'BEGIN' => 1, 'BLOCK' => 1, 'BTREE' => 1, 'CACHE' => 1, + 'CHAIN' => 1, 'CLOSE' => 1, 'FIRST' => 1, 'FIXED' => 1, 'FLUSH' => 1, + 'FOUND' => 1, 'HOSTS' => 1, 'LEVEL' => 1, 'LOCAL' => 1, 'LOCKS' => 1, + 'MERGE' => 1, 'MUTEX' => 1, 'NAMES' => 1, 'NCHAR' => 1, 'PHASE' => 1, + 'QUERY' => 1, 'QUICK' => 1, 'RAID0' => 1, 'RESET' => 1, 'RTREE' => 1, + 'SHARE' => 1, 'SLAVE' => 1, 'START' => 1, 'SUPER' => 1, 'SWAPS' => 1, + 'TYPES' => 1, 'UNTIL' => 1, 'VALUE' => 1, + 'ACTION' => 1, 'BACKUP' => 1, 'BINLOG' => 1, 'CIPHER' => 1, 'CLIENT' => 1, + 'COMMIT' => 1, 'ENABLE' => 1, 'ENGINE' => 1, 'ERRORS' => 1, 'ESCAPE' => 1, + 'EVENTS' => 1, 'FAULTS' => 1, 'FIELDS' => 1, 'GLOBAL' => 1, 'GRANTS' => 1, + 'IMPORT' => 1, 'INNODB' => 1, 'ISSUER' => 1, 'LEAVES' => 1, 'MASTER' => 1, + 'MEDIUM' => 1, 'MEMORY' => 1, 'MODIFY' => 1, 'OFFSET' => 1, 'RELOAD' => 1, + 'REPAIR' => 1, 'RESUME' => 1, 'ROLLUP' => 1, 'SIGNED' => 1, 'SIMPLE' => 1, + 'SOUNDS' => 1, 'SOURCE' => 1, 'STATUS' => 1, 'STRING' => 1, 'TABLES' => 1, + 'CHANGED' => 1, 'COLUMNS' => 1, 'COMMENT' => 1, 'COMPACT' => 1, 'CONTEXT' => 1, + 'DEFINER' => 1, 'DISABLE' => 1, 'DISCARD' => 1, 'DYNAMIC' => 1, 'ENGINES' => 1, + 'EXECUTE' => 1, 'HANDLER' => 1, 'INDEXES' => 1, 'INVOKER' => 1, 'MIGRATE' => 1, + 'PARTIAL' => 1, 'PREPARE' => 1, 'PROFILE' => 1, 'RECOVER' => 1, 'RESTORE' => 1, + 'RETURNS' => 1, 'ROUTINE' => 1, 'SESSION' => 1, 'STORAGE' => 1, 'STRIPED' => 1, + 'SUBJECT' => 1, 'SUSPEND' => 1, 'UNICODE' => 1, 'UNKNOWN' => 1, 'UPGRADE' => 1, + 'USE_FRM' => 1, 'VIRTUAL' => 1, + 'CASCADED' => 1, 'CHECKSUM' => 1, 'DUMPFILE' => 1, 'EXTENDED' => 1, 'FUNCTION' => 1, + 'INNOBASE' => 1, 'LANGUAGE' => 1, 'MAX_ROWS' => 1, 'MIN_ROWS' => 1, 'NATIONAL' => 1, + 'NVARCHAR' => 1, 'ONE_SHOT' => 1, 'PROFILES' => 1, 'ROLLBACK' => 1, 'SECURITY' => 1, + 'SHUTDOWN' => 1, 'SNAPSHOT' => 1, 'SWITCHES' => 1, 'TRIGGERS' => 1, 'WARNINGS' => 1, + 'AGGREGATE' => 1, 'ALGORITHM' => 1, 'COMMITTED' => 1, 'DIRECTORY' => 1, + 'DUPLICATE' => 1, 'EXPANSION' => 1, 'IO_THREAD' => 1, 'ISOLATION' => 1, + 'PACK_KEYS' => 1, 'RAID_TYPE' => 1, 'REDUNDANT' => 1, 'SAVEPOINT' => 1, + 'SQL_CACHE' => 1, 'TEMPORARY' => 1, 'TEMPTABLE' => 1, 'UNDEFINED' => 1, + 'VARIABLES' => 1, + 'BERKELEYDB' => 1, 'COMPRESSED' => 1, 'CONCURRENT' => 1, 'CONNECTION' => 1, + 'CONSISTENT' => 1, 'DEALLOCATE' => 1, 'IDENTIFIED' => 1, 'MASTER_SSL' => 1, + 'NDBCLUSTER' => 1, 'PARTITIONS' => 1, 'PERSISTENT' => 1, 'PRIVILEGES' => 1, + 'REPEATABLE' => 1, 'ROW_FORMAT' => 1, 'SQL_THREAD' => 1, 'TABLESPACE' => 1, + 'FRAC_SECOND' => 1, 'MASTER_HOST' => 1, 'MASTER_PORT' => 1, 'MASTER_USER' => 1, + 'PROCESSLIST' => 1, 'RAID_CHUNKS' => 1, 'REPLICATION' => 1, 'SQL_TSI_DAY' => 1, + 'TRANSACTION' => 1, 'UNCOMMITTED' => 1, + 'DES_KEY_FILE' => 1, 'RELAY_THREAD' => 1, 'SERIALIZABLE' => 1, 'SQL_NO_CACHE' => 1, + 'SQL_TSI_HOUR' => 1, 'SQL_TSI_WEEK' => 1, 'SQL_TSI_YEAR' => 1, + 'INSERT_METHOD' => 1, 'MASTER_SSL_CA' => 1, 'RELAY_LOG_POS' => 1, 'SQL_TSI_MONTH' => 1, + 'SUBPARTITIONS' => 1, + 'AUTO_INCREMENT' => 1, 'AVG_ROW_LENGTH' => 1, 'MASTER_LOG_POS' => 1, 'MASTER_SSL_KEY' => 1, + 'RAID_CHUNKSIZE' => 1, 'RELAY_LOG_FILE' => 1, 'SQL_TSI_MINUTE' => 1, 'SQL_TSI_SECOND' => 1, + 'USER_RESOURCES' => 1, + 'DELAY_KEY_WRITE' => 1, 'MASTER_LOG_FILE' => 1, 'MASTER_PASSWORD' => 1, 'MASTER_SSL_CERT' => 1, + 'SQL_TSI_QUARTER' => 1, + 'MASTER_SERVER_ID' => 1, + 'MASTER_SSL_CAPATH' => 1, 'MASTER_SSL_CIPHER' => 1, 'SQL_BUFFER_RESULT' => 1, + 'SQL_TSI_FRAC_SECOND' => 1, + 'MASTER_CONNECT_RETRY' => 1, 'MAX_QUERIES_PER_HOUR' => 1, 'MAX_UPDATES_PER_HOUR' => 1, + 'MAX_USER_CONNECTIONS' => 1, + 'MAX_CONNECTIONS_PER_HOUR' => 1, + + 'AS' => 3, 'BY' => 3, 'IS' => 3, 'ON' => 3, 'OR' => 3, 'TO' => 3, + 'ADD' => 3, 'ALL' => 3, 'AND' => 3, 'ASC' => 3, 'DEC' => 3, 'DIV' => 3, + 'FOR' => 3, 'NOT' => 3, 'OUT' => 3, 'SQL' => 3, 'SSL' => 3, 'USE' => 3, + 'XOR' => 3, + 'BOTH' => 3, 'CALL' => 3, 'CASE' => 3, 'DESC' => 3, 'DROP' => 3, 'DUAL' => 3, + 'EACH' => 3, 'ELSE' => 3, 'EXIT' => 3, 'FROM' => 3, 'INT1' => 3, 'INT2' => 3, + 'INT3' => 3, 'INT4' => 3, 'INT8' => 3, 'INTO' => 3, 'JOIN' => 3, 'KEYS' => 3, + 'KILL' => 3, 'LIKE' => 3, 'LOAD' => 3, 'LOCK' => 3, 'LONG' => 3, 'LOOP' => 3, + 'NULL' => 3, 'READ' => 3, 'SHOW' => 3, 'THEN' => 3, 'TRUE' => 3, 'UNDO' => 3, + 'WHEN' => 3, 'WITH' => 3, + 'ALTER' => 3, 'CHECK' => 3, 'CROSS' => 3, 'FALSE' => 3, 'FETCH' => 3, + 'FORCE' => 3, 'GRANT' => 3, 'GROUP' => 3, 'INNER' => 3, 'INOUT' => 3, + 'LEAVE' => 3, 'LIMIT' => 3, 'LINES' => 3, 'ORDER' => 3, 'OUTER' => 3, + 'PURGE' => 3, 'READS' => 3, 'RLIKE' => 3, 'TABLE' => 3, 'UNION' => 3, + 'USAGE' => 3, 'USING' => 3, 'WHERE' => 3, 'WHILE' => 3, 'WRITE' => 3, + 'BEFORE' => 3, 'CHANGE' => 3, 'COLUMN' => 3, 'CREATE' => 3, 'CURSOR' => 3, + 'DELETE' => 3, 'ELSEIF' => 3, 'FLOAT4' => 3, 'FLOAT8' => 3, 'HAVING' => 3, + 'IGNORE' => 3, 'INFILE' => 3, 'OPTION' => 3, 'REGEXP' => 3, 'RENAME' => 3, + 'RETURN' => 3, 'REVOKE' => 3, 'SELECT' => 3, 'SONAME' => 3, 'UNLOCK' => 3, + 'UPDATE' => 3, + 'ANALYZE' => 3, 'BETWEEN' => 3, 'CASCADE' => 3, 'COLLATE' => 3, 'DECLARE' => 3, + 'DELAYED' => 3, 'ESCAPED' => 3, 'EXPLAIN' => 3, 'FOREIGN' => 3, 'ITERATE' => 3, + 'LEADING' => 3, 'NATURAL' => 3, 'OUTFILE' => 3, 'PRIMARY' => 3, 'RELEASE' => 3, + 'REQUIRE' => 3, 'SCHEMAS' => 3, 'TRIGGER' => 3, 'VARYING' => 3, + 'CONTINUE' => 3, 'DAY_HOUR' => 3, 'DESCRIBE' => 3, 'DISTINCT' => 3, 'ENCLOSED' => 3, + 'MODIFIES' => 3, 'OPTIMIZE' => 3, 'RESTRICT' => 3, 'SPECIFIC' => 3, 'SQLSTATE' => 3, + 'STARTING' => 3, 'TRAILING' => 3, 'UNSIGNED' => 3, 'ZEROFILL' => 3, + 'CONDITION' => 3, 'DATABASES' => 3, 'MIDDLEINT' => 3, 'PRECISION' => 3, + 'PROCEDURE' => 3, 'SENSITIVE' => 3, 'SEPARATOR' => 3, + 'ASENSITIVE' => 3, 'CONSTRAINT' => 3, 'DAY_MINUTE' => 3, 'DAY_SECOND' => 3, + 'OPTIONALLY' => 3, 'REFERENCES' => 3, 'SQLWARNING' => 3, 'TERMINATED' => 3, + 'YEAR_MONTH' => 3, + 'DISTINCTROW' => 3, 'HOUR_MINUTE' => 3, 'HOUR_SECOND' => 3, 'INSENSITIVE' => 3, + 'LOW_PRIORITY' => 3, 'SQLEXCEPTION' => 3, 'VARCHARACTER' => 3, + 'DETERMINISTIC' => 3, 'HIGH_PRIORITY' => 3, 'MINUTE_SECOND' => 3, 'STRAIGHT_JOIN' => 3, + 'SQL_BIG_RESULT' => 3, + 'DAY_MICROSECOND' => 3, + 'HOUR_MICROSECOND' => 3, 'SQL_SMALL_RESULT' => 3, + 'MINUTE_MICROSECOND' => 3, 'NO_WRITE_TO_BINLOG' => 3, 'SECOND_MICROSECOND' => 3, + 'SQL_CALC_FOUND_ROWS' => 3, + + 'GROUP BY' => 7, 'NOT NULL' => 7, 'ORDER BY' => 7, 'SET NULL' => 7, + 'AND CHAIN' => 7, 'FULL JOIN' => 7, 'IF EXISTS' => 7, 'LEFT JOIN' => 7, + 'LESS THAN' => 7, 'LOAD DATA' => 7, 'NO ACTION' => 7, 'ON DELETE' => 7, + 'ON UPDATE' => 7, 'UNION ALL' => 7, + 'CROSS JOIN' => 7, 'ESCAPED BY' => 7, 'FOR UPDATE' => 7, 'INNER JOIN' => 7, + 'LINEAR KEY' => 7, 'NO RELEASE' => 7, 'OR REPLACE' => 7, 'RIGHT JOIN' => 7, + 'ENCLOSED BY' => 7, 'LINEAR HASH' => 7, 'STARTING BY' => 7, + 'AND NO CHAIN' => 7, 'FOR EACH ROW' => 7, 'NATURAL JOIN' => 7, 'PARTITION BY' => 7, + 'SET PASSWORD' => 7, 'SQL SECURITY' => 7, + 'CHARACTER SET' => 7, 'IF NOT EXISTS' => 7, 'TERMINATED BY' => 7, + 'DATA DIRECTORY' => 7, 'UNION DISTINCT' => 7, + 'DEFAULT CHARSET' => 7, 'DEFAULT COLLATE' => 7, 'FULL OUTER JOIN' => 7, 'INDEX DIRECTORY' => 7, + 'LEFT OUTER JOIN' => 7, 'SUBPARTITION BY' => 7, + 'GENERATED ALWAYS' => 7, 'RIGHT OUTER JOIN' => 7, + 'NATURAL LEFT JOIN' => 7, 'START TRANSACTION' => 7, + 'LOCK IN SHARE MODE' => 7, 'NATURAL RIGHT JOIN' => 7, 'SELECT TRANSACTION' => 7, + 'DEFAULT CHARACTER SET' => 7, + 'NATURAL LEFT OUTER JOIN' => 7, + 'NATURAL RIGHT OUTER JOIN' => 7, 'WITH CONSISTENT SNAPSHOT' => 7, + + 'BIT' => 9, 'XML' => 9, + 'ENUM' => 9, 'JSON' => 9, 'TEXT' => 9, + 'ARRAY' => 9, + 'SERIAL' => 9, + 'BOOLEAN' => 9, + 'DATETIME' => 9, 'GEOMETRY' => 9, 'MULTISET' => 9, + 'MULTILINEPOINT' => 9, + 'MULTILINEPOLYGON' => 9, + + 'INT' => 11, 'SET' => 11, + 'BLOB' => 11, 'REAL' => 11, + 'FLOAT' => 11, + 'BIGINT' => 11, 'DOUBLE' => 11, + 'DECIMAL' => 11, 'INTEGER' => 11, 'NUMERIC' => 11, 'TINYINT' => 11, 'VARCHAR' => 11, + 'LONGBLOB' => 11, 'LONGTEXT' => 11, 'SMALLINT' => 11, 'TINYBLOB' => 11, 'TINYTEXT' => 11, + 'CHARACTER' => 11, 'MEDIUMINT' => 11, 'VARBINARY' => 11, + 'MEDIUMBLOB' => 11, 'MEDIUMTEXT' => 11, + + 'BINARY VARYING' => 15, + + 'KEY' => 19, + 'INDEX' => 19, + 'UNIQUE' => 19, + 'SPATIAL' => 19, + 'FULLTEXT' => 19, + + 'INDEX KEY' => 23, + 'UNIQUE KEY' => 23, + 'FOREIGN KEY' => 23, 'PRIMARY KEY' => 23, 'SPATIAL KEY' => 23, + 'FULLTEXT KEY' => 23, 'UNIQUE INDEX' => 23, + 'SPATIAL INDEX' => 23, + 'FULLTEXT INDEX' => 23, + + 'X' => 33, 'Y' => 33, + 'LN' => 33, 'PI' => 33, + 'ABS' => 33, 'AVG' => 33, 'BIN' => 33, 'COS' => 33, 'COT' => 33, 'DAY' => 33, + 'ELT' => 33, 'EXP' => 33, 'HEX' => 33, 'LOG' => 33, 'MAX' => 33, 'MD5' => 33, + 'MID' => 33, 'MIN' => 33, 'NOW' => 33, 'OCT' => 33, 'ORD' => 33, 'POW' => 33, + 'SIN' => 33, 'STD' => 33, 'SUM' => 33, 'TAN' => 33, + 'ACOS' => 33, 'AREA' => 33, 'ASIN' => 33, 'ATAN' => 33, 'CAST' => 33, 'CEIL' => 33, + 'CONV' => 33, 'HOUR' => 33, 'LOG2' => 33, 'LPAD' => 33, 'RAND' => 33, 'RPAD' => 33, + 'SHA1' => 33, 'SIGN' => 33, 'SQRT' => 33, 'SRID' => 33, 'TRIM' => 33, 'USER' => 33, + 'UUID' => 33, 'WEEK' => 33, + 'ASCII' => 33, 'ATAN2' => 33, 'COUNT' => 33, 'CRC32' => 33, 'FIELD' => 33, + 'FLOOR' => 33, 'INSTR' => 33, 'LCASE' => 33, 'LEAST' => 33, 'LOG10' => 33, + 'LOWER' => 33, 'LTRIM' => 33, 'MONTH' => 33, 'POWER' => 33, 'QUOTE' => 33, + 'ROUND' => 33, 'RTRIM' => 33, 'SLEEP' => 33, 'SPACE' => 33, 'UCASE' => 33, + 'UNHEX' => 33, 'UPPER' => 33, + 'ASTEXT' => 33, 'BIT_OR' => 33, 'CONCAT' => 33, 'DECODE' => 33, 'ENCODE' => 33, + 'EQUALS' => 33, 'FORMAT' => 33, 'IFNULL' => 33, 'ISNULL' => 33, 'LENGTH' => 33, + 'LOCATE' => 33, 'MINUTE' => 33, 'NULLIF' => 33, 'POINTN' => 33, 'SECOND' => 33, + 'STDDEV' => 33, 'STRCMP' => 33, 'SUBSTR' => 33, 'WITHIN' => 33, + 'ADDDATE' => 33, 'ADDTIME' => 33, 'AGAINST' => 33, 'BIT_AND' => 33, 'BIT_XOR' => 33, + 'CEILING' => 33, 'CHARSET' => 33, 'CROSSES' => 33, 'CURDATE' => 33, 'CURTIME' => 33, + 'DAYNAME' => 33, 'DEGREES' => 33, 'ENCRYPT' => 33, 'EXTRACT' => 33, 'GLENGTH' => 33, + 'ISEMPTY' => 33, 'QUARTER' => 33, 'RADIANS' => 33, 'REVERSE' => 33, 'SOUNDEX' => 33, + 'SUBDATE' => 33, 'SUBTIME' => 33, 'SYSDATE' => 33, 'TOUCHES' => 33, 'TO_DAYS' => 33, + 'VAR_POP' => 33, 'VERSION' => 33, 'WEEKDAY' => 33, + 'ASBINARY' => 33, 'CENTROID' => 33, 'COALESCE' => 33, 'COMPRESS' => 33, 'CONTAINS' => 33, + 'DATEDIFF' => 33, 'DATE_ADD' => 33, 'DATE_SUB' => 33, 'DISJOINT' => 33, 'ENDPOINT' => 33, + 'ENVELOPE' => 33, 'GET_LOCK' => 33, 'GREATEST' => 33, 'ISCLOSED' => 33, 'ISSIMPLE' => 33, + 'MAKEDATE' => 33, 'MAKETIME' => 33, 'MAKE_SET' => 33, 'MBREQUAL' => 33, 'OVERLAPS' => 33, + 'PASSWORD' => 33, 'POSITION' => 33, 'TIMEDIFF' => 33, 'TRUNCATE' => 33, 'VARIANCE' => 33, + 'VAR_SAMP' => 33, 'YEARWEEK' => 33, + 'BENCHMARK' => 33, 'BIT_COUNT' => 33, 'COLLATION' => 33, 'CONCAT_WS' => 33, + 'DAYOFWEEK' => 33, 'DAYOFYEAR' => 33, 'DIMENSION' => 33, 'FROM_DAYS' => 33, + 'GEOMETRYN' => 33, 'INET_ATON' => 33, 'INET_NTOA' => 33, 'LOAD_FILE' => 33, + 'MBRWITHIN' => 33, 'MONTHNAME' => 33, 'NUMPOINTS' => 33, 'ROW_COUNT' => 33, + 'SUBSTRING' => 33, + 'BIT_LENGTH' => 33, 'CONVERT_TZ' => 33, 'DAYOFMONTH' => 33, 'EXPORT_SET' => 33, + 'FOUND_ROWS' => 33, 'GET_FORMAT' => 33, 'INTERSECTS' => 33, 'MBRTOUCHES' => 33, + 'MULTIPOINT' => 33, 'NAME_CONST' => 33, 'PERIOD_ADD' => 33, 'STARTPOINT' => 33, + 'STDDEV_POP' => 33, 'UNCOMPRESS' => 33, 'WEEKOFYEAR' => 33, + 'AES_DECRYPT' => 33, 'AES_ENCRYPT' => 33, 'CHAR_LENGTH' => 33, 'DATE_FORMAT' => 33, + 'DES_DECRYPT' => 33, 'DES_ENCRYPT' => 33, 'FIND_IN_SET' => 33, 'GEOMFROMWKB' => 33, + 'LINEFROMWKB' => 33, 'MBRCONTAINS' => 33, 'MBRDISJOINT' => 33, 'MBROVERLAPS' => 33, + 'MICROSECOND' => 33, 'PERIOD_DIFF' => 33, 'POLYFROMWKB' => 33, 'SEC_TO_TIME' => 33, + 'STDDEV_SAMP' => 33, 'STR_TO_DATE' => 33, 'SYSTEM_USER' => 33, 'TIME_FORMAT' => 33, + 'TIME_TO_SEC' => 33, + 'COERCIBILITY' => 33, 'EXTERIORRING' => 33, 'GEOMETRYTYPE' => 33, 'GEOMFROMTEXT' => 33, + 'GROUP_CONCAT' => 33, 'IS_FREE_LOCK' => 33, 'IS_USED_LOCK' => 33, 'LINEFROMTEXT' => 33, + 'MLINEFROMWKB' => 33, 'MPOLYFROMWKB' => 33, 'MULTIPOLYGON' => 33, 'OCTET_LENGTH' => 33, + 'OLD_PASSWORD' => 33, 'POINTFROMWKB' => 33, 'POLYFROMTEXT' => 33, 'RELEASE_LOCK' => 33, + 'SESSION_USER' => 33, 'TIMESTAMPADD' => 33, + 'CONNECTION_ID' => 33, 'FROM_UNIXTIME' => 33, 'INTERIORRINGN' => 33, 'MBRINTERSECTS' => 33, + 'MLINEFROMTEXT' => 33, 'MPOINTFROMWKB' => 33, 'MPOLYFROMTEXT' => 33, 'NUMGEOMETRIES' => 33, + 'POINTFROMTEXT' => 33, 'TIMESTAMPDIFF' => 33, + 'LAST_INSERT_ID' => 33, 'MPOINTFROMTEXT' => 33, 'UNIX_TIMESTAMP' => 33, + 'GEOMCOLLFROMWKB' => 33, 'MASTER_POS_WAIT' => 33, 'SUBSTRING_INDEX' => 33, + 'CHARACTER_LENGTH' => 33, 'GEOMCOLLFROMTEXT' => 33, 'NUMINTERIORRINGS' => 33, + 'UNCOMPRESSED_LENGTH' => 33, + + 'IF' => 35, 'IN' => 35, + 'MOD' => 35, + 'LEFT' => 35, + 'MATCH' => 35, 'RIGHT' => 35, + 'EXISTS' => 35, 'INSERT' => 35, 'REPEAT' => 35, 'SCHEMA' => 35, 'VALUES' => 35, + 'CONVERT' => 35, 'DEFAULT' => 35, 'REPLACE' => 35, + 'DATABASE' => 35, 'UTC_DATE' => 35, 'UTC_TIME' => 35, + 'LOCALTIME' => 35, + 'CURRENT_DATE' => 35, 'CURRENT_TIME' => 35, 'CURRENT_USER' => 35, + 'UTC_TIMESTAMP' => 35, + 'LOCALTIMESTAMP' => 35, + 'CURRENT_TIMESTAMP' => 35, + + 'NOT IN' => 39, + + 'DATE' => 41, 'TIME' => 41, 'YEAR' => 41, + 'POINT' => 41, + 'POLYGON' => 41, + 'TIMESTAMP' => 41, + 'LINESTRING' => 41, + 'MULTILINESTRING' => 41, + 'GEOMETRYCOLLECTION' => 41, + + 'CHAR' => 43, + 'BINARY' => 43, + 'INTERVAL' => 43, + ]; +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Contexts/ContextMySql50100.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Contexts/ContextMySql50100.php new file mode 100644 index 0000000000..098344a891 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Contexts/ContextMySql50100.php @@ -0,0 +1,294 @@ + + * @phpstan-var non-empty-array + */ + public static $KEYWORDS = [ + 'AT' => 1, 'DO' => 1, 'IO' => 1, 'NO' => 1, 'XA' => 1, + 'ANY' => 1, 'BDB' => 1, 'CPU' => 1, 'END' => 1, 'IPC' => 1, 'NDB' => 1, + 'NEW' => 1, 'ONE' => 1, 'ROW' => 1, + 'BOOL' => 1, 'BYTE' => 1, 'CODE' => 1, 'CUBE' => 1, 'DATA' => 1, 'DISK' => 1, + 'ENDS' => 1, 'FAST' => 1, 'FILE' => 1, 'FULL' => 1, 'GOTO' => 1, 'HASH' => 1, + 'HELP' => 1, 'HOST' => 1, 'LAST' => 1, 'LESS' => 1, 'LIST' => 1, 'LOGS' => 1, + 'MODE' => 1, 'NAME' => 1, 'NEXT' => 1, 'NONE' => 1, 'OPEN' => 1, 'PAGE' => 1, + 'PORT' => 1, 'PREV' => 1, 'ROWS' => 1, 'SOME' => 1, 'STOP' => 1, 'THAN' => 1, + 'TYPE' => 1, 'VIEW' => 1, 'WAIT' => 1, 'WORK' => 1, 'X509' => 1, + 'AFTER' => 1, 'BEGIN' => 1, 'BLOCK' => 1, 'BTREE' => 1, 'CACHE' => 1, + 'CHAIN' => 1, 'CLOSE' => 1, 'EVENT' => 1, 'EVERY' => 1, 'FIRST' => 1, + 'FIXED' => 1, 'FLUSH' => 1, 'FOUND' => 1, 'HOSTS' => 1, 'LABEL' => 1, + 'LEVEL' => 1, 'LOCAL' => 1, 'LOCKS' => 1, 'MERGE' => 1, 'MUTEX' => 1, + 'NAMES' => 1, 'NCHAR' => 1, 'OWNER' => 1, 'PHASE' => 1, 'QUERY' => 1, + 'QUICK' => 1, 'RAID0' => 1, 'RESET' => 1, 'RTREE' => 1, 'SHARE' => 1, + 'SLAVE' => 1, 'START' => 1, 'SUPER' => 1, 'SWAPS' => 1, 'TYPES' => 1, + 'UNTIL' => 1, 'VALUE' => 1, + 'ACTION' => 1, 'BACKUP' => 1, 'BINLOG' => 1, 'CIPHER' => 1, 'CLIENT' => 1, + 'COMMIT' => 1, 'ENABLE' => 1, 'ENGINE' => 1, 'ERRORS' => 1, 'ESCAPE' => 1, + 'EVENTS' => 1, 'FAULTS' => 1, 'FIELDS' => 1, 'GLOBAL' => 1, 'GRANTS' => 1, + 'IMPORT' => 1, 'INNODB' => 1, 'ISSUER' => 1, 'LEAVES' => 1, 'MASTER' => 1, + 'MEDIUM' => 1, 'MEMORY' => 1, 'MODIFY' => 1, 'OFFSET' => 1, 'PARSER' => 1, + 'PLUGIN' => 1, 'RELOAD' => 1, 'REMOVE' => 1, 'REPAIR' => 1, 'RESUME' => 1, + 'ROLLUP' => 1, 'SERVER' => 1, 'SIGNED' => 1, 'SIMPLE' => 1, 'SOCKET' => 1, + 'SONAME' => 1, 'SOUNDS' => 1, 'SOURCE' => 1, 'STARTS' => 1, 'STATUS' => 1, + 'STRING' => 1, 'TABLES' => 1, + 'AUTHORS' => 1, 'CHANGED' => 1, 'COLUMNS' => 1, 'COMMENT' => 1, 'COMPACT' => 1, + 'CONTEXT' => 1, 'DEFINER' => 1, 'DISABLE' => 1, 'DISCARD' => 1, 'DYNAMIC' => 1, + 'ENGINES' => 1, 'EXECUTE' => 1, 'HANDLER' => 1, 'INDEXES' => 1, 'INSTALL' => 1, + 'INVOKER' => 1, 'LOGFILE' => 1, 'MIGRATE' => 1, 'NO_WAIT' => 1, 'OPTIONS' => 1, + 'PARTIAL' => 1, 'PLUGINS' => 1, 'PREPARE' => 1, 'PROFILE' => 1, 'REBUILD' => 1, + 'RECOVER' => 1, 'RESTORE' => 1, 'RETURNS' => 1, 'ROUTINE' => 1, 'SESSION' => 1, + 'STORAGE' => 1, 'STRIPED' => 1, 'SUBJECT' => 1, 'SUSPEND' => 1, 'UNICODE' => 1, + 'UNKNOWN' => 1, 'UPGRADE' => 1, 'USE_FRM' => 1, 'VIRTUAL' => 1, 'WRAPPER' => 1, + 'CASCADED' => 1, 'CHECKSUM' => 1, 'DATAFILE' => 1, 'DUMPFILE' => 1, 'EXTENDED' => 1, + 'FUNCTION' => 1, 'INNOBASE' => 1, 'LANGUAGE' => 1, 'MAXVALUE' => 1, 'MAX_ROWS' => 1, + 'MAX_SIZE' => 1, 'MIN_ROWS' => 1, 'NATIONAL' => 1, 'NVARCHAR' => 1, 'ONE_SHOT' => 1, + 'PRESERVE' => 1, 'PROFILES' => 1, 'REDOFILE' => 1, 'ROLLBACK' => 1, 'SCHEDULE' => 1, + 'SECURITY' => 1, 'SHUTDOWN' => 1, 'SNAPSHOT' => 1, 'SWITCHES' => 1, 'TRIGGERS' => 1, + 'UNDOFILE' => 1, 'WARNINGS' => 1, + 'AGGREGATE' => 1, 'ALGORITHM' => 1, 'COMMITTED' => 1, 'DIRECTORY' => 1, + 'DUPLICATE' => 1, 'EXPANSION' => 1, 'IO_THREAD' => 1, 'ISOLATION' => 1, + 'NODEGROUP' => 1, 'PACK_KEYS' => 1, 'PARTITION' => 1, 'RAID_TYPE' => 1, + 'READ_ONLY' => 1, 'REDUNDANT' => 1, 'SAVEPOINT' => 1, 'SCHEDULER' => 1, + 'SQL_CACHE' => 1, 'TEMPORARY' => 1, 'TEMPTABLE' => 1, 'UNDEFINED' => 1, + 'UNINSTALL' => 1, 'VARIABLES' => 1, + 'BERKELEYDB' => 1, 'COMPLETION' => 1, 'COMPRESSED' => 1, 'CONCURRENT' => 1, + 'CONNECTION' => 1, 'CONSISTENT' => 1, 'DEALLOCATE' => 1, 'IDENTIFIED' => 1, + 'MASTER_SSL' => 1, 'NDBCLUSTER' => 1, 'PARTITIONS' => 1, 'PERSISTENT' => 1, + 'PRIVILEGES' => 1, 'REORGANISE' => 1, 'REORGANIZE' => 1, 'REPEATABLE' => 1, + 'ROW_FORMAT' => 1, 'SQL_THREAD' => 1, 'TABLESPACE' => 1, + 'EXTENT_SIZE' => 1, 'FRAC_SECOND' => 1, 'MASTER_HOST' => 1, 'MASTER_PORT' => 1, + 'MASTER_USER' => 1, 'PROCESSLIST' => 1, 'RAID_CHUNKS' => 1, 'REPLICATION' => 1, + 'SQL_TSI_DAY' => 1, 'TRANSACTION' => 1, 'UNCOMMITTED' => 1, + 'CONTRIBUTORS' => 1, 'DES_KEY_FILE' => 1, 'INITIAL_SIZE' => 1, 'PARTITIONING' => 1, + 'RELAY_THREAD' => 1, 'SERIALIZABLE' => 1, 'SQL_NO_CACHE' => 1, 'SQL_TSI_HOUR' => 1, + 'SQL_TSI_WEEK' => 1, 'SQL_TSI_YEAR' => 1, 'SUBPARTITION' => 1, + 'INSERT_METHOD' => 1, 'MASTER_SSL_CA' => 1, 'PAGE_CHECKSUM' => 1, 'RELAY_LOG_POS' => 1, + 'SQL_TSI_MONTH' => 1, 'SUBPARTITIONS' => 1, 'TRANSACTIONAL' => 1, + 'AUTO_INCREMENT' => 1, 'AVG_ROW_LENGTH' => 1, 'KEY_BLOCK_SIZE' => 1, 'MASTER_LOG_POS' => 1, + 'MASTER_SSL_KEY' => 1, 'RAID_CHUNKSIZE' => 1, 'RELAY_LOG_FILE' => 1, 'SQL_TSI_MINUTE' => 1, + 'SQL_TSI_SECOND' => 1, 'TABLE_CHECKSUM' => 1, 'USER_RESOURCES' => 1, + 'AUTOEXTEND_SIZE' => 1, 'DELAY_KEY_WRITE' => 1, 'MASTER_LOG_FILE' => 1, 'MASTER_PASSWORD' => 1, + 'MASTER_SSL_CERT' => 1, 'SQL_TSI_QUARTER' => 1, + 'MASTER_SERVER_ID' => 1, 'REDO_BUFFER_SIZE' => 1, 'UNDO_BUFFER_SIZE' => 1, + 'MASTER_SSL_CAPATH' => 1, 'MASTER_SSL_CIPHER' => 1, 'SQL_BUFFER_RESULT' => 1, + 'SQL_TSI_FRAC_SECOND' => 1, + 'MASTER_CONNECT_RETRY' => 1, 'MAX_QUERIES_PER_HOUR' => 1, 'MAX_UPDATES_PER_HOUR' => 1, + 'MAX_USER_CONNECTIONS' => 1, + 'MAX_CONNECTIONS_PER_HOUR' => 1, + + 'AS' => 3, 'BY' => 3, 'IS' => 3, 'ON' => 3, 'OR' => 3, 'TO' => 3, + 'ADD' => 3, 'ALL' => 3, 'AND' => 3, 'ASC' => 3, 'DEC' => 3, 'DIV' => 3, + 'FOR' => 3, 'NOT' => 3, 'OUT' => 3, 'SQL' => 3, 'SSL' => 3, 'USE' => 3, + 'XOR' => 3, + 'BOTH' => 3, 'CALL' => 3, 'CASE' => 3, 'DESC' => 3, 'DROP' => 3, 'DUAL' => 3, + 'EACH' => 3, 'ELSE' => 3, 'EXIT' => 3, 'FROM' => 3, 'INT1' => 3, 'INT2' => 3, + 'INT3' => 3, 'INT4' => 3, 'INT8' => 3, 'INTO' => 3, 'JOIN' => 3, 'KEYS' => 3, + 'KILL' => 3, 'LIKE' => 3, 'LOAD' => 3, 'LOCK' => 3, 'LONG' => 3, 'LOOP' => 3, + 'NULL' => 3, 'READ' => 3, 'SHOW' => 3, 'THEN' => 3, 'TRUE' => 3, 'UNDO' => 3, + 'WHEN' => 3, 'WITH' => 3, + 'ALTER' => 3, 'CHECK' => 3, 'CROSS' => 3, 'FALSE' => 3, 'FETCH' => 3, + 'FORCE' => 3, 'GRANT' => 3, 'GROUP' => 3, 'INNER' => 3, 'INOUT' => 3, + 'LEAVE' => 3, 'LIMIT' => 3, 'LINES' => 3, 'ORDER' => 3, 'OUTER' => 3, + 'PURGE' => 3, 'RANGE' => 3, 'READS' => 3, 'RLIKE' => 3, 'TABLE' => 3, + 'UNION' => 3, 'USAGE' => 3, 'USING' => 3, 'WHERE' => 3, 'WHILE' => 3, + 'WRITE' => 3, + 'BEFORE' => 3, 'CHANGE' => 3, 'COLUMN' => 3, 'CREATE' => 3, 'CURSOR' => 3, + 'DELETE' => 3, 'ELSEIF' => 3, 'FLOAT4' => 3, 'FLOAT8' => 3, 'HAVING' => 3, + 'IGNORE' => 3, 'INFILE' => 3, 'LINEAR' => 3, 'OPTION' => 3, 'REGEXP' => 3, + 'RENAME' => 3, 'RETURN' => 3, 'REVOKE' => 3, 'SELECT' => 3, 'UNLOCK' => 3, + 'UPDATE' => 3, + 'ANALYZE' => 3, 'BETWEEN' => 3, 'CASCADE' => 3, 'COLLATE' => 3, 'DECLARE' => 3, + 'DELAYED' => 3, 'ESCAPED' => 3, 'EXPLAIN' => 3, 'FOREIGN' => 3, 'ITERATE' => 3, + 'LEADING' => 3, 'NATURAL' => 3, 'OUTFILE' => 3, 'PRIMARY' => 3, 'RELEASE' => 3, + 'REQUIRE' => 3, 'SCHEMAS' => 3, 'TRIGGER' => 3, 'VARYING' => 3, + 'CONTINUE' => 3, 'DAY_HOUR' => 3, 'DESCRIBE' => 3, 'DISTINCT' => 3, 'ENCLOSED' => 3, + 'MODIFIES' => 3, 'OPTIMIZE' => 3, 'RESTRICT' => 3, 'SPECIFIC' => 3, 'SQLSTATE' => 3, + 'STARTING' => 3, 'TRAILING' => 3, 'UNSIGNED' => 3, 'ZEROFILL' => 3, + 'CONDITION' => 3, 'DATABASES' => 3, 'MIDDLEINT' => 3, 'PRECISION' => 3, + 'PROCEDURE' => 3, 'SENSITIVE' => 3, 'SEPARATOR' => 3, + 'ACCESSIBLE' => 3, 'ASENSITIVE' => 3, 'CONSTRAINT' => 3, 'DAY_MINUTE' => 3, + 'DAY_SECOND' => 3, 'OPTIONALLY' => 3, 'READ_WRITE' => 3, 'REFERENCES' => 3, + 'SQLWARNING' => 3, 'TERMINATED' => 3, 'YEAR_MONTH' => 3, + 'DISTINCTROW' => 3, 'HOUR_MINUTE' => 3, 'HOUR_SECOND' => 3, 'INSENSITIVE' => 3, + 'LOW_PRIORITY' => 3, 'SQLEXCEPTION' => 3, 'VARCHARACTER' => 3, + 'DETERMINISTIC' => 3, 'HIGH_PRIORITY' => 3, 'MINUTE_SECOND' => 3, 'STRAIGHT_JOIN' => 3, + 'SQL_BIG_RESULT' => 3, + 'DAY_MICROSECOND' => 3, + 'HOUR_MICROSECOND' => 3, 'SQL_SMALL_RESULT' => 3, + 'MINUTE_MICROSECOND' => 3, 'NO_WRITE_TO_BINLOG' => 3, 'SECOND_MICROSECOND' => 3, + 'SQL_CALC_FOUND_ROWS' => 3, + 'MASTER_SSL_VERIFY_SERVER_CERT' => 3, + + 'GROUP BY' => 7, 'NOT NULL' => 7, 'ORDER BY' => 7, 'SET NULL' => 7, + 'AND CHAIN' => 7, 'FULL JOIN' => 7, 'IF EXISTS' => 7, 'LEFT JOIN' => 7, + 'LESS THAN' => 7, 'LOAD DATA' => 7, 'NO ACTION' => 7, 'ON DELETE' => 7, + 'ON UPDATE' => 7, 'UNION ALL' => 7, + 'CROSS JOIN' => 7, 'ESCAPED BY' => 7, 'FOR UPDATE' => 7, 'INNER JOIN' => 7, + 'LINEAR KEY' => 7, 'NO RELEASE' => 7, 'OR REPLACE' => 7, 'RIGHT JOIN' => 7, + 'ENCLOSED BY' => 7, 'LINEAR HASH' => 7, 'STARTING BY' => 7, + 'AND NO CHAIN' => 7, 'FOR EACH ROW' => 7, 'NATURAL JOIN' => 7, 'PARTITION BY' => 7, + 'SET PASSWORD' => 7, 'SQL SECURITY' => 7, + 'CHARACTER SET' => 7, 'IF NOT EXISTS' => 7, 'TERMINATED BY' => 7, + 'DATA DIRECTORY' => 7, 'UNION DISTINCT' => 7, + 'DEFAULT CHARSET' => 7, 'DEFAULT COLLATE' => 7, 'FULL OUTER JOIN' => 7, 'INDEX DIRECTORY' => 7, + 'LEFT OUTER JOIN' => 7, 'SUBPARTITION BY' => 7, + 'GENERATED ALWAYS' => 7, 'RIGHT OUTER JOIN' => 7, + 'NATURAL LEFT JOIN' => 7, 'START TRANSACTION' => 7, + 'LOCK IN SHARE MODE' => 7, 'NATURAL RIGHT JOIN' => 7, 'SELECT TRANSACTION' => 7, + 'DEFAULT CHARACTER SET' => 7, + 'NATURAL LEFT OUTER JOIN' => 7, + 'NATURAL RIGHT OUTER JOIN' => 7, 'WITH CONSISTENT SNAPSHOT' => 7, + + 'BIT' => 9, 'XML' => 9, + 'ENUM' => 9, 'JSON' => 9, 'TEXT' => 9, + 'ARRAY' => 9, + 'SERIAL' => 9, + 'BOOLEAN' => 9, + 'DATETIME' => 9, 'GEOMETRY' => 9, 'MULTISET' => 9, + 'MULTILINEPOINT' => 9, + 'MULTILINEPOLYGON' => 9, + + 'INT' => 11, 'SET' => 11, + 'BLOB' => 11, 'REAL' => 11, + 'FLOAT' => 11, + 'BIGINT' => 11, 'DOUBLE' => 11, + 'DECIMAL' => 11, 'INTEGER' => 11, 'NUMERIC' => 11, 'TINYINT' => 11, 'VARCHAR' => 11, + 'LONGBLOB' => 11, 'LONGTEXT' => 11, 'SMALLINT' => 11, 'TINYBLOB' => 11, 'TINYTEXT' => 11, + 'CHARACTER' => 11, 'MEDIUMINT' => 11, 'VARBINARY' => 11, + 'MEDIUMBLOB' => 11, 'MEDIUMTEXT' => 11, + + 'BINARY VARYING' => 15, + + 'KEY' => 19, + 'INDEX' => 19, + 'UNIQUE' => 19, + 'SPATIAL' => 19, + 'FULLTEXT' => 19, + + 'INDEX KEY' => 23, + 'UNIQUE KEY' => 23, + 'FOREIGN KEY' => 23, 'PRIMARY KEY' => 23, 'SPATIAL KEY' => 23, + 'FULLTEXT KEY' => 23, 'UNIQUE INDEX' => 23, + 'SPATIAL INDEX' => 23, + 'FULLTEXT INDEX' => 23, + + 'X' => 33, 'Y' => 33, + 'LN' => 33, 'PI' => 33, + 'ABS' => 33, 'AVG' => 33, 'BIN' => 33, 'COS' => 33, 'COT' => 33, 'DAY' => 33, + 'ELT' => 33, 'EXP' => 33, 'HEX' => 33, 'LOG' => 33, 'MAX' => 33, 'MD5' => 33, + 'MID' => 33, 'MIN' => 33, 'NOW' => 33, 'OCT' => 33, 'ORD' => 33, 'POW' => 33, + 'SHA' => 33, 'SIN' => 33, 'STD' => 33, 'SUM' => 33, 'TAN' => 33, + 'ACOS' => 33, 'AREA' => 33, 'ASIN' => 33, 'ATAN' => 33, 'CAST' => 33, 'CEIL' => 33, + 'CONV' => 33, 'HOUR' => 33, 'LOG2' => 33, 'LPAD' => 33, 'RAND' => 33, 'RPAD' => 33, + 'SHA1' => 33, 'SIGN' => 33, 'SQRT' => 33, 'SRID' => 33, 'TRIM' => 33, 'USER' => 33, + 'UUID' => 33, 'WEEK' => 33, + 'ASCII' => 33, 'ASWKB' => 33, 'ASWKT' => 33, 'ATAN2' => 33, 'COUNT' => 33, + 'CRC32' => 33, 'DECOD' => 33, 'FIELD' => 33, 'FLOOR' => 33, 'INSTR' => 33, + 'LCASE' => 33, 'LEAST' => 33, 'LOG10' => 33, 'LOWER' => 33, 'LTRIM' => 33, + 'MONTH' => 33, 'POWER' => 33, 'QUOTE' => 33, 'ROUND' => 33, 'RTRIM' => 33, + 'SLEEP' => 33, 'SPACE' => 33, 'UCASE' => 33, 'UNHEX' => 33, 'UPPER' => 33, + 'ASTEXT' => 33, 'BIT_OR' => 33, 'CONCAT' => 33, 'ENCODE' => 33, 'EQUALS' => 33, + 'FORMAT' => 33, 'IFNULL' => 33, 'ISNULL' => 33, 'LENGTH' => 33, 'LOCATE' => 33, + 'MINUTE' => 33, 'NULLIF' => 33, 'POINTN' => 33, 'SECOND' => 33, 'STDDEV' => 33, + 'STRCMP' => 33, 'SUBSTR' => 33, 'WITHIN' => 33, + 'ADDDATE' => 33, 'ADDTIME' => 33, 'AGAINST' => 33, 'BIT_AND' => 33, 'BIT_XOR' => 33, + 'CEILING' => 33, 'CHARSET' => 33, 'CROSSES' => 33, 'CURDATE' => 33, 'CURTIME' => 33, + 'DAYNAME' => 33, 'DEGREES' => 33, 'ENCRYPT' => 33, 'EXTRACT' => 33, 'GLENGTH' => 33, + 'ISEMPTY' => 33, 'QUARTER' => 33, 'RADIANS' => 33, 'REVERSE' => 33, 'SOUNDEX' => 33, + 'SUBDATE' => 33, 'SUBTIME' => 33, 'SYSDATE' => 33, 'TOUCHES' => 33, 'TO_DAYS' => 33, + 'VAR_POP' => 33, 'VERSION' => 33, 'WEEKDAY' => 33, + 'ASBINARY' => 33, 'CENTROID' => 33, 'COALESCE' => 33, 'COMPRESS' => 33, 'CONTAINS' => 33, + 'DATEDIFF' => 33, 'DATE_ADD' => 33, 'DATE_SUB' => 33, 'DISJOINT' => 33, 'ENDPOINT' => 33, + 'ENVELOPE' => 33, 'GET_LOCK' => 33, 'GREATEST' => 33, 'ISCLOSED' => 33, 'ISSIMPLE' => 33, + 'MAKEDATE' => 33, 'MAKETIME' => 33, 'MAKE_SET' => 33, 'MBREQUAL' => 33, 'OVERLAPS' => 33, + 'PASSWORD' => 33, 'POSITION' => 33, 'TIMEDIFF' => 33, 'TRUNCATE' => 33, 'VARIANCE' => 33, + 'VAR_SAMP' => 33, 'YEARWEEK' => 33, + 'BENCHMARK' => 33, 'BIT_COUNT' => 33, 'COLLATION' => 33, 'CONCAT_WS' => 33, + 'DAYOFWEEK' => 33, 'DAYOFYEAR' => 33, 'DIMENSION' => 33, 'FROM_DAYS' => 33, + 'GEOMETRYN' => 33, 'INET_ATON' => 33, 'INET_NTOA' => 33, 'LOAD_FILE' => 33, + 'MBRWITHIN' => 33, 'MONTHNAME' => 33, 'NUMPOINTS' => 33, 'ROW_COUNT' => 33, + 'SUBSTRING' => 33, 'UPDATEXML' => 33, + 'BIT_LENGTH' => 33, 'CONVERT_TZ' => 33, 'DAYOFMONTH' => 33, 'EXPORT_SET' => 33, + 'FOUND_ROWS' => 33, 'GET_FORMAT' => 33, 'INTERSECTS' => 33, 'MBRTOUCHES' => 33, + 'MULTIPOINT' => 33, 'NAME_CONST' => 33, 'PERIOD_ADD' => 33, 'STARTPOINT' => 33, + 'STDDEV_POP' => 33, 'UNCOMPRESS' => 33, 'UUID_SHORT' => 33, 'WEEKOFYEAR' => 33, + 'AES_DECRYPT' => 33, 'AES_ENCRYPT' => 33, 'CHAR_LENGTH' => 33, 'DATE_FORMAT' => 33, + 'DES_DECRYPT' => 33, 'DES_ENCRYPT' => 33, 'FIND_IN_SET' => 33, 'GEOMFROMWKB' => 33, + 'LINEFROMWKB' => 33, 'MBRCONTAINS' => 33, 'MBRDISJOINT' => 33, 'MBROVERLAPS' => 33, + 'MICROSECOND' => 33, 'PERIOD_DIFF' => 33, 'POLYFROMWKB' => 33, 'SEC_TO_TIME' => 33, + 'STDDEV_SAMP' => 33, 'STR_TO_DATE' => 33, 'SYSTEM_USER' => 33, 'TIME_FORMAT' => 33, + 'TIME_TO_SEC' => 33, + 'COERCIBILITY' => 33, 'EXTERIORRING' => 33, 'EXTRACTVALUE' => 33, 'GEOMETRYTYPE' => 33, + 'GEOMFROMTEXT' => 33, 'GROUP_CONCAT' => 33, 'IS_FREE_LOCK' => 33, 'IS_USED_LOCK' => 33, + 'LINEFROMTEXT' => 33, 'MLINEFROMWKB' => 33, 'MPOLYFROMWKB' => 33, 'MULTIPOLYGON' => 33, + 'OCTET_LENGTH' => 33, 'OLD_PASSWORD' => 33, 'POINTFROMWKB' => 33, 'POLYFROMTEXT' => 33, + 'RELEASE_LOCK' => 33, 'SESSION_USER' => 33, 'TIMESTAMPADD' => 33, + 'CONNECTION_ID' => 33, 'FROM_UNIXTIME' => 33, 'INTERIORRINGN' => 33, 'MBRINTERSECTS' => 33, + 'MLINEFROMTEXT' => 33, 'MPOINTFROMWKB' => 33, 'MPOLYFROMTEXT' => 33, 'NUMGEOMETRIES' => 33, + 'POINTFROMTEXT' => 33, 'TIMESTAMPDIFF' => 33, + 'LAST_INSERT_ID' => 33, 'MPOINTFROMTEXT' => 33, 'POLYGONFROMWKB' => 33, 'UNIX_TIMESTAMP' => 33, + 'GEOMCOLLFROMWKB' => 33, 'MASTER_POS_WAIT' => 33, 'POLYGONFROMTEXT' => 33, 'SUBSTRING_INDEX' => 33, + 'CHARACTER_LENGTH' => 33, 'GEOMCOLLFROMTEXT' => 33, 'GEOMETRYFROMTEXT' => 33, + 'NUMINTERIORRINGS' => 33, + 'LINESTRINGFROMWKB' => 33, 'MULTIPOINTFROMWKB' => 33, + 'MULTIPOINTFROMTEXT' => 33, + 'MULTIPOLYGONFROMWKB' => 33, 'UNCOMPRESSED_LENGTH' => 33, + 'MULTIPOLYGONFROMTEXT' => 33, + 'MULTILINESTRINGFROMWKB' => 33, + 'MULTILINESTRINGFROMTEXT' => 33, + 'GEOMETRYCOLLECTIONFROMWKB' => 33, + 'GEOMETRYCOLLECTIONFROMTEXT' => 33, + + 'IF' => 35, 'IN' => 35, + 'MOD' => 35, + 'LEFT' => 35, + 'MATCH' => 35, 'RIGHT' => 35, + 'EXISTS' => 35, 'INSERT' => 35, 'REPEAT' => 35, 'SCHEMA' => 35, 'VALUES' => 35, + 'CONVERT' => 35, 'DEFAULT' => 35, 'REPLACE' => 35, + 'DATABASE' => 35, 'UTC_DATE' => 35, 'UTC_TIME' => 35, + 'LOCALTIME' => 35, + 'CURRENT_DATE' => 35, 'CURRENT_TIME' => 35, 'CURRENT_USER' => 35, + 'UTC_TIMESTAMP' => 35, + 'LOCALTIMESTAMP' => 35, + 'CURRENT_TIMESTAMP' => 35, + + 'NOT IN' => 39, + + 'DATE' => 41, 'TIME' => 41, 'YEAR' => 41, + 'POINT' => 41, + 'POLYGON' => 41, + 'TIMESTAMP' => 41, + 'LINESTRING' => 41, + 'MULTILINESTRING' => 41, + 'GEOMETRYCOLLECTION' => 41, + + 'CHAR' => 43, + 'BINARY' => 43, + 'INTERVAL' => 43, + ]; +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Contexts/ContextMySql50500.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Contexts/ContextMySql50500.php new file mode 100644 index 0000000000..e69c22556e --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Contexts/ContextMySql50500.php @@ -0,0 +1,300 @@ + + * @phpstan-var non-empty-array + */ + public static $KEYWORDS = [ + 'AT' => 1, 'DO' => 1, 'IO' => 1, 'NO' => 1, 'XA' => 1, + 'ANY' => 1, 'CPU' => 1, 'END' => 1, 'IPC' => 1, 'NDB' => 1, 'NEW' => 1, + 'ONE' => 1, 'ROW' => 1, + 'BOOL' => 1, 'BYTE' => 1, 'CODE' => 1, 'CUBE' => 1, 'DATA' => 1, 'DISK' => 1, + 'ENDS' => 1, 'FAST' => 1, 'FILE' => 1, 'FULL' => 1, 'HASH' => 1, 'HELP' => 1, + 'HOST' => 1, 'LAST' => 1, 'LESS' => 1, 'LIST' => 1, 'LOGS' => 1, 'MODE' => 1, + 'NAME' => 1, 'NEXT' => 1, 'NONE' => 1, 'OPEN' => 1, 'PAGE' => 1, 'PORT' => 1, + 'PREV' => 1, 'ROWS' => 1, 'SLOW' => 1, 'SOME' => 1, 'STOP' => 1, 'THAN' => 1, + 'TYPE' => 1, 'VIEW' => 1, 'WAIT' => 1, 'WORK' => 1, 'X509' => 1, + 'AFTER' => 1, 'BEGIN' => 1, 'BLOCK' => 1, 'BTREE' => 1, 'CACHE' => 1, + 'CHAIN' => 1, 'CLOSE' => 1, 'ERROR' => 1, 'EVENT' => 1, 'EVERY' => 1, + 'FIRST' => 1, 'FIXED' => 1, 'FLUSH' => 1, 'FOUND' => 1, 'HOSTS' => 1, + 'LEVEL' => 1, 'LOCAL' => 1, 'LOCKS' => 1, 'MERGE' => 1, 'MUTEX' => 1, + 'NAMES' => 1, 'NCHAR' => 1, 'OWNER' => 1, 'PHASE' => 1, 'PROXY' => 1, + 'QUERY' => 1, 'QUICK' => 1, 'RELAY' => 1, 'RESET' => 1, 'RTREE' => 1, + 'SHARE' => 1, 'SLAVE' => 1, 'START' => 1, 'SUPER' => 1, 'SWAPS' => 1, + 'TYPES' => 1, 'UNTIL' => 1, 'VALUE' => 1, + 'ACTION' => 1, 'BACKUP' => 1, 'BINLOG' => 1, 'CIPHER' => 1, 'CLIENT' => 1, + 'COMMIT' => 1, 'ENABLE' => 1, 'ENGINE' => 1, 'ERRORS' => 1, 'ESCAPE' => 1, + 'EVENTS' => 1, 'FAULTS' => 1, 'FIELDS' => 1, 'GLOBAL' => 1, 'GRANTS' => 1, + 'IMPORT' => 1, 'INNODB' => 1, 'ISSUER' => 1, 'LEAVES' => 1, 'MASTER' => 1, + 'MEDIUM' => 1, 'MEMORY' => 1, 'MODIFY' => 1, 'OFFSET' => 1, 'PARSER' => 1, + 'PLUGIN' => 1, 'RELOAD' => 1, 'REMOVE' => 1, 'REPAIR' => 1, 'RESUME' => 1, + 'ROLLUP' => 1, 'SERVER' => 1, 'SIGNED' => 1, 'SIMPLE' => 1, 'SOCKET' => 1, + 'SONAME' => 1, 'SOUNDS' => 1, 'SOURCE' => 1, 'STARTS' => 1, 'STATUS' => 1, + 'STRING' => 1, 'TABLES' => 1, + 'AUTHORS' => 1, 'CHANGED' => 1, 'COLUMNS' => 1, 'COMMENT' => 1, 'COMPACT' => 1, + 'CONTEXT' => 1, 'DEFINER' => 1, 'DISABLE' => 1, 'DISCARD' => 1, 'DYNAMIC' => 1, + 'ENGINES' => 1, 'EXECUTE' => 1, 'GENERAL' => 1, 'HANDLER' => 1, 'INDEXES' => 1, + 'INSTALL' => 1, 'INVOKER' => 1, 'LOGFILE' => 1, 'MIGRATE' => 1, 'NO_WAIT' => 1, + 'OPTIONS' => 1, 'PARTIAL' => 1, 'PLUGINS' => 1, 'PREPARE' => 1, 'PROFILE' => 1, + 'REBUILD' => 1, 'RECOVER' => 1, 'RESTORE' => 1, 'RETURNS' => 1, 'ROUTINE' => 1, + 'SESSION' => 1, 'STORAGE' => 1, 'SUBJECT' => 1, 'SUSPEND' => 1, 'UNICODE' => 1, + 'UNKNOWN' => 1, 'UPGRADE' => 1, 'USE_FRM' => 1, 'VIRTUAL' => 1, 'WRAPPER' => 1, + 'CASCADED' => 1, 'CHECKSUM' => 1, 'DATAFILE' => 1, 'DUMPFILE' => 1, 'EXTENDED' => 1, + 'FUNCTION' => 1, 'INNOBASE' => 1, 'LANGUAGE' => 1, 'MAX_ROWS' => 1, 'MAX_SIZE' => 1, + 'MIN_ROWS' => 1, 'NATIONAL' => 1, 'NVARCHAR' => 1, 'ONE_SHOT' => 1, 'PRESERVE' => 1, + 'PROFILES' => 1, 'REDOFILE' => 1, 'RELAYLOG' => 1, 'ROLLBACK' => 1, 'SCHEDULE' => 1, + 'SECURITY' => 1, 'SHUTDOWN' => 1, 'SNAPSHOT' => 1, 'SWITCHES' => 1, 'TRIGGERS' => 1, + 'UNDOFILE' => 1, 'WARNINGS' => 1, + 'AGGREGATE' => 1, 'ALGORITHM' => 1, 'COMMITTED' => 1, 'DIRECTORY' => 1, + 'DUPLICATE' => 1, 'EXPANSION' => 1, 'IO_THREAD' => 1, 'ISOLATION' => 1, + 'NODEGROUP' => 1, 'PACK_KEYS' => 1, 'PARTITION' => 1, 'READ_ONLY' => 1, + 'REDUNDANT' => 1, 'SAVEPOINT' => 1, 'SQL_CACHE' => 1, 'TEMPORARY' => 1, + 'TEMPTABLE' => 1, 'UNDEFINED' => 1, 'UNINSTALL' => 1, 'VARIABLES' => 1, + 'COMPLETION' => 1, 'COMPRESSED' => 1, 'CONCURRENT' => 1, 'CONNECTION' => 1, + 'CONSISTENT' => 1, 'DEALLOCATE' => 1, 'IDENTIFIED' => 1, 'MASTER_SSL' => 1, + 'NDBCLUSTER' => 1, 'PARTITIONS' => 1, 'PERSISTENT' => 1, 'PRIVILEGES' => 1, + 'REORGANIZE' => 1, 'REPEATABLE' => 1, 'ROW_FORMAT' => 1, 'SQL_THREAD' => 1, + 'TABLESPACE' => 1, 'TABLE_NAME' => 1, + 'COLUMN_NAME' => 1, 'CURSOR_NAME' => 1, 'EXTENT_SIZE' => 1, 'FRAC_SECOND' => 1, + 'MASTER_HOST' => 1, 'MASTER_PORT' => 1, 'MASTER_USER' => 1, 'MYSQL_ERRNO' => 1, + 'PROCESSLIST' => 1, 'REPLICATION' => 1, 'SCHEMA_NAME' => 1, 'SQL_TSI_DAY' => 1, + 'TRANSACTION' => 1, 'UNCOMMITTED' => 1, + 'CATALOG_NAME' => 1, 'CLASS_ORIGIN' => 1, 'CONTRIBUTORS' => 1, 'DES_KEY_FILE' => 1, + 'INITIAL_SIZE' => 1, 'MESSAGE_TEXT' => 1, 'PARTITIONING' => 1, 'RELAY_THREAD' => 1, + 'SERIALIZABLE' => 1, 'SQL_NO_CACHE' => 1, 'SQL_TSI_HOUR' => 1, 'SQL_TSI_WEEK' => 1, + 'SQL_TSI_YEAR' => 1, 'SUBPARTITION' => 1, + 'INSERT_METHOD' => 1, 'MASTER_SSL_CA' => 1, 'RELAY_LOG_POS' => 1, 'SQL_TSI_MONTH' => 1, + 'SUBPARTITIONS' => 1, + 'AUTO_INCREMENT' => 1, 'AVG_ROW_LENGTH' => 1, 'KEY_BLOCK_SIZE' => 1, 'MASTER_LOG_POS' => 1, + 'MASTER_SSL_KEY' => 1, 'RELAY_LOG_FILE' => 1, 'SQL_TSI_MINUTE' => 1, 'SQL_TSI_SECOND' => 1, + 'TABLE_CHECKSUM' => 1, 'USER_RESOURCES' => 1, + 'AUTOEXTEND_SIZE' => 1, 'CONSTRAINT_NAME' => 1, 'DELAY_KEY_WRITE' => 1, 'MASTER_LOG_FILE' => 1, + 'MASTER_PASSWORD' => 1, 'MASTER_SSL_CERT' => 1, 'SQL_TSI_QUARTER' => 1, 'SUBCLASS_ORIGIN' => 1, + 'MASTER_SERVER_ID' => 1, 'REDO_BUFFER_SIZE' => 1, 'UNDO_BUFFER_SIZE' => 1, + 'CONSTRAINT_SCHEMA' => 1, 'IGNORE_SERVER_IDS' => 1, 'MASTER_SSL_CAPATH' => 1, + 'MASTER_SSL_CIPHER' => 1, 'SQL_BUFFER_RESULT' => 1, + 'CONSTRAINT_CATALOG' => 1, + 'SQL_TSI_FRAC_SECOND' => 1, + 'MASTER_CONNECT_RETRY' => 1, 'MAX_QUERIES_PER_HOUR' => 1, 'MAX_UPDATES_PER_HOUR' => 1, + 'MAX_USER_CONNECTIONS' => 1, + 'MASTER_HEARTBEAT_PERIOD' => 1, + 'MAX_CONNECTIONS_PER_HOUR' => 1, + + 'AS' => 3, 'BY' => 3, 'IS' => 3, 'ON' => 3, 'OR' => 3, 'TO' => 3, + 'ADD' => 3, 'ALL' => 3, 'AND' => 3, 'ASC' => 3, 'DEC' => 3, 'DIV' => 3, + 'FOR' => 3, 'NOT' => 3, 'OUT' => 3, 'SQL' => 3, 'SSL' => 3, 'USE' => 3, + 'XOR' => 3, + 'BOTH' => 3, 'CALL' => 3, 'CASE' => 3, 'DESC' => 3, 'DROP' => 3, 'DUAL' => 3, + 'EACH' => 3, 'ELSE' => 3, 'EXIT' => 3, 'FROM' => 3, 'INT1' => 3, 'INT2' => 3, + 'INT3' => 3, 'INT4' => 3, 'INT8' => 3, 'INTO' => 3, 'JOIN' => 3, 'KEYS' => 3, + 'KILL' => 3, 'LIKE' => 3, 'LOAD' => 3, 'LOCK' => 3, 'LONG' => 3, 'LOOP' => 3, + 'NULL' => 3, 'READ' => 3, 'SHOW' => 3, 'THEN' => 3, 'TRUE' => 3, 'UNDO' => 3, + 'WHEN' => 3, 'WITH' => 3, + 'ALTER' => 3, 'CHECK' => 3, 'CROSS' => 3, 'FALSE' => 3, 'FETCH' => 3, + 'FORCE' => 3, 'GRANT' => 3, 'GROUP' => 3, 'INNER' => 3, 'INOUT' => 3, + 'LEAVE' => 3, 'LIMIT' => 3, 'LINES' => 3, 'ORDER' => 3, 'OUTER' => 3, + 'PURGE' => 3, 'RANGE' => 3, 'READS' => 3, 'RLIKE' => 3, 'TABLE' => 3, + 'UNION' => 3, 'USAGE' => 3, 'USING' => 3, 'WHERE' => 3, 'WHILE' => 3, + 'WRITE' => 3, + 'BEFORE' => 3, 'CHANGE' => 3, 'COLUMN' => 3, 'CREATE' => 3, 'CURSOR' => 3, + 'DELETE' => 3, 'ELSEIF' => 3, 'FLOAT4' => 3, 'FLOAT8' => 3, 'HAVING' => 3, + 'IGNORE' => 3, 'INFILE' => 3, 'LINEAR' => 3, 'OPTION' => 3, 'REGEXP' => 3, + 'RENAME' => 3, 'RETURN' => 3, 'REVOKE' => 3, 'SELECT' => 3, 'SIGNAL' => 3, + 'UNLOCK' => 3, 'UPDATE' => 3, + 'ANALYZE' => 3, 'BETWEEN' => 3, 'CASCADE' => 3, 'COLLATE' => 3, 'DECLARE' => 3, + 'DELAYED' => 3, 'ESCAPED' => 3, 'EXPLAIN' => 3, 'FOREIGN' => 3, 'ITERATE' => 3, + 'LEADING' => 3, 'NATURAL' => 3, 'OUTFILE' => 3, 'PRIMARY' => 3, 'RELEASE' => 3, + 'REQUIRE' => 3, 'SCHEMAS' => 3, 'TRIGGER' => 3, 'VARYING' => 3, + 'CONTINUE' => 3, 'DAY_HOUR' => 3, 'DESCRIBE' => 3, 'DISTINCT' => 3, 'ENCLOSED' => 3, + 'MAXVALUE' => 3, 'MODIFIES' => 3, 'OPTIMIZE' => 3, 'RESIGNAL' => 3, 'RESTRICT' => 3, + 'SPECIFIC' => 3, 'SQLSTATE' => 3, 'STARTING' => 3, 'TRAILING' => 3, 'UNSIGNED' => 3, + 'ZEROFILL' => 3, + 'CONDITION' => 3, 'DATABASES' => 3, 'MIDDLEINT' => 3, 'PRECISION' => 3, + 'PROCEDURE' => 3, 'SENSITIVE' => 3, 'SEPARATOR' => 3, + 'ACCESSIBLE' => 3, 'ASENSITIVE' => 3, 'CONSTRAINT' => 3, 'DAY_MINUTE' => 3, + 'DAY_SECOND' => 3, 'OPTIONALLY' => 3, 'READ_WRITE' => 3, 'REFERENCES' => 3, + 'SQLWARNING' => 3, 'TERMINATED' => 3, 'YEAR_MONTH' => 3, + 'DISTINCTROW' => 3, 'HOUR_MINUTE' => 3, 'HOUR_SECOND' => 3, 'INSENSITIVE' => 3, + 'LOW_PRIORITY' => 3, 'SQLEXCEPTION' => 3, 'VARCHARACTER' => 3, + 'DETERMINISTIC' => 3, 'HIGH_PRIORITY' => 3, 'MINUTE_SECOND' => 3, 'STRAIGHT_JOIN' => 3, + 'SQL_BIG_RESULT' => 3, + 'DAY_MICROSECOND' => 3, + 'HOUR_MICROSECOND' => 3, 'SQL_SMALL_RESULT' => 3, + 'MINUTE_MICROSECOND' => 3, 'NO_WRITE_TO_BINLOG' => 3, 'SECOND_MICROSECOND' => 3, + 'SQL_CALC_FOUND_ROWS' => 3, + 'MASTER_SSL_VERIFY_SERVER_CERT' => 3, + + 'GROUP BY' => 7, 'NOT NULL' => 7, 'ORDER BY' => 7, 'SET NULL' => 7, + 'AND CHAIN' => 7, 'FULL JOIN' => 7, 'IF EXISTS' => 7, 'LEFT JOIN' => 7, + 'LESS THAN' => 7, 'LOAD DATA' => 7, 'NO ACTION' => 7, 'ON DELETE' => 7, + 'ON UPDATE' => 7, 'UNION ALL' => 7, + 'CROSS JOIN' => 7, 'ESCAPED BY' => 7, 'FOR UPDATE' => 7, 'INNER JOIN' => 7, + 'LINEAR KEY' => 7, 'NO RELEASE' => 7, 'OR REPLACE' => 7, 'RIGHT JOIN' => 7, + 'ENCLOSED BY' => 7, 'LINEAR HASH' => 7, 'STARTING BY' => 7, + 'AND NO CHAIN' => 7, 'FOR EACH ROW' => 7, 'NATURAL JOIN' => 7, 'PARTITION BY' => 7, + 'SET PASSWORD' => 7, 'SQL SECURITY' => 7, + 'CHARACTER SET' => 7, 'IF NOT EXISTS' => 7, 'TERMINATED BY' => 7, + 'DATA DIRECTORY' => 7, 'UNION DISTINCT' => 7, + 'DEFAULT CHARSET' => 7, 'DEFAULT COLLATE' => 7, 'FULL OUTER JOIN' => 7, 'INDEX DIRECTORY' => 7, + 'LEFT OUTER JOIN' => 7, 'SUBPARTITION BY' => 7, + 'GENERATED ALWAYS' => 7, 'RIGHT OUTER JOIN' => 7, + 'NATURAL LEFT JOIN' => 7, 'START TRANSACTION' => 7, + 'LOCK IN SHARE MODE' => 7, 'NATURAL RIGHT JOIN' => 7, 'SELECT TRANSACTION' => 7, + 'DEFAULT CHARACTER SET' => 7, + 'NATURAL LEFT OUTER JOIN' => 7, + 'NATURAL RIGHT OUTER JOIN' => 7, 'WITH CONSISTENT SNAPSHOT' => 7, + + 'BIT' => 9, 'XML' => 9, + 'ENUM' => 9, 'JSON' => 9, 'TEXT' => 9, + 'ARRAY' => 9, + 'SERIAL' => 9, + 'BOOLEAN' => 9, + 'DATETIME' => 9, 'GEOMETRY' => 9, 'MULTISET' => 9, + 'MULTILINEPOINT' => 9, + 'MULTILINEPOLYGON' => 9, + + 'INT' => 11, 'SET' => 11, + 'BLOB' => 11, 'REAL' => 11, + 'FLOAT' => 11, + 'BIGINT' => 11, 'DOUBLE' => 11, + 'DECIMAL' => 11, 'INTEGER' => 11, 'NUMERIC' => 11, 'TINYINT' => 11, 'VARCHAR' => 11, + 'LONGBLOB' => 11, 'LONGTEXT' => 11, 'SMALLINT' => 11, 'TINYBLOB' => 11, 'TINYTEXT' => 11, + 'CHARACTER' => 11, 'MEDIUMINT' => 11, 'VARBINARY' => 11, + 'MEDIUMBLOB' => 11, 'MEDIUMTEXT' => 11, + + 'BINARY VARYING' => 15, + + 'KEY' => 19, + 'INDEX' => 19, + 'UNIQUE' => 19, + 'SPATIAL' => 19, + 'FULLTEXT' => 19, + + 'INDEX KEY' => 23, + 'UNIQUE KEY' => 23, + 'FOREIGN KEY' => 23, 'PRIMARY KEY' => 23, 'SPATIAL KEY' => 23, + 'FULLTEXT KEY' => 23, 'UNIQUE INDEX' => 23, + 'SPATIAL INDEX' => 23, + 'FULLTEXT INDEX' => 23, + + 'X' => 33, 'Y' => 33, + 'LN' => 33, 'PI' => 33, + 'ABS' => 33, 'AVG' => 33, 'BIN' => 33, 'COS' => 33, 'COT' => 33, 'DAY' => 33, + 'ELT' => 33, 'EXP' => 33, 'HEX' => 33, 'LOG' => 33, 'MAX' => 33, 'MD5' => 33, + 'MID' => 33, 'MIN' => 33, 'NOW' => 33, 'OCT' => 33, 'ORD' => 33, 'POW' => 33, + 'SHA' => 33, 'SIN' => 33, 'STD' => 33, 'SUM' => 33, 'TAN' => 33, + 'ACOS' => 33, 'AREA' => 33, 'ASIN' => 33, 'ATAN' => 33, 'CAST' => 33, 'CEIL' => 33, + 'CONV' => 33, 'HOUR' => 33, 'LOG2' => 33, 'LPAD' => 33, 'RAND' => 33, 'RPAD' => 33, + 'SHA1' => 33, 'SHA2' => 33, 'SIGN' => 33, 'SQRT' => 33, 'SRID' => 33, 'TRIM' => 33, + 'USER' => 33, 'UUID' => 33, 'WEEK' => 33, + 'ASCII' => 33, 'ASWKB' => 33, 'ASWKT' => 33, 'ATAN2' => 33, 'COUNT' => 33, + 'CRC32' => 33, 'FIELD' => 33, 'FLOOR' => 33, 'INSTR' => 33, 'LCASE' => 33, + 'LEAST' => 33, 'LOG10' => 33, 'LOWER' => 33, 'LTRIM' => 33, 'MONTH' => 33, + 'POWER' => 33, 'QUOTE' => 33, 'ROUND' => 33, 'RTRIM' => 33, 'SLEEP' => 33, + 'SPACE' => 33, 'UCASE' => 33, 'UNHEX' => 33, 'UPPER' => 33, + 'ASTEXT' => 33, 'BIT_OR' => 33, 'CONCAT' => 33, 'DECODE' => 33, 'ENCODE' => 33, + 'EQUALS' => 33, 'FORMAT' => 33, 'IFNULL' => 33, 'ISNULL' => 33, 'LENGTH' => 33, + 'LOCATE' => 33, 'MINUTE' => 33, 'NULLIF' => 33, 'POINTN' => 33, 'SECOND' => 33, + 'STDDEV' => 33, 'STRCMP' => 33, 'SUBSTR' => 33, 'WITHIN' => 33, + 'ADDDATE' => 33, 'ADDTIME' => 33, 'AGAINST' => 33, 'BIT_AND' => 33, 'BIT_XOR' => 33, + 'CEILING' => 33, 'CHARSET' => 33, 'CROSSES' => 33, 'CURDATE' => 33, 'CURTIME' => 33, + 'DAYNAME' => 33, 'DEGREES' => 33, 'ENCRYPT' => 33, 'EXTRACT' => 33, 'GLENGTH' => 33, + 'ISEMPTY' => 33, 'QUARTER' => 33, 'RADIANS' => 33, 'REVERSE' => 33, 'SOUNDEX' => 33, + 'SUBDATE' => 33, 'SUBTIME' => 33, 'SYSDATE' => 33, 'TOUCHES' => 33, 'TO_DAYS' => 33, + 'VAR_POP' => 33, 'VERSION' => 33, 'WEEKDAY' => 33, + 'ASBINARY' => 33, 'CENTROID' => 33, 'COALESCE' => 33, 'COMPRESS' => 33, 'CONTAINS' => 33, + 'DATEDIFF' => 33, 'DATE_ADD' => 33, 'DATE_SUB' => 33, 'DISJOINT' => 33, 'ENDPOINT' => 33, + 'ENVELOPE' => 33, 'GET_LOCK' => 33, 'GREATEST' => 33, 'ISCLOSED' => 33, 'ISSIMPLE' => 33, + 'MAKEDATE' => 33, 'MAKETIME' => 33, 'MAKE_SET' => 33, 'MBREQUAL' => 33, 'OVERLAPS' => 33, + 'PASSWORD' => 33, 'POSITION' => 33, 'TIMEDIFF' => 33, 'TRUNCATE' => 33, 'VARIANCE' => 33, + 'VAR_SAMP' => 33, 'YEARWEEK' => 33, + 'BENCHMARK' => 33, 'BIT_COUNT' => 33, 'COLLATION' => 33, 'CONCAT_WS' => 33, + 'DAYOFWEEK' => 33, 'DAYOFYEAR' => 33, 'DIMENSION' => 33, 'FROM_DAYS' => 33, + 'GEOMETRYN' => 33, 'INET_ATON' => 33, 'INET_NTOA' => 33, 'LOAD_FILE' => 33, + 'MBRWITHIN' => 33, 'MONTHNAME' => 33, 'NUMPOINTS' => 33, 'ROW_COUNT' => 33, + 'SUBSTRING' => 33, 'UPDATEXML' => 33, + 'BIT_LENGTH' => 33, 'CONVERT_TZ' => 33, 'DAYOFMONTH' => 33, 'EXPORT_SET' => 33, + 'FOUND_ROWS' => 33, 'GET_FORMAT' => 33, 'INTERSECTS' => 33, 'MBRTOUCHES' => 33, + 'MULTIPOINT' => 33, 'NAME_CONST' => 33, 'PERIOD_ADD' => 33, 'STARTPOINT' => 33, + 'STDDEV_POP' => 33, 'TO_SECONDS' => 33, 'UNCOMPRESS' => 33, 'UUID_SHORT' => 33, + 'WEEKOFYEAR' => 33, + 'AES_DECRYPT' => 33, 'AES_ENCRYPT' => 33, 'CHAR_LENGTH' => 33, 'DATE_FORMAT' => 33, + 'DES_DECRYPT' => 33, 'DES_ENCRYPT' => 33, 'FIND_IN_SET' => 33, 'GEOMFROMWKB' => 33, + 'LINEFROMWKB' => 33, 'MBRCONTAINS' => 33, 'MBRDISJOINT' => 33, 'MBROVERLAPS' => 33, + 'MICROSECOND' => 33, 'PERIOD_DIFF' => 33, 'POLYFROMWKB' => 33, 'SEC_TO_TIME' => 33, + 'STDDEV_SAMP' => 33, 'STR_TO_DATE' => 33, 'SYSTEM_USER' => 33, 'TIME_FORMAT' => 33, + 'TIME_TO_SEC' => 33, + 'COERCIBILITY' => 33, 'EXTERIORRING' => 33, 'EXTRACTVALUE' => 33, 'GEOMETRYTYPE' => 33, + 'GEOMFROMTEXT' => 33, 'GROUP_CONCAT' => 33, 'IS_FREE_LOCK' => 33, 'IS_USED_LOCK' => 33, + 'LINEFROMTEXT' => 33, 'MLINEFROMWKB' => 33, 'MPOLYFROMWKB' => 33, 'MULTIPOLYGON' => 33, + 'OCTET_LENGTH' => 33, 'OLD_PASSWORD' => 33, 'POINTFROMWKB' => 33, 'POLYFROMTEXT' => 33, + 'RELEASE_LOCK' => 33, 'SESSION_USER' => 33, 'TIMESTAMPADD' => 33, + 'CONNECTION_ID' => 33, 'FROM_UNIXTIME' => 33, 'INTERIORRINGN' => 33, 'MBRINTERSECTS' => 33, + 'MLINEFROMTEXT' => 33, 'MPOINTFROMWKB' => 33, 'MPOLYFROMTEXT' => 33, 'NUMGEOMETRIES' => 33, + 'POINTFROMTEXT' => 33, 'TIMESTAMPDIFF' => 33, + 'LAST_INSERT_ID' => 33, 'MPOINTFROMTEXT' => 33, 'POLYGONFROMWKB' => 33, 'UNIX_TIMESTAMP' => 33, + 'GEOMCOLLFROMWKB' => 33, 'MASTER_POS_WAIT' => 33, 'POLYGONFROMTEXT' => 33, 'SUBSTRING_INDEX' => 33, + 'CHARACTER_LENGTH' => 33, 'GEOMCOLLFROMTEXT' => 33, 'GEOMETRYFROMTEXT' => 33, + 'NUMINTERIORRINGS' => 33, + 'LINESTRINGFROMWKB' => 33, 'MULTIPOINTFROMWKB' => 33, + 'MULTIPOINTFROMTEXT' => 33, + 'MULTIPOLYGONFROMWKB' => 33, 'UNCOMPRESSED_LENGTH' => 33, + 'MULTIPOLYGONFROMTEXT' => 33, + 'MULTILINESTRINGFROMWKB' => 33, + 'MULTILINESTRINGFROMTEXT' => 33, + 'GEOMETRYCOLLECTIONFROMWKB' => 33, + 'GEOMETRYCOLLECTIONFROMTEXT' => 33, + + 'IF' => 35, 'IN' => 35, + 'MOD' => 35, + 'LEFT' => 35, + 'MATCH' => 35, 'RIGHT' => 35, + 'EXISTS' => 35, 'INSERT' => 35, 'REPEAT' => 35, 'SCHEMA' => 35, 'VALUES' => 35, + 'CONVERT' => 35, 'DEFAULT' => 35, 'REPLACE' => 35, + 'DATABASE' => 35, 'UTC_DATE' => 35, 'UTC_TIME' => 35, + 'LOCALTIME' => 35, + 'CURRENT_DATE' => 35, 'CURRENT_TIME' => 35, 'CURRENT_USER' => 35, + 'UTC_TIMESTAMP' => 35, + 'LOCALTIMESTAMP' => 35, + 'CURRENT_TIMESTAMP' => 35, + + 'NOT IN' => 39, + + 'DATE' => 41, 'TIME' => 41, 'YEAR' => 41, + 'POINT' => 41, + 'POLYGON' => 41, + 'TIMESTAMP' => 41, + 'LINESTRING' => 41, + 'MULTILINESTRING' => 41, + 'GEOMETRYCOLLECTION' => 41, + + 'CHAR' => 43, + 'BINARY' => 43, + 'INTERVAL' => 43, + ]; +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Contexts/ContextMySql50600.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Contexts/ContextMySql50600.php new file mode 100644 index 0000000000..7e1cf3c994 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Contexts/ContextMySql50600.php @@ -0,0 +1,325 @@ + + * @phpstan-var non-empty-array + */ + public static $KEYWORDS = [ + 'AT' => 1, 'DO' => 1, 'IO' => 1, 'NO' => 1, 'XA' => 1, + 'ANY' => 1, 'CPU' => 1, 'END' => 1, 'IPC' => 1, 'NDB' => 1, 'NEW' => 1, + 'ONE' => 1, 'ROW' => 1, + 'BOOL' => 1, 'BYTE' => 1, 'CODE' => 1, 'CUBE' => 1, 'DATA' => 1, 'DISK' => 1, + 'ENDS' => 1, 'FAST' => 1, 'FILE' => 1, 'FULL' => 1, 'HASH' => 1, 'HELP' => 1, + 'HOST' => 1, 'LAST' => 1, 'LESS' => 1, 'LIST' => 1, 'LOGS' => 1, 'MODE' => 1, + 'NAME' => 1, 'NEXT' => 1, 'NONE' => 1, 'ONLY' => 1, 'OPEN' => 1, 'PAGE' => 1, + 'PORT' => 1, 'PREV' => 1, 'ROWS' => 1, 'SLOW' => 1, 'SOME' => 1, 'STOP' => 1, + 'THAN' => 1, 'TYPE' => 1, 'VIEW' => 1, 'WAIT' => 1, 'WORK' => 1, 'X509' => 1, + 'AFTER' => 1, 'BEGIN' => 1, 'BLOCK' => 1, 'BTREE' => 1, 'CACHE' => 1, + 'CHAIN' => 1, 'CLOSE' => 1, 'ERROR' => 1, 'EVENT' => 1, 'EVERY' => 1, + 'FIRST' => 1, 'FIXED' => 1, 'FLUSH' => 1, 'FOUND' => 1, 'HOSTS' => 1, + 'LEVEL' => 1, 'LOCAL' => 1, 'LOCKS' => 1, 'MERGE' => 1, 'MUTEX' => 1, + 'NAMES' => 1, 'NCHAR' => 1, 'OWNER' => 1, 'PHASE' => 1, 'PROXY' => 1, + 'QUERY' => 1, 'QUICK' => 1, 'RELAY' => 1, 'RESET' => 1, 'RTREE' => 1, + 'SHARE' => 1, 'SLAVE' => 1, 'START' => 1, 'SUPER' => 1, 'SWAPS' => 1, + 'TYPES' => 1, 'UNTIL' => 1, 'VALUE' => 1, + 'ACTION' => 1, 'BACKUP' => 1, 'BINLOG' => 1, 'CIPHER' => 1, 'CLIENT' => 1, + 'COMMIT' => 1, 'ENABLE' => 1, 'ENGINE' => 1, 'ERRORS' => 1, 'ESCAPE' => 1, + 'EVENTS' => 1, 'EXPIRE' => 1, 'EXPORT' => 1, 'FAULTS' => 1, 'FIELDS' => 1, + 'GLOBAL' => 1, 'GRANTS' => 1, 'IMPORT' => 1, 'ISSUER' => 1, 'LEAVES' => 1, + 'MASTER' => 1, 'MEDIUM' => 1, 'MEMORY' => 1, 'MODIFY' => 1, 'NUMBER' => 1, + 'OFFSET' => 1, 'PARSER' => 1, 'PLUGIN' => 1, 'RELOAD' => 1, 'REMOVE' => 1, + 'REPAIR' => 1, 'RESUME' => 1, 'ROLLUP' => 1, 'SERVER' => 1, 'SIGNED' => 1, + 'SIMPLE' => 1, 'SOCKET' => 1, 'SONAME' => 1, 'SOUNDS' => 1, 'SOURCE' => 1, + 'STARTS' => 1, 'STATUS' => 1, 'STRING' => 1, 'TABLES' => 1, + 'ANALYSE' => 1, 'AUTHORS' => 1, 'CHANGED' => 1, 'COLUMNS' => 1, 'COMMENT' => 1, + 'COMPACT' => 1, 'CONTEXT' => 1, 'CURRENT' => 1, 'DEFINER' => 1, 'DISABLE' => 1, + 'DISCARD' => 1, 'DYNAMIC' => 1, 'ENGINES' => 1, 'EXECUTE' => 1, 'GENERAL' => 1, + 'HANDLER' => 1, 'INDEXES' => 1, 'INSTALL' => 1, 'INVOKER' => 1, 'LOGFILE' => 1, + 'MIGRATE' => 1, 'NO_WAIT' => 1, 'OPTIONS' => 1, 'PARTIAL' => 1, 'PLUGINS' => 1, + 'PREPARE' => 1, 'PROFILE' => 1, 'REBUILD' => 1, 'RECOVER' => 1, 'RESTORE' => 1, + 'RETURNS' => 1, 'ROUTINE' => 1, 'SESSION' => 1, 'STORAGE' => 1, 'SUBJECT' => 1, + 'SUSPEND' => 1, 'UNICODE' => 1, 'UNKNOWN' => 1, 'UPGRADE' => 1, 'USE_FRM' => 1, + 'VIRTUAL' => 1, 'WRAPPER' => 1, + 'CASCADED' => 1, 'CHECKSUM' => 1, 'DATAFILE' => 1, 'DUMPFILE' => 1, 'EXCHANGE' => 1, + 'EXTENDED' => 1, 'FUNCTION' => 1, 'LANGUAGE' => 1, 'MAX_ROWS' => 1, 'MAX_SIZE' => 1, + 'MIN_ROWS' => 1, 'NATIONAL' => 1, 'NVARCHAR' => 1, 'ONE_SHOT' => 1, 'PRESERVE' => 1, + 'PROFILES' => 1, 'REDOFILE' => 1, 'RELAYLOG' => 1, 'ROLLBACK' => 1, 'SCHEDULE' => 1, + 'SECURITY' => 1, 'SHUTDOWN' => 1, 'SNAPSHOT' => 1, 'SWITCHES' => 1, 'TRIGGERS' => 1, + 'UNDOFILE' => 1, 'WARNINGS' => 1, + 'AGGREGATE' => 1, 'ALGORITHM' => 1, 'COMMITTED' => 1, 'DIRECTORY' => 1, + 'DUPLICATE' => 1, 'EXPANSION' => 1, 'IO_THREAD' => 1, 'ISOLATION' => 1, + 'NODEGROUP' => 1, 'PACK_KEYS' => 1, 'READ_ONLY' => 1, 'REDUNDANT' => 1, + 'SAVEPOINT' => 1, 'SQL_CACHE' => 1, 'TEMPORARY' => 1, 'TEMPTABLE' => 1, + 'UNDEFINED' => 1, 'UNINSTALL' => 1, 'VARIABLES' => 1, + 'COMPLETION' => 1, 'COMPRESSED' => 1, 'CONCURRENT' => 1, 'CONNECTION' => 1, + 'CONSISTENT' => 1, 'DEALLOCATE' => 1, 'IDENTIFIED' => 1, 'MASTER_SSL' => 1, + 'NDBCLUSTER' => 1, 'PARTITIONS' => 1, 'PERSISTENT' => 1, 'PLUGIN_DIR' => 1, + 'PRIVILEGES' => 1, 'REORGANIZE' => 1, 'REPEATABLE' => 1, 'ROW_FORMAT' => 1, + 'SQL_THREAD' => 1, 'TABLESPACE' => 1, 'TABLE_NAME' => 1, + 'COLUMN_NAME' => 1, 'CURSOR_NAME' => 1, 'DIAGNOSTICS' => 1, 'EXTENT_SIZE' => 1, + 'MASTER_HOST' => 1, 'MASTER_PORT' => 1, 'MASTER_USER' => 1, 'MYSQL_ERRNO' => 1, + 'PROCESSLIST' => 1, 'REPLICATION' => 1, 'SCHEMA_NAME' => 1, 'SQL_TSI_DAY' => 1, + 'TRANSACTION' => 1, 'UNCOMMITTED' => 1, + 'CATALOG_NAME' => 1, 'CLASS_ORIGIN' => 1, 'CONTRIBUTORS' => 1, 'DEFAULT_AUTH' => 1, + 'DES_KEY_FILE' => 1, 'INITIAL_SIZE' => 1, 'MASTER_DELAY' => 1, 'MESSAGE_TEXT' => 1, + 'PARTITIONING' => 1, 'RELAY_THREAD' => 1, 'SERIALIZABLE' => 1, 'SQL_NO_CACHE' => 1, + 'SQL_TSI_HOUR' => 1, 'SQL_TSI_WEEK' => 1, 'SQL_TSI_YEAR' => 1, 'SUBPARTITION' => 1, + 'COLUMN_FORMAT' => 1, 'INSERT_METHOD' => 1, 'MASTER_SSL_CA' => 1, 'RELAY_LOG_POS' => 1, + 'SQL_TSI_MONTH' => 1, 'SUBPARTITIONS' => 1, + 'AUTO_INCREMENT' => 1, 'AVG_ROW_LENGTH' => 1, 'KEY_BLOCK_SIZE' => 1, 'MASTER_LOG_POS' => 1, + 'MASTER_SSL_CRL' => 1, 'MASTER_SSL_KEY' => 1, 'RELAY_LOG_FILE' => 1, 'SQL_TSI_MINUTE' => 1, + 'SQL_TSI_SECOND' => 1, 'TABLE_CHECKSUM' => 1, 'USER_RESOURCES' => 1, + 'AUTOEXTEND_SIZE' => 1, 'CONSTRAINT_NAME' => 1, 'DELAY_KEY_WRITE' => 1, 'MASTER_LOG_FILE' => 1, + 'MASTER_PASSWORD' => 1, 'MASTER_SSL_CERT' => 1, 'SQL_AFTER_GTIDS' => 1, 'SQL_TSI_QUARTER' => 1, + 'SUBCLASS_ORIGIN' => 1, + 'MASTER_SERVER_ID' => 1, 'REDO_BUFFER_SIZE' => 1, 'SQL_BEFORE_GTIDS' => 1, + 'STATS_PERSISTENT' => 1, 'UNDO_BUFFER_SIZE' => 1, + 'CONSTRAINT_SCHEMA' => 1, 'IGNORE_SERVER_IDS' => 1, 'MASTER_SSL_CAPATH' => 1, + 'MASTER_SSL_CIPHER' => 1, 'RETURNED_SQLSTATE' => 1, 'SQL_BUFFER_RESULT' => 1, + 'STATS_AUTO_RECALC' => 1, + 'CONSTRAINT_CATALOG' => 1, 'MASTER_RETRY_COUNT' => 1, 'MASTER_SSL_CRLPATH' => 1, + 'SQL_AFTER_MTS_GAPS' => 1, 'STATS_SAMPLE_PAGES' => 1, + 'MASTER_AUTO_POSITION' => 1, 'MASTER_CONNECT_RETRY' => 1, 'MAX_QUERIES_PER_HOUR' => 1, + 'MAX_UPDATES_PER_HOUR' => 1, 'MAX_USER_CONNECTIONS' => 1, + 'MASTER_HEARTBEAT_PERIOD' => 1, + 'MAX_CONNECTIONS_PER_HOUR' => 1, + + 'AS' => 3, 'BY' => 3, 'IS' => 3, 'ON' => 3, 'OR' => 3, 'TO' => 3, + 'ADD' => 3, 'ALL' => 3, 'AND' => 3, 'ASC' => 3, 'DEC' => 3, 'DIV' => 3, + 'FOR' => 3, 'GET' => 3, 'NOT' => 3, 'OUT' => 3, 'SQL' => 3, 'SSL' => 3, + 'USE' => 3, 'XOR' => 3, + 'BOTH' => 3, 'CALL' => 3, 'CASE' => 3, 'DESC' => 3, 'DROP' => 3, 'DUAL' => 3, + 'EACH' => 3, 'ELSE' => 3, 'EXIT' => 3, 'FROM' => 3, 'INT1' => 3, 'INT2' => 3, + 'INT3' => 3, 'INT4' => 3, 'INT8' => 3, 'INTO' => 3, 'JOIN' => 3, 'KEYS' => 3, + 'KILL' => 3, 'LIKE' => 3, 'LOAD' => 3, 'LOCK' => 3, 'LONG' => 3, 'LOOP' => 3, + 'NULL' => 3, 'READ' => 3, 'SHOW' => 3, 'THEN' => 3, 'TRUE' => 3, 'UNDO' => 3, + 'WHEN' => 3, 'WITH' => 3, + 'ALTER' => 3, 'CHECK' => 3, 'CROSS' => 3, 'FALSE' => 3, 'FETCH' => 3, + 'FORCE' => 3, 'GRANT' => 3, 'GROUP' => 3, 'INNER' => 3, 'INOUT' => 3, + 'LEAVE' => 3, 'LIMIT' => 3, 'LINES' => 3, 'ORDER' => 3, 'OUTER' => 3, + 'PURGE' => 3, 'RANGE' => 3, 'READS' => 3, 'RLIKE' => 3, 'TABLE' => 3, + 'UNION' => 3, 'USAGE' => 3, 'USING' => 3, 'WHERE' => 3, 'WHILE' => 3, + 'WRITE' => 3, + 'BEFORE' => 3, 'CHANGE' => 3, 'COLUMN' => 3, 'CREATE' => 3, 'CURSOR' => 3, + 'DELETE' => 3, 'ELSEIF' => 3, 'FLOAT4' => 3, 'FLOAT8' => 3, 'HAVING' => 3, + 'IGNORE' => 3, 'INFILE' => 3, 'LINEAR' => 3, 'OPTION' => 3, 'REGEXP' => 3, + 'RENAME' => 3, 'RETURN' => 3, 'REVOKE' => 3, 'SELECT' => 3, 'SIGNAL' => 3, + 'UNLOCK' => 3, 'UPDATE' => 3, + 'ANALYZE' => 3, 'BETWEEN' => 3, 'CASCADE' => 3, 'COLLATE' => 3, 'DECLARE' => 3, + 'DELAYED' => 3, 'ESCAPED' => 3, 'EXPLAIN' => 3, 'FOREIGN' => 3, 'ITERATE' => 3, + 'LEADING' => 3, 'NATURAL' => 3, 'OUTFILE' => 3, 'PRIMARY' => 3, 'RELEASE' => 3, + 'REQUIRE' => 3, 'SCHEMAS' => 3, 'TRIGGER' => 3, 'VARYING' => 3, + 'CONTINUE' => 3, 'DAY_HOUR' => 3, 'DESCRIBE' => 3, 'DISTINCT' => 3, 'ENCLOSED' => 3, + 'MAXVALUE' => 3, 'MODIFIES' => 3, 'OPTIMIZE' => 3, 'RESIGNAL' => 3, 'RESTRICT' => 3, + 'SPECIFIC' => 3, 'SQLSTATE' => 3, 'STARTING' => 3, 'TRAILING' => 3, 'UNSIGNED' => 3, + 'ZEROFILL' => 3, + 'CONDITION' => 3, 'DATABASES' => 3, 'MIDDLEINT' => 3, 'PARTITION' => 3, + 'PRECISION' => 3, 'PROCEDURE' => 3, 'SENSITIVE' => 3, 'SEPARATOR' => 3, + 'ACCESSIBLE' => 3, 'ASENSITIVE' => 3, 'CONSTRAINT' => 3, 'DAY_MINUTE' => 3, + 'DAY_SECOND' => 3, 'OPTIONALLY' => 3, 'READ_WRITE' => 3, 'REFERENCES' => 3, + 'SQLWARNING' => 3, 'TERMINATED' => 3, 'YEAR_MONTH' => 3, + 'DISTINCTROW' => 3, 'HOUR_MINUTE' => 3, 'HOUR_SECOND' => 3, 'INSENSITIVE' => 3, + 'MASTER_BIND' => 3, + 'LOW_PRIORITY' => 3, 'SQLEXCEPTION' => 3, 'VARCHARACTER' => 3, + 'DETERMINISTIC' => 3, 'HIGH_PRIORITY' => 3, 'MINUTE_SECOND' => 3, 'STRAIGHT_JOIN' => 3, + 'IO_AFTER_GTIDS' => 3, 'SQL_BIG_RESULT' => 3, + 'DAY_MICROSECOND' => 3, 'IO_BEFORE_GTIDS' => 3, + 'HOUR_MICROSECOND' => 3, 'SQL_SMALL_RESULT' => 3, + 'MINUTE_MICROSECOND' => 3, 'NO_WRITE_TO_BINLOG' => 3, 'SECOND_MICROSECOND' => 3, + 'SQL_CALC_FOUND_ROWS' => 3, + 'MASTER_SSL_VERIFY_SERVER_CERT' => 3, + + 'GROUP BY' => 7, 'NOT NULL' => 7, 'ORDER BY' => 7, 'SET NULL' => 7, + 'AND CHAIN' => 7, 'FULL JOIN' => 7, 'IF EXISTS' => 7, 'LEFT JOIN' => 7, + 'LESS THAN' => 7, 'LOAD DATA' => 7, 'NO ACTION' => 7, 'ON DELETE' => 7, + 'ON UPDATE' => 7, 'UNION ALL' => 7, + 'CROSS JOIN' => 7, 'ESCAPED BY' => 7, 'FOR UPDATE' => 7, 'INNER JOIN' => 7, + 'LINEAR KEY' => 7, 'NO RELEASE' => 7, 'OR REPLACE' => 7, 'RIGHT JOIN' => 7, + 'ENCLOSED BY' => 7, 'LINEAR HASH' => 7, 'STARTING BY' => 7, + 'AND NO CHAIN' => 7, 'FOR EACH ROW' => 7, 'NATURAL JOIN' => 7, 'PARTITION BY' => 7, + 'SET PASSWORD' => 7, 'SQL SECURITY' => 7, + 'CHARACTER SET' => 7, 'IF NOT EXISTS' => 7, 'TERMINATED BY' => 7, + 'DATA DIRECTORY' => 7, 'UNION DISTINCT' => 7, + 'DEFAULT CHARSET' => 7, 'DEFAULT COLLATE' => 7, 'FULL OUTER JOIN' => 7, 'INDEX DIRECTORY' => 7, + 'LEFT OUTER JOIN' => 7, 'SUBPARTITION BY' => 7, + 'GENERATED ALWAYS' => 7, 'RIGHT OUTER JOIN' => 7, + 'NATURAL LEFT JOIN' => 7, 'START TRANSACTION' => 7, + 'LOCK IN SHARE MODE' => 7, 'NATURAL RIGHT JOIN' => 7, 'SELECT TRANSACTION' => 7, + 'DEFAULT CHARACTER SET' => 7, + 'NATURAL LEFT OUTER JOIN' => 7, + 'NATURAL RIGHT OUTER JOIN' => 7, 'WITH CONSISTENT SNAPSHOT' => 7, + + 'BIT' => 9, 'XML' => 9, + 'ENUM' => 9, 'JSON' => 9, 'TEXT' => 9, + 'ARRAY' => 9, + 'SERIAL' => 9, + 'BOOLEAN' => 9, + 'DATETIME' => 9, 'GEOMETRY' => 9, 'MULTISET' => 9, + 'MULTILINEPOINT' => 9, + 'MULTILINEPOLYGON' => 9, + + 'INT' => 11, 'SET' => 11, + 'BLOB' => 11, 'REAL' => 11, + 'FLOAT' => 11, + 'BIGINT' => 11, 'DOUBLE' => 11, + 'DECIMAL' => 11, 'INTEGER' => 11, 'NUMERIC' => 11, 'TINYINT' => 11, 'VARCHAR' => 11, + 'LONGBLOB' => 11, 'LONGTEXT' => 11, 'SMALLINT' => 11, 'TINYBLOB' => 11, 'TINYTEXT' => 11, + 'CHARACTER' => 11, 'MEDIUMINT' => 11, 'VARBINARY' => 11, + 'MEDIUMBLOB' => 11, 'MEDIUMTEXT' => 11, + + 'BINARY VARYING' => 15, + + 'KEY' => 19, + 'INDEX' => 19, + 'UNIQUE' => 19, + 'SPATIAL' => 19, + 'FULLTEXT' => 19, + + 'INDEX KEY' => 23, + 'UNIQUE KEY' => 23, + 'FOREIGN KEY' => 23, 'PRIMARY KEY' => 23, 'SPATIAL KEY' => 23, + 'FULLTEXT KEY' => 23, 'UNIQUE INDEX' => 23, + 'SPATIAL INDEX' => 23, + 'FULLTEXT INDEX' => 23, + + 'X' => 33, 'Y' => 33, + 'LN' => 33, 'PI' => 33, + 'ABS' => 33, 'AVG' => 33, 'BIN' => 33, 'COS' => 33, 'COT' => 33, 'DAY' => 33, + 'ELT' => 33, 'EXP' => 33, 'HEX' => 33, 'LOG' => 33, 'MAX' => 33, 'MD5' => 33, + 'MID' => 33, 'MIN' => 33, 'NOW' => 33, 'OCT' => 33, 'ORD' => 33, 'POW' => 33, + 'SHA' => 33, 'SIN' => 33, 'STD' => 33, 'SUM' => 33, 'TAN' => 33, + 'ACOS' => 33, 'AREA' => 33, 'ASIN' => 33, 'ATAN' => 33, 'CAST' => 33, 'CEIL' => 33, + 'CONV' => 33, 'HOUR' => 33, 'LOG2' => 33, 'LPAD' => 33, 'RAND' => 33, 'RPAD' => 33, + 'SHA1' => 33, 'SHA2' => 33, 'SIGN' => 33, 'SQRT' => 33, 'SRID' => 33, 'ST_X' => 33, + 'ST_Y' => 33, 'TRIM' => 33, 'USER' => 33, 'UUID' => 33, 'WEEK' => 33, + 'ASCII' => 33, 'ASWKB' => 33, 'ASWKT' => 33, 'ATAN2' => 33, 'COUNT' => 33, + 'CRC32' => 33, 'FIELD' => 33, 'FLOOR' => 33, 'INSTR' => 33, 'LCASE' => 33, + 'LEAST' => 33, 'LOG10' => 33, 'LOWER' => 33, 'LTRIM' => 33, 'MONTH' => 33, + 'POWER' => 33, 'QUOTE' => 33, 'ROUND' => 33, 'RTRIM' => 33, 'SLEEP' => 33, + 'SPACE' => 33, 'UCASE' => 33, 'UNHEX' => 33, 'UPPER' => 33, + 'ASTEXT' => 33, 'BIT_OR' => 33, 'BUFFER' => 33, 'CONCAT' => 33, 'DECODE' => 33, + 'ENCODE' => 33, 'EQUALS' => 33, 'FORMAT' => 33, 'IFNULL' => 33, 'ISNULL' => 33, + 'LENGTH' => 33, 'LOCATE' => 33, 'MINUTE' => 33, 'NULLIF' => 33, 'POINTN' => 33, + 'SECOND' => 33, 'STDDEV' => 33, 'STRCMP' => 33, 'SUBSTR' => 33, 'WITHIN' => 33, + 'ADDDATE' => 33, 'ADDTIME' => 33, 'AGAINST' => 33, 'BIT_AND' => 33, 'BIT_XOR' => 33, + 'CEILING' => 33, 'CHARSET' => 33, 'CROSSES' => 33, 'CURDATE' => 33, 'CURTIME' => 33, + 'DAYNAME' => 33, 'DEGREES' => 33, 'ENCRYPT' => 33, 'EXTRACT' => 33, 'GLENGTH' => 33, + 'ISEMPTY' => 33, 'IS_IPV4' => 33, 'IS_IPV6' => 33, 'QUARTER' => 33, 'RADIANS' => 33, + 'REVERSE' => 33, 'SOUNDEX' => 33, 'ST_AREA' => 33, 'ST_SRID' => 33, 'SUBDATE' => 33, + 'SUBTIME' => 33, 'SYSDATE' => 33, 'TOUCHES' => 33, 'TO_DAYS' => 33, 'VAR_POP' => 33, + 'VERSION' => 33, 'WEEKDAY' => 33, + 'ASBINARY' => 33, 'CENTROID' => 33, 'COALESCE' => 33, 'COMPRESS' => 33, 'CONTAINS' => 33, + 'DATEDIFF' => 33, 'DATE_ADD' => 33, 'DATE_SUB' => 33, 'DISJOINT' => 33, 'ENDPOINT' => 33, + 'ENVELOPE' => 33, 'GET_LOCK' => 33, 'GREATEST' => 33, 'ISCLOSED' => 33, 'ISSIMPLE' => 33, + 'MAKEDATE' => 33, 'MAKETIME' => 33, 'MAKE_SET' => 33, 'MBREQUAL' => 33, 'OVERLAPS' => 33, + 'PASSWORD' => 33, 'POSITION' => 33, 'ST_ASWKB' => 33, 'ST_ASWKT' => 33, 'ST_UNION' => 33, + 'TIMEDIFF' => 33, 'TRUNCATE' => 33, 'VARIANCE' => 33, 'VAR_SAMP' => 33, 'YEARWEEK' => 33, + 'BENCHMARK' => 33, 'BIT_COUNT' => 33, 'COLLATION' => 33, 'CONCAT_WS' => 33, + 'DAYOFWEEK' => 33, 'DAYOFYEAR' => 33, 'DIMENSION' => 33, 'FROM_DAYS' => 33, + 'GEOMETRYN' => 33, 'INET_ATON' => 33, 'INET_NTOA' => 33, 'LOAD_FILE' => 33, + 'MBRWITHIN' => 33, 'MONTHNAME' => 33, 'NUMPOINTS' => 33, 'ROW_COUNT' => 33, + 'ST_ASTEXT' => 33, 'ST_BUFFER' => 33, 'ST_EQUALS' => 33, 'ST_POINTN' => 33, + 'ST_WITHIN' => 33, 'SUBSTRING' => 33, 'TO_BASE64' => 33, 'UPDATEXML' => 33, + 'BIT_LENGTH' => 33, 'CONVERT_TZ' => 33, 'DAYOFMONTH' => 33, 'EXPORT_SET' => 33, + 'FOUND_ROWS' => 33, 'GET_FORMAT' => 33, 'INET6_ATON' => 33, 'INET6_NTOA' => 33, + 'INTERSECTS' => 33, 'MBRTOUCHES' => 33, 'MULTIPOINT' => 33, 'NAME_CONST' => 33, + 'PERIOD_ADD' => 33, 'STARTPOINT' => 33, 'STDDEV_POP' => 33, 'ST_CROSSES' => 33, + 'ST_ISEMPTY' => 33, 'ST_TOUCHES' => 33, 'TO_SECONDS' => 33, 'UNCOMPRESS' => 33, + 'UUID_SHORT' => 33, 'WEEKOFYEAR' => 33, + 'AES_DECRYPT' => 33, 'AES_ENCRYPT' => 33, 'CHAR_LENGTH' => 33, 'DATE_FORMAT' => 33, + 'DES_DECRYPT' => 33, 'DES_ENCRYPT' => 33, 'FIND_IN_SET' => 33, 'FROM_BASE64' => 33, + 'GEOMFROMWKB' => 33, 'GTID_SUBSET' => 33, 'LINEFROMWKB' => 33, 'MBRCONTAINS' => 33, + 'MBRDISJOINT' => 33, 'MBROVERLAPS' => 33, 'MICROSECOND' => 33, 'PERIOD_DIFF' => 33, + 'POLYFROMWKB' => 33, 'SEC_TO_TIME' => 33, 'STDDEV_SAMP' => 33, 'STR_TO_DATE' => 33, + 'ST_ASBINARY' => 33, 'ST_CENTROID' => 33, 'ST_CONTAINS' => 33, 'ST_DISJOINT' => 33, + 'ST_DISTANCE' => 33, 'ST_ENDPOINT' => 33, 'ST_ENVELOPE' => 33, 'ST_ISCLOSED' => 33, + 'ST_ISSIMPLE' => 33, 'ST_OVERLAPS' => 33, 'SYSTEM_USER' => 33, 'TIME_FORMAT' => 33, + 'TIME_TO_SEC' => 33, + 'COERCIBILITY' => 33, 'EXTERIORRING' => 33, 'EXTRACTVALUE' => 33, 'GEOMETRYTYPE' => 33, + 'GEOMFROMTEXT' => 33, 'GROUP_CONCAT' => 33, 'IS_FREE_LOCK' => 33, 'IS_USED_LOCK' => 33, + 'LINEFROMTEXT' => 33, 'MLINEFROMWKB' => 33, 'MPOLYFROMWKB' => 33, 'MULTIPOLYGON' => 33, + 'OCTET_LENGTH' => 33, 'OLD_PASSWORD' => 33, 'POINTFROMWKB' => 33, 'POLYFROMTEXT' => 33, + 'RANDOM_BYTES' => 33, 'RELEASE_LOCK' => 33, 'SESSION_USER' => 33, 'ST_DIMENSION' => 33, + 'ST_GEOMETRYN' => 33, 'ST_NUMPOINTS' => 33, 'TIMESTAMPADD' => 33, + 'CONNECTION_ID' => 33, 'CREATE_DIGEST' => 33, 'FROM_UNIXTIME' => 33, 'GTID_SUBTRACT' => 33, + 'INTERIORRINGN' => 33, 'MBRINTERSECTS' => 33, 'MLINEFROMTEXT' => 33, 'MPOINTFROMWKB' => 33, + 'MPOLYFROMTEXT' => 33, 'NUMGEOMETRIES' => 33, 'POINTFROMTEXT' => 33, 'ST_DIFFERENCE' => 33, + 'ST_INTERSECTS' => 33, 'ST_STARTPOINT' => 33, 'TIMESTAMPDIFF' => 33, 'WEIGHT_STRING' => 33, + 'IS_IPV4_COMPAT' => 33, 'IS_IPV4_MAPPED' => 33, 'LAST_INSERT_ID' => 33, 'MPOINTFROMTEXT' => 33, + 'POLYGONFROMWKB' => 33, 'ST_GEOMFROMWKB' => 33, 'ST_LINEFROMWKB' => 33, 'ST_POLYFROMWKB' => 33, + 'UNIX_TIMESTAMP' => 33, + 'ASYMMETRIC_SIGN' => 33, 'GEOMCOLLFROMWKB' => 33, 'MASTER_POS_WAIT' => 33, 'POLYGONFROMTEXT' => 33, + 'ST_EXTERIORRING' => 33, 'ST_GEOMETRYTYPE' => 33, 'ST_GEOMFROMTEXT' => 33, 'ST_INTERSECTION' => 33, + 'ST_LINEFROMTEXT' => 33, 'ST_POINTFROMWKB' => 33, 'ST_POLYFROMTEXT' => 33, 'SUBSTRING_INDEX' => 33, + 'CHARACTER_LENGTH' => 33, 'GEOMCOLLFROMTEXT' => 33, 'GEOMETRYFROMTEXT' => 33, + 'NUMINTERIORRINGS' => 33, 'ST_INTERIORRINGN' => 33, 'ST_NUMGEOMETRIES' => 33, + 'ST_POINTFROMTEXT' => 33, 'ST_SYMDIFFERENCE' => 33, + 'ASYMMETRIC_DERIVE' => 33, 'ASYMMETRIC_VERIFY' => 33, 'LINESTRINGFROMWKB' => 33, + 'MULTIPOINTFROMWKB' => 33, 'ST_POLYGONFROMWKB' => 33, + 'ASYMMETRIC_DECRYPT' => 33, 'ASYMMETRIC_ENCRYPT' => 33, 'MULTIPOINTFROMTEXT' => 33, + 'ST_GEOMCOLLFROMTXT' => 33, 'ST_GEOMCOLLFROMWKB' => 33, 'ST_POLYGONFROMTEXT' => 33, + 'MULTIPOLYGONFROMWKB' => 33, 'ST_GEOMCOLLFROMTEXT' => 33, 'ST_GEOMETRYFROMTEXT' => 33, + 'ST_NUMINTERIORRINGS' => 33, 'UNCOMPRESSED_LENGTH' => 33, + 'CREATE_DH_PARAMETERS' => 33, 'MULTIPOLYGONFROMTEXT' => 33, 'ST_LINESTRINGFROMWKB' => 33, + 'MULTILINESTRINGFROMWKB' => 33, + 'MULTILINESTRINGFROMTEXT' => 33, + 'CREATE_ASYMMETRIC_PUB_KEY' => 33, 'GEOMETRYCOLLECTIONFROMWKB' => 33, + 'CREATE_ASYMMETRIC_PRIV_KEY' => 33, 'GEOMETRYCOLLECTIONFROMTEXT' => 33, 'VALIDATE_PASSWORD_STRENGTH' => 33, + 'SQL_THREAD_WAIT_AFTER_GTIDS' => 33, + 'ST_GEOMETRYCOLLECTIONFROMWKB' => 33, + 'ST_GEOMETRYCOLLECTIONFROMTEXT' => 33, + 'WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS' => 33, + + 'IF' => 35, 'IN' => 35, + 'MOD' => 35, + 'LEFT' => 35, + 'MATCH' => 35, 'RIGHT' => 35, + 'EXISTS' => 35, 'INSERT' => 35, 'REPEAT' => 35, 'SCHEMA' => 35, 'VALUES' => 35, + 'CONVERT' => 35, 'DEFAULT' => 35, 'REPLACE' => 35, + 'DATABASE' => 35, 'UTC_DATE' => 35, 'UTC_TIME' => 35, + 'LOCALTIME' => 35, + 'CURRENT_DATE' => 35, 'CURRENT_TIME' => 35, 'CURRENT_USER' => 35, + 'UTC_TIMESTAMP' => 35, + 'LOCALTIMESTAMP' => 35, + 'CURRENT_TIMESTAMP' => 35, + + 'NOT IN' => 39, + + 'DATE' => 41, 'TIME' => 41, 'YEAR' => 41, + 'POINT' => 41, + 'POLYGON' => 41, + 'TIMESTAMP' => 41, + 'LINESTRING' => 41, + 'MULTILINESTRING' => 41, + 'GEOMETRYCOLLECTION' => 41, + + 'CHAR' => 43, + 'BINARY' => 43, + 'INTERVAL' => 43, + ]; +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Contexts/ContextMySql50700.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Contexts/ContextMySql50700.php new file mode 100644 index 0000000000..6d06c4c01d --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Contexts/ContextMySql50700.php @@ -0,0 +1,347 @@ + + * @phpstan-var non-empty-array + */ + public static $KEYWORDS = [ + 'AT' => 1, 'DO' => 1, 'IO' => 1, 'NO' => 1, 'XA' => 1, + 'ANY' => 1, 'CPU' => 1, 'END' => 1, 'IPC' => 1, 'NDB' => 1, 'NEW' => 1, + 'ONE' => 1, 'ROW' => 1, 'XID' => 1, + 'BOOL' => 1, 'BYTE' => 1, 'CODE' => 1, 'CUBE' => 1, 'DATA' => 1, 'DISK' => 1, + 'ENDS' => 1, 'FAST' => 1, 'FILE' => 1, 'FULL' => 1, 'HASH' => 1, 'HELP' => 1, + 'HOST' => 1, 'LAST' => 1, 'LESS' => 1, 'LIST' => 1, 'LOGS' => 1, 'MODE' => 1, + 'NAME' => 1, 'NEXT' => 1, 'NONE' => 1, 'ONLY' => 1, 'OPEN' => 1, 'PAGE' => 1, + 'PORT' => 1, 'PREV' => 1, 'ROWS' => 1, 'SLOW' => 1, 'SOME' => 1, 'STOP' => 1, + 'THAN' => 1, 'TYPE' => 1, 'VIEW' => 1, 'WAIT' => 1, 'WORK' => 1, 'X509' => 1, + 'AFTER' => 1, 'BEGIN' => 1, 'BLOCK' => 1, 'BTREE' => 1, 'CACHE' => 1, + 'CHAIN' => 1, 'CLOSE' => 1, 'ERROR' => 1, 'EVENT' => 1, 'EVERY' => 1, + 'FIRST' => 1, 'FIXED' => 1, 'FLUSH' => 1, 'FOUND' => 1, 'HOSTS' => 1, + 'LEVEL' => 1, 'LOCAL' => 1, 'LOCKS' => 1, 'MERGE' => 1, 'MUTEX' => 1, + 'NAMES' => 1, 'NCHAR' => 1, 'NEVER' => 1, 'OWNER' => 1, 'PHASE' => 1, + 'PROXY' => 1, 'QUERY' => 1, 'QUICK' => 1, 'RELAY' => 1, 'RESET' => 1, + 'RTREE' => 1, 'SHARE' => 1, 'SLAVE' => 1, 'START' => 1, 'SUPER' => 1, + 'SWAPS' => 1, 'TYPES' => 1, 'UNTIL' => 1, 'VALUE' => 1, + 'ACTION' => 1, 'ALWAYS' => 1, 'BACKUP' => 1, 'BINLOG' => 1, 'CIPHER' => 1, + 'CLIENT' => 1, 'COMMIT' => 1, 'ENABLE' => 1, 'ENGINE' => 1, 'ERRORS' => 1, + 'ESCAPE' => 1, 'EVENTS' => 1, 'EXPIRE' => 1, 'EXPORT' => 1, 'FAULTS' => 1, + 'FIELDS' => 1, 'FILTER' => 1, 'GLOBAL' => 1, 'GRANTS' => 1, 'IMPORT' => 1, + 'ISSUER' => 1, 'LEAVES' => 1, 'MASTER' => 1, 'MEDIUM' => 1, 'MEMORY' => 1, + 'MODIFY' => 1, 'NUMBER' => 1, 'OFFSET' => 1, 'PARSER' => 1, 'PLUGIN' => 1, + 'RELOAD' => 1, 'REMOVE' => 1, 'REPAIR' => 1, 'RESUME' => 1, 'ROLLUP' => 1, + 'SERVER' => 1, 'SIGNED' => 1, 'SIMPLE' => 1, 'SOCKET' => 1, 'SONAME' => 1, + 'SOUNDS' => 1, 'SOURCE' => 1, 'STARTS' => 1, 'STATUS' => 1, 'STRING' => 1, + 'TABLES' => 1, + 'ACCOUNT' => 1, 'ANALYSE' => 1, 'CHANGED' => 1, 'CHANNEL' => 1, 'COLUMNS' => 1, + 'COMMENT' => 1, 'COMPACT' => 1, 'CONTEXT' => 1, 'CURRENT' => 1, 'DEFINER' => 1, + 'DISABLE' => 1, 'DISCARD' => 1, 'DYNAMIC' => 1, 'ENGINES' => 1, 'EXECUTE' => 1, + 'FOLLOWS' => 1, 'GENERAL' => 1, 'HANDLER' => 1, 'INDEXES' => 1, 'INSTALL' => 1, + 'INVOKER' => 1, 'LOGFILE' => 1, 'MIGRATE' => 1, 'NO_WAIT' => 1, 'OPTIONS' => 1, + 'PARTIAL' => 1, 'PLUGINS' => 1, 'PREPARE' => 1, 'PROFILE' => 1, 'REBUILD' => 1, + 'RECOVER' => 1, 'RESTORE' => 1, 'RETURNS' => 1, 'ROUTINE' => 1, 'SESSION' => 1, + 'STACKED' => 1, 'STORAGE' => 1, 'SUBJECT' => 1, 'SUSPEND' => 1, 'UNICODE' => 1, + 'UNKNOWN' => 1, 'UPGRADE' => 1, 'USE_FRM' => 1, 'WITHOUT' => 1, 'WRAPPER' => 1, + 'CASCADED' => 1, 'CHECKSUM' => 1, 'DATAFILE' => 1, 'DUMPFILE' => 1, 'EXCHANGE' => 1, + 'EXTENDED' => 1, 'FUNCTION' => 1, 'LANGUAGE' => 1, 'MAX_ROWS' => 1, 'MAX_SIZE' => 1, + 'MIN_ROWS' => 1, 'NATIONAL' => 1, 'NVARCHAR' => 1, 'PRECEDES' => 1, 'PRESERVE' => 1, + 'PROFILES' => 1, 'REDOFILE' => 1, 'RELAYLOG' => 1, 'ROLLBACK' => 1, 'SCHEDULE' => 1, + 'SECURITY' => 1, 'SHUTDOWN' => 1, 'SNAPSHOT' => 1, 'SWITCHES' => 1, 'TRIGGERS' => 1, + 'UNDOFILE' => 1, 'WARNINGS' => 1, + 'AGGREGATE' => 1, 'ALGORITHM' => 1, 'COMMITTED' => 1, 'DIRECTORY' => 1, + 'DUPLICATE' => 1, 'EXPANSION' => 1, 'IO_THREAD' => 1, 'ISOLATION' => 1, + 'NODEGROUP' => 1, 'PACK_KEYS' => 1, 'READ_ONLY' => 1, 'REDUNDANT' => 1, + 'SAVEPOINT' => 1, 'SQL_CACHE' => 1, 'TEMPORARY' => 1, 'TEMPTABLE' => 1, + 'UNDEFINED' => 1, 'UNINSTALL' => 1, 'VARIABLES' => 1, + 'COMPLETION' => 1, 'COMPRESSED' => 1, 'CONCURRENT' => 1, 'CONNECTION' => 1, + 'CONSISTENT' => 1, 'DEALLOCATE' => 1, 'IDENTIFIED' => 1, 'MASTER_SSL' => 1, + 'NDBCLUSTER' => 1, 'PARTITIONS' => 1, 'PERSISTENT' => 1, 'PLUGIN_DIR' => 1, + 'PRIVILEGES' => 1, 'REORGANIZE' => 1, 'REPEATABLE' => 1, 'ROW_FORMAT' => 1, + 'SQL_THREAD' => 1, 'TABLESPACE' => 1, 'TABLE_NAME' => 1, 'VALIDATION' => 1, + 'COLUMN_NAME' => 1, 'COMPRESSION' => 1, 'CURSOR_NAME' => 1, 'DIAGNOSTICS' => 1, + 'EXTENT_SIZE' => 1, 'MASTER_HOST' => 1, 'MASTER_PORT' => 1, 'MASTER_USER' => 1, + 'MYSQL_ERRNO' => 1, 'NONBLOCKING' => 1, 'PROCESSLIST' => 1, 'REPLICATION' => 1, + 'SCHEMA_NAME' => 1, 'SQL_TSI_DAY' => 1, 'TRANSACTION' => 1, 'UNCOMMITTED' => 1, + 'CATALOG_NAME' => 1, 'CLASS_ORIGIN' => 1, 'DEFAULT_AUTH' => 1, 'DES_KEY_FILE' => 1, + 'INITIAL_SIZE' => 1, 'MASTER_DELAY' => 1, 'MESSAGE_TEXT' => 1, 'PARTITIONING' => 1, + 'RELAY_THREAD' => 1, 'SERIALIZABLE' => 1, 'SQL_NO_CACHE' => 1, 'SQL_TSI_HOUR' => 1, + 'SQL_TSI_WEEK' => 1, 'SQL_TSI_YEAR' => 1, 'SUBPARTITION' => 1, + 'COLUMN_FORMAT' => 1, 'INSERT_METHOD' => 1, 'MASTER_SSL_CA' => 1, 'RELAY_LOG_POS' => 1, + 'SQL_TSI_MONTH' => 1, 'SUBPARTITIONS' => 1, + 'AUTO_INCREMENT' => 1, 'AVG_ROW_LENGTH' => 1, 'KEY_BLOCK_SIZE' => 1, 'MASTER_LOG_POS' => 1, + 'MASTER_SSL_CRL' => 1, 'MASTER_SSL_KEY' => 1, 'RELAY_LOG_FILE' => 1, 'SQL_TSI_MINUTE' => 1, + 'SQL_TSI_SECOND' => 1, 'TABLE_CHECKSUM' => 1, 'USER_RESOURCES' => 1, + 'AUTOEXTEND_SIZE' => 1, 'CONSTRAINT_NAME' => 1, 'DELAY_KEY_WRITE' => 1, 'FILE_BLOCK_SIZE' => 1, + 'MASTER_LOG_FILE' => 1, 'MASTER_PASSWORD' => 1, 'MASTER_SSL_CERT' => 1, 'PARSE_GCOL_EXPR' => 1, + 'REPLICATE_DO_DB' => 1, 'SQL_AFTER_GTIDS' => 1, 'SQL_TSI_QUARTER' => 1, 'SUBCLASS_ORIGIN' => 1, + 'MASTER_SERVER_ID' => 1, 'REDO_BUFFER_SIZE' => 1, 'SQL_BEFORE_GTIDS' => 1, + 'STATS_PERSISTENT' => 1, 'UNDO_BUFFER_SIZE' => 1, + 'CONSTRAINT_SCHEMA' => 1, 'GROUP_REPLICATION' => 1, 'IGNORE_SERVER_IDS' => 1, + 'MASTER_SSL_CAPATH' => 1, 'MASTER_SSL_CIPHER' => 1, 'RETURNED_SQLSTATE' => 1, + 'SQL_BUFFER_RESULT' => 1, 'STATS_AUTO_RECALC' => 1, + 'CONSTRAINT_CATALOG' => 1, 'MASTER_RETRY_COUNT' => 1, 'MASTER_SSL_CRLPATH' => 1, + 'MAX_STATEMENT_TIME' => 1, 'REPLICATE_DO_TABLE' => 1, 'SQL_AFTER_MTS_GAPS' => 1, + 'STATS_SAMPLE_PAGES' => 1, + 'REPLICATE_IGNORE_DB' => 1, + 'MASTER_AUTO_POSITION' => 1, 'MASTER_CONNECT_RETRY' => 1, 'MAX_QUERIES_PER_HOUR' => 1, + 'MAX_UPDATES_PER_HOUR' => 1, 'MAX_USER_CONNECTIONS' => 1, 'REPLICATE_REWRITE_DB' => 1, + 'REPLICATE_IGNORE_TABLE' => 1, + 'MASTER_HEARTBEAT_PERIOD' => 1, 'REPLICATE_WILD_DO_TABLE' => 1, + 'MAX_CONNECTIONS_PER_HOUR' => 1, + 'REPLICATE_WILD_IGNORE_TABLE' => 1, + + 'AS' => 3, 'BY' => 3, 'IS' => 3, 'ON' => 3, 'OR' => 3, 'TO' => 3, + 'ADD' => 3, 'ALL' => 3, 'AND' => 3, 'ASC' => 3, 'DEC' => 3, 'DIV' => 3, + 'FOR' => 3, 'GET' => 3, 'NOT' => 3, 'OUT' => 3, 'SQL' => 3, 'SSL' => 3, + 'USE' => 3, 'XOR' => 3, + 'BOTH' => 3, 'CALL' => 3, 'CASE' => 3, 'DESC' => 3, 'DROP' => 3, 'DUAL' => 3, + 'EACH' => 3, 'ELSE' => 3, 'EXIT' => 3, 'FROM' => 3, 'INT1' => 3, 'INT2' => 3, + 'INT3' => 3, 'INT4' => 3, 'INT8' => 3, 'INTO' => 3, 'JOIN' => 3, 'KEYS' => 3, + 'KILL' => 3, 'LIKE' => 3, 'LOAD' => 3, 'LOCK' => 3, 'LONG' => 3, 'LOOP' => 3, + 'NULL' => 3, 'READ' => 3, 'SHOW' => 3, 'THEN' => 3, 'TRUE' => 3, 'UNDO' => 3, + 'WHEN' => 3, 'WITH' => 3, + 'ALTER' => 3, 'CHECK' => 3, 'CROSS' => 3, 'FALSE' => 3, 'FETCH' => 3, + 'FORCE' => 3, 'GRANT' => 3, 'GROUP' => 3, 'INNER' => 3, 'INOUT' => 3, + 'LEAVE' => 3, 'LIMIT' => 3, 'LINES' => 3, 'ORDER' => 3, 'OUTER' => 3, + 'PURGE' => 3, 'RANGE' => 3, 'READS' => 3, 'RLIKE' => 3, 'TABLE' => 3, + 'UNION' => 3, 'USAGE' => 3, 'USING' => 3, 'WHERE' => 3, 'WHILE' => 3, + 'WRITE' => 3, + 'BEFORE' => 3, 'CHANGE' => 3, 'COLUMN' => 3, 'CREATE' => 3, 'CURSOR' => 3, + 'DELETE' => 3, 'ELSEIF' => 3, 'FLOAT4' => 3, 'FLOAT8' => 3, 'HAVING' => 3, + 'IGNORE' => 3, 'INFILE' => 3, 'LINEAR' => 3, 'OPTION' => 3, 'REGEXP' => 3, + 'RENAME' => 3, 'RETURN' => 3, 'REVOKE' => 3, 'SELECT' => 3, 'SIGNAL' => 3, + 'STORED' => 3, 'UNLOCK' => 3, 'UPDATE' => 3, + 'ANALYZE' => 3, 'BETWEEN' => 3, 'CASCADE' => 3, 'COLLATE' => 3, 'DECLARE' => 3, + 'DELAYED' => 3, 'ESCAPED' => 3, 'EXPLAIN' => 3, 'FOREIGN' => 3, 'ITERATE' => 3, + 'LEADING' => 3, 'NATURAL' => 3, 'OUTFILE' => 3, 'PRIMARY' => 3, 'RELEASE' => 3, + 'REQUIRE' => 3, 'SCHEMAS' => 3, 'TRIGGER' => 3, 'VARYING' => 3, 'VIRTUAL' => 3, + 'CONTINUE' => 3, 'DAY_HOUR' => 3, 'DESCRIBE' => 3, 'DISTINCT' => 3, 'ENCLOSED' => 3, + 'MAXVALUE' => 3, 'MODIFIES' => 3, 'OPTIMIZE' => 3, 'RESIGNAL' => 3, 'RESTRICT' => 3, + 'SPECIFIC' => 3, 'SQLSTATE' => 3, 'STARTING' => 3, 'TRAILING' => 3, 'UNSIGNED' => 3, + 'ZEROFILL' => 3, + 'CONDITION' => 3, 'DATABASES' => 3, 'GENERATED' => 3, 'MIDDLEINT' => 3, + 'PARTITION' => 3, 'PRECISION' => 3, 'PROCEDURE' => 3, 'SENSITIVE' => 3, + 'SEPARATOR' => 3, + 'ACCESSIBLE' => 3, 'ASENSITIVE' => 3, 'CONSTRAINT' => 3, 'DAY_MINUTE' => 3, + 'DAY_SECOND' => 3, 'OPTIONALLY' => 3, 'READ_WRITE' => 3, 'REFERENCES' => 3, + 'SQLWARNING' => 3, 'TERMINATED' => 3, 'YEAR_MONTH' => 3, + 'DISTINCTROW' => 3, 'HOUR_MINUTE' => 3, 'HOUR_SECOND' => 3, 'INSENSITIVE' => 3, + 'MASTER_BIND' => 3, + 'LOW_PRIORITY' => 3, 'SQLEXCEPTION' => 3, 'VARCHARACTER' => 3, + 'DETERMINISTIC' => 3, 'HIGH_PRIORITY' => 3, 'MINUTE_SECOND' => 3, 'STRAIGHT_JOIN' => 3, + 'IO_AFTER_GTIDS' => 3, 'SQL_BIG_RESULT' => 3, + 'DAY_MICROSECOND' => 3, 'IO_BEFORE_GTIDS' => 3, 'OPTIMIZER_COSTS' => 3, + 'HOUR_MICROSECOND' => 3, 'SQL_SMALL_RESULT' => 3, + 'MINUTE_MICROSECOND' => 3, 'NO_WRITE_TO_BINLOG' => 3, 'SECOND_MICROSECOND' => 3, + 'SQL_CALC_FOUND_ROWS' => 3, + 'MASTER_SSL_VERIFY_SERVER_CERT' => 3, + + 'GROUP BY' => 7, 'NOT NULL' => 7, 'ORDER BY' => 7, 'SET NULL' => 7, + 'AND CHAIN' => 7, 'FULL JOIN' => 7, 'IF EXISTS' => 7, 'LEFT JOIN' => 7, + 'LESS THAN' => 7, 'LOAD DATA' => 7, 'NO ACTION' => 7, 'ON DELETE' => 7, + 'ON UPDATE' => 7, 'UNION ALL' => 7, + 'CROSS JOIN' => 7, 'ESCAPED BY' => 7, 'FOR UPDATE' => 7, 'INNER JOIN' => 7, + 'LINEAR KEY' => 7, 'NO RELEASE' => 7, 'OR REPLACE' => 7, 'RIGHT JOIN' => 7, + 'ENCLOSED BY' => 7, 'LINEAR HASH' => 7, 'STARTING BY' => 7, + 'AND NO CHAIN' => 7, 'FOR EACH ROW' => 7, 'NATURAL JOIN' => 7, 'PARTITION BY' => 7, + 'SET PASSWORD' => 7, 'SQL SECURITY' => 7, + 'CHARACTER SET' => 7, 'IF NOT EXISTS' => 7, 'TERMINATED BY' => 7, + 'DATA DIRECTORY' => 7, 'UNION DISTINCT' => 7, + 'DEFAULT CHARSET' => 7, 'DEFAULT COLLATE' => 7, 'FULL OUTER JOIN' => 7, 'INDEX DIRECTORY' => 7, + 'LEFT OUTER JOIN' => 7, 'SUBPARTITION BY' => 7, + 'GENERATED ALWAYS' => 7, 'RIGHT OUTER JOIN' => 7, + 'NATURAL LEFT JOIN' => 7, 'START TRANSACTION' => 7, + 'LOCK IN SHARE MODE' => 7, 'NATURAL RIGHT JOIN' => 7, 'SELECT TRANSACTION' => 7, + 'DEFAULT CHARACTER SET' => 7, + 'NATURAL LEFT OUTER JOIN' => 7, + 'NATURAL RIGHT OUTER JOIN' => 7, 'WITH CONSISTENT SNAPSHOT' => 7, + + 'BIT' => 9, 'XML' => 9, + 'ENUM' => 9, 'JSON' => 9, 'TEXT' => 9, + 'ARRAY' => 9, + 'SERIAL' => 9, + 'BOOLEAN' => 9, + 'DATETIME' => 9, 'GEOMETRY' => 9, 'MULTISET' => 9, + 'MULTILINEPOINT' => 9, + 'MULTILINEPOLYGON' => 9, + + 'INT' => 11, 'SET' => 11, + 'BLOB' => 11, 'REAL' => 11, + 'FLOAT' => 11, + 'BIGINT' => 11, 'DOUBLE' => 11, + 'DECIMAL' => 11, 'INTEGER' => 11, 'NUMERIC' => 11, 'TINYINT' => 11, 'VARCHAR' => 11, + 'LONGBLOB' => 11, 'LONGTEXT' => 11, 'SMALLINT' => 11, 'TINYBLOB' => 11, 'TINYTEXT' => 11, + 'CHARACTER' => 11, 'MEDIUMINT' => 11, 'VARBINARY' => 11, + 'MEDIUMBLOB' => 11, 'MEDIUMTEXT' => 11, + + 'BINARY VARYING' => 15, + + 'KEY' => 19, + 'INDEX' => 19, + 'UNIQUE' => 19, + 'SPATIAL' => 19, + 'FULLTEXT' => 19, + + 'INDEX KEY' => 23, + 'UNIQUE KEY' => 23, + 'FOREIGN KEY' => 23, 'PRIMARY KEY' => 23, 'SPATIAL KEY' => 23, + 'FULLTEXT KEY' => 23, 'UNIQUE INDEX' => 23, + 'SPATIAL INDEX' => 23, + 'FULLTEXT INDEX' => 23, + + 'X' => 33, 'Y' => 33, + 'LN' => 33, 'PI' => 33, + 'ABS' => 33, 'AVG' => 33, 'BIN' => 33, 'COS' => 33, 'COT' => 33, 'DAY' => 33, + 'ELT' => 33, 'EXP' => 33, 'HEX' => 33, 'LOG' => 33, 'MAX' => 33, 'MD5' => 33, + 'MID' => 33, 'MIN' => 33, 'NOW' => 33, 'OCT' => 33, 'ORD' => 33, 'POW' => 33, + 'SHA' => 33, 'SIN' => 33, 'STD' => 33, 'SUM' => 33, 'TAN' => 33, + 'ACOS' => 33, 'AREA' => 33, 'ASIN' => 33, 'ATAN' => 33, 'CAST' => 33, 'CEIL' => 33, + 'CONV' => 33, 'HOUR' => 33, 'LOG2' => 33, 'LPAD' => 33, 'RAND' => 33, 'RPAD' => 33, + 'SHA1' => 33, 'SHA2' => 33, 'SIGN' => 33, 'SQRT' => 33, 'SRID' => 33, 'ST_X' => 33, + 'ST_Y' => 33, 'TRIM' => 33, 'USER' => 33, 'UUID' => 33, 'WEEK' => 33, + 'ASCII' => 33, 'ASWKB' => 33, 'ASWKT' => 33, 'ATAN2' => 33, 'COUNT' => 33, + 'CRC32' => 33, 'FIELD' => 33, 'FLOOR' => 33, 'INSTR' => 33, 'LCASE' => 33, + 'LEAST' => 33, 'LOG10' => 33, 'LOWER' => 33, 'LTRIM' => 33, 'MONTH' => 33, + 'POWER' => 33, 'QUOTE' => 33, 'ROUND' => 33, 'RTRIM' => 33, 'SLEEP' => 33, + 'SPACE' => 33, 'UCASE' => 33, 'UNHEX' => 33, 'UPPER' => 33, + 'ASTEXT' => 33, 'BIT_OR' => 33, 'BUFFER' => 33, 'CONCAT' => 33, 'DECODE' => 33, + 'ENCODE' => 33, 'EQUALS' => 33, 'FORMAT' => 33, 'IFNULL' => 33, 'ISNULL' => 33, + 'LENGTH' => 33, 'LOCATE' => 33, 'MINUTE' => 33, 'NULLIF' => 33, 'POINTN' => 33, + 'SECOND' => 33, 'STDDEV' => 33, 'STRCMP' => 33, 'SUBSTR' => 33, 'WITHIN' => 33, + 'ADDDATE' => 33, 'ADDTIME' => 33, 'AGAINST' => 33, 'BIT_AND' => 33, 'BIT_XOR' => 33, + 'CEILING' => 33, 'CHARSET' => 33, 'CROSSES' => 33, 'CURDATE' => 33, 'CURTIME' => 33, + 'DAYNAME' => 33, 'DEGREES' => 33, 'ENCRYPT' => 33, 'EXTRACT' => 33, 'GLENGTH' => 33, + 'ISEMPTY' => 33, 'IS_IPV4' => 33, 'IS_IPV6' => 33, 'QUARTER' => 33, 'RADIANS' => 33, + 'REVERSE' => 33, 'SOUNDEX' => 33, 'ST_AREA' => 33, 'ST_SRID' => 33, 'SUBDATE' => 33, + 'SUBTIME' => 33, 'SYSDATE' => 33, 'TOUCHES' => 33, 'TO_DAYS' => 33, 'VAR_POP' => 33, + 'VERSION' => 33, 'WEEKDAY' => 33, + 'ASBINARY' => 33, 'CENTROID' => 33, 'COALESCE' => 33, 'COMPRESS' => 33, 'CONTAINS' => 33, + 'DATEDIFF' => 33, 'DATE_ADD' => 33, 'DATE_SUB' => 33, 'DISJOINT' => 33, 'DISTANCE' => 33, + 'ENDPOINT' => 33, 'ENVELOPE' => 33, 'GET_LOCK' => 33, 'GREATEST' => 33, 'ISCLOSED' => 33, + 'ISSIMPLE' => 33, 'JSON_SET' => 33, 'MAKEDATE' => 33, 'MAKETIME' => 33, 'MAKE_SET' => 33, + 'MBREQUAL' => 33, 'OVERLAPS' => 33, 'PASSWORD' => 33, 'POSITION' => 33, 'ST_ASWKB' => 33, + 'ST_ASWKT' => 33, 'ST_UNION' => 33, 'TIMEDIFF' => 33, 'TRUNCATE' => 33, 'VARIANCE' => 33, + 'VAR_SAMP' => 33, 'YEARWEEK' => 33, + 'ANY_VALUE' => 33, 'BENCHMARK' => 33, 'BIT_COUNT' => 33, 'COLLATION' => 33, + 'CONCAT_WS' => 33, 'DAYOFWEEK' => 33, 'DAYOFYEAR' => 33, 'DIMENSION' => 33, + 'FROM_DAYS' => 33, 'GEOMETRYN' => 33, 'INET_ATON' => 33, 'INET_NTOA' => 33, + 'JSON_KEYS' => 33, 'JSON_TYPE' => 33, 'LOAD_FILE' => 33, 'MBRCOVERS' => 33, + 'MBREQUALS' => 33, 'MBRWITHIN' => 33, 'MONTHNAME' => 33, 'NUMPOINTS' => 33, + 'ROW_COUNT' => 33, 'ST_ASTEXT' => 33, 'ST_BUFFER' => 33, 'ST_EQUALS' => 33, + 'ST_LENGTH' => 33, 'ST_POINTN' => 33, 'ST_WITHIN' => 33, 'SUBSTRING' => 33, + 'TO_BASE64' => 33, 'UPDATEXML' => 33, + 'BIT_LENGTH' => 33, 'CONVERT_TZ' => 33, 'CONVEXHULL' => 33, 'DAYOFMONTH' => 33, + 'EXPORT_SET' => 33, 'FOUND_ROWS' => 33, 'GET_FORMAT' => 33, 'INET6_ATON' => 33, + 'INET6_NTOA' => 33, 'INTERSECTS' => 33, 'JSON_ARRAY' => 33, 'JSON_DEPTH' => 33, + 'JSON_MERGE' => 33, 'JSON_QUOTE' => 33, 'JSON_VALID' => 33, 'MBRTOUCHES' => 33, + 'MULTIPOINT' => 33, 'NAME_CONST' => 33, 'PERIOD_ADD' => 33, 'STARTPOINT' => 33, + 'STDDEV_POP' => 33, 'ST_CROSSES' => 33, 'ST_GEOHASH' => 33, 'ST_ISEMPTY' => 33, + 'ST_ISVALID' => 33, 'ST_TOUCHES' => 33, 'TO_SECONDS' => 33, 'UNCOMPRESS' => 33, + 'UUID_SHORT' => 33, 'WEEKOFYEAR' => 33, + 'AES_DECRYPT' => 33, 'AES_ENCRYPT' => 33, 'CHAR_LENGTH' => 33, 'DATE_FORMAT' => 33, + 'DES_DECRYPT' => 33, 'DES_ENCRYPT' => 33, 'FIND_IN_SET' => 33, 'FROM_BASE64' => 33, + 'GEOMFROMWKB' => 33, 'GTID_SUBSET' => 33, 'JSON_INSERT' => 33, 'JSON_LENGTH' => 33, + 'JSON_OBJECT' => 33, 'JSON_PRETTY' => 33, 'JSON_REMOVE' => 33, 'JSON_SEARCH' => 33, + 'LINEFROMWKB' => 33, 'MBRCONTAINS' => 33, 'MBRDISJOINT' => 33, 'MBROVERLAPS' => 33, + 'MICROSECOND' => 33, 'PERIOD_DIFF' => 33, 'POLYFROMWKB' => 33, 'SEC_TO_TIME' => 33, + 'STDDEV_SAMP' => 33, 'STR_TO_DATE' => 33, 'ST_ASBINARY' => 33, 'ST_CENTROID' => 33, + 'ST_CONTAINS' => 33, 'ST_DISJOINT' => 33, 'ST_DISTANCE' => 33, 'ST_ENDPOINT' => 33, + 'ST_ENVELOPE' => 33, 'ST_ISCLOSED' => 33, 'ST_ISSIMPLE' => 33, 'ST_OVERLAPS' => 33, + 'ST_SIMPLIFY' => 33, 'ST_VALIDATE' => 33, 'SYSTEM_USER' => 33, 'TIME_FORMAT' => 33, + 'TIME_TO_SEC' => 33, + 'COERCIBILITY' => 33, 'EXTERIORRING' => 33, 'EXTRACTVALUE' => 33, 'GEOMETRYTYPE' => 33, + 'GEOMFROMTEXT' => 33, 'GROUP_CONCAT' => 33, 'IS_FREE_LOCK' => 33, 'IS_USED_LOCK' => 33, + 'JSON_EXTRACT' => 33, 'JSON_REPLACE' => 33, 'JSON_UNQUOTE' => 33, 'LINEFROMTEXT' => 33, + 'MBRCOVEREDBY' => 33, 'MLINEFROMWKB' => 33, 'MPOLYFROMWKB' => 33, 'MULTIPOLYGON' => 33, + 'OCTET_LENGTH' => 33, 'OLD_PASSWORD' => 33, 'POINTFROMWKB' => 33, 'POLYFROMTEXT' => 33, + 'RANDOM_BYTES' => 33, 'RELEASE_LOCK' => 33, 'SESSION_USER' => 33, 'ST_ASGEOJSON' => 33, + 'ST_DIMENSION' => 33, 'ST_GEOMETRYN' => 33, 'ST_NUMPOINTS' => 33, 'TIMESTAMPADD' => 33, + 'CONNECTION_ID' => 33, 'FROM_UNIXTIME' => 33, 'GTID_SUBTRACT' => 33, 'INTERIORRINGN' => 33, + 'JSON_CONTAINS' => 33, 'MBRINTERSECTS' => 33, 'MLINEFROMTEXT' => 33, 'MPOINTFROMWKB' => 33, + 'MPOLYFROMTEXT' => 33, 'NUMGEOMETRIES' => 33, 'POINTFROMTEXT' => 33, 'ST_CONVEXHULL' => 33, + 'ST_DIFFERENCE' => 33, 'ST_INTERSECTS' => 33, 'ST_STARTPOINT' => 33, 'TIMESTAMPDIFF' => 33, + 'WEIGHT_STRING' => 33, + 'IS_IPV4_COMPAT' => 33, 'IS_IPV4_MAPPED' => 33, 'LAST_INSERT_ID' => 33, 'MPOINTFROMTEXT' => 33, + 'POLYGONFROMWKB' => 33, 'ST_GEOMFROMWKB' => 33, 'ST_LINEFROMWKB' => 33, 'ST_POLYFROMWKB' => 33, + 'UNIX_TIMESTAMP' => 33, + 'GEOMCOLLFROMWKB' => 33, 'MASTER_POS_WAIT' => 33, 'POLYGONFROMTEXT' => 33, 'ST_EXTERIORRING' => 33, + 'ST_GEOMETRYTYPE' => 33, 'ST_GEOMFROMTEXT' => 33, 'ST_INTERSECTION' => 33, 'ST_LINEFROMTEXT' => 33, + 'ST_MAKEENVELOPE' => 33, 'ST_MLINEFROMWKB' => 33, 'ST_MPOLYFROMWKB' => 33, 'ST_POINTFROMWKB' => 33, + 'ST_POLYFROMTEXT' => 33, 'SUBSTRING_INDEX' => 33, + 'CHARACTER_LENGTH' => 33, 'GEOMCOLLFROMTEXT' => 33, 'GEOMETRYFROMTEXT' => 33, + 'JSON_MERGE_PATCH' => 33, 'NUMINTERIORRINGS' => 33, 'ST_INTERIORRINGN' => 33, + 'ST_MLINEFROMTEXT' => 33, 'ST_MPOINTFROMWKB' => 33, 'ST_MPOLYFROMTEXT' => 33, + 'ST_NUMGEOMETRIES' => 33, 'ST_POINTFROMTEXT' => 33, 'ST_SYMDIFFERENCE' => 33, + 'JSON_ARRAY_APPEND' => 33, 'JSON_ARRAY_INSERT' => 33, 'JSON_STORAGE_FREE' => 33, + 'JSON_STORAGE_SIZE' => 33, 'LINESTRINGFROMWKB' => 33, 'MULTIPOINTFROMWKB' => 33, + 'RELEASE_ALL_LOCKS' => 33, 'ST_LATFROMGEOHASH' => 33, 'ST_MPOINTFROMTEXT' => 33, + 'ST_POLYGONFROMWKB' => 33, + 'JSON_CONTAINS_PATH' => 33, 'MULTIPOINTFROMTEXT' => 33, 'ST_BUFFER_STRATEGY' => 33, + 'ST_DISTANCE_SPHERE' => 33, 'ST_GEOMCOLLFROMTXT' => 33, 'ST_GEOMCOLLFROMWKB' => 33, + 'ST_GEOMFROMGEOJSON' => 33, 'ST_LONGFROMGEOHASH' => 33, 'ST_POLYGONFROMTEXT' => 33, + 'JSON_MERGE_PRESERVE' => 33, 'MULTIPOLYGONFROMWKB' => 33, 'ST_GEOMCOLLFROMTEXT' => 33, + 'ST_GEOMETRYFROMTEXT' => 33, 'ST_NUMINTERIORRINGS' => 33, 'ST_POINTFROMGEOHASH' => 33, + 'UNCOMPRESSED_LENGTH' => 33, + 'MULTIPOLYGONFROMTEXT' => 33, 'ST_LINESTRINGFROMWKB' => 33, 'ST_MULTIPOINTFROMWKB' => 33, + 'ST_MULTIPOINTFROMTEXT' => 33, + 'MULTILINESTRINGFROMWKB' => 33, 'ST_MULTIPOLYGONFROMWKB' => 33, + 'MULTILINESTRINGFROMTEXT' => 33, 'ST_MULTIPOLYGONFROMTEXT' => 33, + 'GEOMETRYCOLLECTIONFROMWKB' => 33, 'ST_MULTILINESTRINGFROMWKB' => 33, + 'GEOMETRYCOLLECTIONFROMTEXT' => 33, 'ST_MULTILINESTRINGFROMTEXT' => 33, 'VALIDATE_PASSWORD_STRENGTH' => 33, + 'WAIT_FOR_EXECUTED_GTID_SET' => 33, + 'ST_GEOMETRYCOLLECTIONFROMWKB' => 33, + 'ST_GEOMETRYCOLLECTIONFROMTEXT' => 33, + 'WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS' => 33, + + 'IF' => 35, 'IN' => 35, + 'MOD' => 35, + 'LEFT' => 35, + 'MATCH' => 35, 'RIGHT' => 35, + 'EXISTS' => 35, 'INSERT' => 35, 'REPEAT' => 35, 'SCHEMA' => 35, 'VALUES' => 35, + 'CONVERT' => 35, 'DEFAULT' => 35, 'REPLACE' => 35, + 'DATABASE' => 35, 'UTC_DATE' => 35, 'UTC_TIME' => 35, + 'LOCALTIME' => 35, + 'CURRENT_DATE' => 35, 'CURRENT_TIME' => 35, 'CURRENT_USER' => 35, + 'UTC_TIMESTAMP' => 35, + 'LOCALTIMESTAMP' => 35, + 'CURRENT_TIMESTAMP' => 35, + + 'NOT IN' => 39, + + 'DATE' => 41, 'TIME' => 41, 'YEAR' => 41, + 'POINT' => 41, + 'POLYGON' => 41, + 'TIMESTAMP' => 41, + 'LINESTRING' => 41, + 'MULTILINESTRING' => 41, + 'GEOMETRYCOLLECTION' => 41, + + 'CHAR' => 43, + 'BINARY' => 43, + 'INTERVAL' => 43, + ]; +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Contexts/ContextMySql80000.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Contexts/ContextMySql80000.php new file mode 100644 index 0000000000..e0babeaf25 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Contexts/ContextMySql80000.php @@ -0,0 +1,348 @@ + + * @phpstan-var non-empty-array + */ + public static $KEYWORDS = [ + 'AT' => 1, 'DO' => 1, 'IO' => 1, 'NO' => 1, 'XA' => 1, + 'ANY' => 1, 'CPU' => 1, 'END' => 1, 'IPC' => 1, 'NDB' => 1, 'NEW' => 1, + 'ONE' => 1, 'ROW' => 1, 'XID' => 1, + 'BOOL' => 1, 'BYTE' => 1, 'CODE' => 1, 'CUBE' => 1, 'DATA' => 1, 'DISK' => 1, + 'ENDS' => 1, 'FAST' => 1, 'FILE' => 1, 'FULL' => 1, 'HASH' => 1, 'HELP' => 1, + 'HOST' => 1, 'LAST' => 1, 'LESS' => 1, 'LIST' => 1, 'LOGS' => 1, 'MODE' => 1, + 'NAME' => 1, 'NEXT' => 1, 'NONE' => 1, 'ONLY' => 1, 'OPEN' => 1, 'PAGE' => 1, + 'PORT' => 1, 'PREV' => 1, 'ROWS' => 1, 'SLOW' => 1, 'SOME' => 1, 'STOP' => 1, + 'THAN' => 1, 'TYPE' => 1, 'VIEW' => 1, 'WAIT' => 1, 'WORK' => 1, 'X509' => 1, + 'AFTER' => 1, 'BEGIN' => 1, 'BLOCK' => 1, 'BTREE' => 1, 'CACHE' => 1, + 'CHAIN' => 1, 'CLOSE' => 1, 'ERROR' => 1, 'EVENT' => 1, 'EVERY' => 1, + 'FIRST' => 1, 'FIXED' => 1, 'FLUSH' => 1, 'FOUND' => 1, 'HOSTS' => 1, + 'LEVEL' => 1, 'LOCAL' => 1, 'LOCKS' => 1, 'MERGE' => 1, 'MUTEX' => 1, + 'NAMES' => 1, 'NCHAR' => 1, 'NEVER' => 1, 'OWNER' => 1, 'PHASE' => 1, + 'PROXY' => 1, 'QUERY' => 1, 'QUICK' => 1, 'RELAY' => 1, 'RESET' => 1, + 'RTREE' => 1, 'SHARE' => 1, 'SLAVE' => 1, 'START' => 1, 'SUPER' => 1, + 'SWAPS' => 1, 'TYPES' => 1, 'UNTIL' => 1, 'VALUE' => 1, + 'ACTION' => 1, 'ALWAYS' => 1, 'BACKUP' => 1, 'BINLOG' => 1, 'CIPHER' => 1, + 'CLIENT' => 1, 'COMMIT' => 1, 'ENABLE' => 1, 'ENGINE' => 1, 'ERRORS' => 1, + 'ESCAPE' => 1, 'EVENTS' => 1, 'EXPIRE' => 1, 'EXPORT' => 1, 'FAULTS' => 1, + 'FIELDS' => 1, 'FILTER' => 1, 'GLOBAL' => 1, 'GRANTS' => 1, 'IMPORT' => 1, + 'ISSUER' => 1, 'LEAVES' => 1, 'MASTER' => 1, 'MEDIUM' => 1, 'MEMORY' => 1, + 'MODIFY' => 1, 'NUMBER' => 1, 'OFFSET' => 1, 'PARSER' => 1, 'PLUGIN' => 1, + 'RELOAD' => 1, 'REMOVE' => 1, 'REPAIR' => 1, 'RESUME' => 1, 'ROLLUP' => 1, + 'SERVER' => 1, 'SIGNED' => 1, 'SIMPLE' => 1, 'SOCKET' => 1, 'SONAME' => 1, + 'SOUNDS' => 1, 'SOURCE' => 1, 'STARTS' => 1, 'STATUS' => 1, 'STRING' => 1, + 'TABLES' => 1, + 'ACCOUNT' => 1, 'ANALYSE' => 1, 'CHANGED' => 1, 'CHANNEL' => 1, 'COLUMNS' => 1, + 'COMMENT' => 1, 'COMPACT' => 1, 'CONTEXT' => 1, 'CURRENT' => 1, 'DEFINER' => 1, + 'DISABLE' => 1, 'DISCARD' => 1, 'DYNAMIC' => 1, 'ENGINES' => 1, 'EXECUTE' => 1, + 'FOLLOWS' => 1, 'GENERAL' => 1, 'HANDLER' => 1, 'INDEXES' => 1, 'INSTALL' => 1, + 'INVOKER' => 1, 'LOGFILE' => 1, 'MIGRATE' => 1, 'NO_WAIT' => 1, 'OPTIONS' => 1, + 'PARTIAL' => 1, 'PERSIST' => 1, 'PLUGINS' => 1, 'PREPARE' => 1, 'PROFILE' => 1, + 'REBUILD' => 1, 'RECOVER' => 1, 'RESTORE' => 1, 'RETURNS' => 1, 'ROUTINE' => 1, + 'SESSION' => 1, 'STACKED' => 1, 'STORAGE' => 1, 'SUBJECT' => 1, 'SUSPEND' => 1, + 'UNICODE' => 1, 'UNKNOWN' => 1, 'UPGRADE' => 1, 'USE_FRM' => 1, 'WITHOUT' => 1, + 'WRAPPER' => 1, + 'CASCADED' => 1, 'CHECKSUM' => 1, 'DATAFILE' => 1, 'DUMPFILE' => 1, 'EXCHANGE' => 1, + 'EXTENDED' => 1, 'FUNCTION' => 1, 'LANGUAGE' => 1, 'MAX_ROWS' => 1, 'MAX_SIZE' => 1, + 'MIN_ROWS' => 1, 'NATIONAL' => 1, 'NVARCHAR' => 1, 'PRECEDES' => 1, 'PRESERVE' => 1, + 'PROFILES' => 1, 'REDOFILE' => 1, 'RELAYLOG' => 1, 'ROLLBACK' => 1, 'SCHEDULE' => 1, + 'SECURITY' => 1, 'SHUTDOWN' => 1, 'SNAPSHOT' => 1, 'SWITCHES' => 1, 'TRIGGERS' => 1, + 'UNDOFILE' => 1, 'WARNINGS' => 1, + 'AGGREGATE' => 1, 'ALGORITHM' => 1, 'COMMITTED' => 1, 'DIRECTORY' => 1, + 'DUPLICATE' => 1, 'EXPANSION' => 1, 'INVISIBLE' => 1, 'IO_THREAD' => 1, + 'ISOLATION' => 1, 'NODEGROUP' => 1, 'PACK_KEYS' => 1, 'READ_ONLY' => 1, + 'REDUNDANT' => 1, 'SAVEPOINT' => 1, 'SQL_CACHE' => 1, 'TEMPORARY' => 1, + 'TEMPTABLE' => 1, 'UNDEFINED' => 1, 'UNINSTALL' => 1, 'VARIABLES' => 1, + 'COMPLETION' => 1, 'COMPRESSED' => 1, 'CONCURRENT' => 1, 'CONNECTION' => 1, + 'CONSISTENT' => 1, 'DEALLOCATE' => 1, 'IDENTIFIED' => 1, 'MASTER_SSL' => 1, + 'NDBCLUSTER' => 1, 'PARTITIONS' => 1, 'PERSISTENT' => 1, 'PLUGIN_DIR' => 1, + 'PRIVILEGES' => 1, 'REORGANIZE' => 1, 'REPEATABLE' => 1, 'ROW_FORMAT' => 1, + 'SQL_THREAD' => 1, 'TABLESPACE' => 1, 'TABLE_NAME' => 1, 'VALIDATION' => 1, + 'COLUMN_NAME' => 1, 'COMPRESSION' => 1, 'CURSOR_NAME' => 1, 'DIAGNOSTICS' => 1, + 'EXTENT_SIZE' => 1, 'MASTER_HOST' => 1, 'MASTER_PORT' => 1, 'MASTER_USER' => 1, + 'MYSQL_ERRNO' => 1, 'NONBLOCKING' => 1, 'PROCESSLIST' => 1, 'REPLICATION' => 1, + 'SCHEMA_NAME' => 1, 'SQL_TSI_DAY' => 1, 'TRANSACTION' => 1, 'UNCOMMITTED' => 1, + 'CATALOG_NAME' => 1, 'CLASS_ORIGIN' => 1, 'DEFAULT_AUTH' => 1, 'DES_KEY_FILE' => 1, + 'INITIAL_SIZE' => 1, 'MASTER_DELAY' => 1, 'MESSAGE_TEXT' => 1, 'PARTITIONING' => 1, + 'PERSIST_ONLY' => 1, 'RELAY_THREAD' => 1, 'SERIALIZABLE' => 1, 'SQL_NO_CACHE' => 1, + 'SQL_TSI_HOUR' => 1, 'SQL_TSI_WEEK' => 1, 'SQL_TSI_YEAR' => 1, 'SUBPARTITION' => 1, + 'COLUMN_FORMAT' => 1, 'INSERT_METHOD' => 1, 'MASTER_SSL_CA' => 1, 'RELAY_LOG_POS' => 1, + 'SQL_TSI_MONTH' => 1, 'SUBPARTITIONS' => 1, + 'AUTO_INCREMENT' => 1, 'AVG_ROW_LENGTH' => 1, 'KEY_BLOCK_SIZE' => 1, 'MASTER_LOG_POS' => 1, + 'MASTER_SSL_CRL' => 1, 'MASTER_SSL_KEY' => 1, 'RELAY_LOG_FILE' => 1, 'SQL_TSI_MINUTE' => 1, + 'SQL_TSI_SECOND' => 1, 'TABLE_CHECKSUM' => 1, 'USER_RESOURCES' => 1, + 'AUTOEXTEND_SIZE' => 1, 'CONSTRAINT_NAME' => 1, 'DELAY_KEY_WRITE' => 1, 'FILE_BLOCK_SIZE' => 1, + 'MASTER_LOG_FILE' => 1, 'MASTER_PASSWORD' => 1, 'MASTER_SSL_CERT' => 1, 'PARSE_GCOL_EXPR' => 1, + 'REPLICATE_DO_DB' => 1, 'SQL_AFTER_GTIDS' => 1, 'SQL_TSI_QUARTER' => 1, 'SUBCLASS_ORIGIN' => 1, + 'MASTER_SERVER_ID' => 1, 'REDO_BUFFER_SIZE' => 1, 'SQL_BEFORE_GTIDS' => 1, + 'STATS_PERSISTENT' => 1, 'UNDO_BUFFER_SIZE' => 1, + 'CONSTRAINT_SCHEMA' => 1, 'GROUP_REPLICATION' => 1, 'IGNORE_SERVER_IDS' => 1, + 'MASTER_SSL_CAPATH' => 1, 'MASTER_SSL_CIPHER' => 1, 'RETURNED_SQLSTATE' => 1, + 'SQL_BUFFER_RESULT' => 1, 'STATS_AUTO_RECALC' => 1, + 'CONSTRAINT_CATALOG' => 1, 'MASTER_RETRY_COUNT' => 1, 'MASTER_SSL_CRLPATH' => 1, + 'MAX_STATEMENT_TIME' => 1, 'REPLICATE_DO_TABLE' => 1, 'SQL_AFTER_MTS_GAPS' => 1, + 'STATS_SAMPLE_PAGES' => 1, + 'REPLICATE_IGNORE_DB' => 1, + 'MASTER_AUTO_POSITION' => 1, 'MASTER_CONNECT_RETRY' => 1, 'MAX_QUERIES_PER_HOUR' => 1, + 'MAX_UPDATES_PER_HOUR' => 1, 'MAX_USER_CONNECTIONS' => 1, 'REPLICATE_REWRITE_DB' => 1, + 'REPLICATE_IGNORE_TABLE' => 1, + 'MASTER_HEARTBEAT_PERIOD' => 1, 'REPLICATE_WILD_DO_TABLE' => 1, + 'MAX_CONNECTIONS_PER_HOUR' => 1, + 'REPLICATE_WILD_IGNORE_TABLE' => 1, + + 'AS' => 3, 'BY' => 3, 'IS' => 3, 'ON' => 3, 'OR' => 3, 'TO' => 3, + 'ADD' => 3, 'ALL' => 3, 'AND' => 3, 'ASC' => 3, 'DEC' => 3, 'DIV' => 3, + 'FOR' => 3, 'GET' => 3, 'NOT' => 3, 'OUT' => 3, 'SQL' => 3, 'SSL' => 3, + 'USE' => 3, 'XOR' => 3, + 'BOTH' => 3, 'CALL' => 3, 'CASE' => 3, 'DESC' => 3, 'DROP' => 3, 'DUAL' => 3, + 'EACH' => 3, 'ELSE' => 3, 'EXIT' => 3, 'FROM' => 3, 'INT1' => 3, 'INT2' => 3, + 'INT3' => 3, 'INT4' => 3, 'INT8' => 3, 'INTO' => 3, 'JOIN' => 3, 'KEYS' => 3, + 'KILL' => 3, 'LIKE' => 3, 'LOAD' => 3, 'LOCK' => 3, 'LONG' => 3, 'LOOP' => 3, + 'NULL' => 3, 'OVER' => 3, 'READ' => 3, 'SHOW' => 3, 'THEN' => 3, 'TRUE' => 3, + 'UNDO' => 3, 'WHEN' => 3, 'WITH' => 3, + 'ALTER' => 3, 'CHECK' => 3, 'CROSS' => 3, 'FALSE' => 3, 'FETCH' => 3, + 'FORCE' => 3, 'GRANT' => 3, 'GROUP' => 3, 'INNER' => 3, 'INOUT' => 3, + 'LEAVE' => 3, 'LIMIT' => 3, 'LINES' => 3, 'ORDER' => 3, 'OUTER' => 3, + 'PURGE' => 3, 'RANGE' => 3, 'READS' => 3, 'RLIKE' => 3, 'TABLE' => 3, + 'UNION' => 3, 'USAGE' => 3, 'USING' => 3, 'WHERE' => 3, 'WHILE' => 3, + 'WRITE' => 3, + 'BEFORE' => 3, 'CHANGE' => 3, 'COLUMN' => 3, 'CREATE' => 3, 'CURSOR' => 3, + 'DELETE' => 3, 'ELSEIF' => 3, 'FLOAT4' => 3, 'FLOAT8' => 3, 'HAVING' => 3, + 'IGNORE' => 3, 'INFILE' => 3, 'LINEAR' => 3, 'OPTION' => 3, 'REGEXP' => 3, + 'RENAME' => 3, 'RETURN' => 3, 'REVOKE' => 3, 'SELECT' => 3, 'SIGNAL' => 3, + 'STORED' => 3, 'UNLOCK' => 3, 'UPDATE' => 3, + 'ANALYZE' => 3, 'BETWEEN' => 3, 'CASCADE' => 3, 'COLLATE' => 3, 'DECLARE' => 3, + 'DELAYED' => 3, 'ESCAPED' => 3, 'EXPLAIN' => 3, 'FOREIGN' => 3, 'ITERATE' => 3, + 'LEADING' => 3, 'NATURAL' => 3, 'OUTFILE' => 3, 'PRIMARY' => 3, 'RELEASE' => 3, + 'REQUIRE' => 3, 'SCHEMAS' => 3, 'TRIGGER' => 3, 'VARYING' => 3, 'VIRTUAL' => 3, + 'CONTINUE' => 3, 'DAY_HOUR' => 3, 'DESCRIBE' => 3, 'DISTINCT' => 3, 'ENCLOSED' => 3, + 'MAXVALUE' => 3, 'MODIFIES' => 3, 'OPTIMIZE' => 3, 'RESIGNAL' => 3, 'RESTRICT' => 3, + 'SPECIFIC' => 3, 'SQLSTATE' => 3, 'STARTING' => 3, 'TRAILING' => 3, 'UNSIGNED' => 3, + 'ZEROFILL' => 3, + 'CONDITION' => 3, 'DATABASES' => 3, 'GENERATED' => 3, 'MIDDLEINT' => 3, + 'PARTITION' => 3, 'PRECISION' => 3, 'PROCEDURE' => 3, 'SENSITIVE' => 3, + 'SEPARATOR' => 3, + 'ACCESSIBLE' => 3, 'ASENSITIVE' => 3, 'CONSTRAINT' => 3, 'DAY_MINUTE' => 3, + 'DAY_SECOND' => 3, 'OPTIONALLY' => 3, 'READ_WRITE' => 3, 'REFERENCES' => 3, + 'SQLWARNING' => 3, 'TERMINATED' => 3, 'YEAR_MONTH' => 3, + 'DISTINCTROW' => 3, 'HOUR_MINUTE' => 3, 'HOUR_SECOND' => 3, 'INSENSITIVE' => 3, + 'MASTER_BIND' => 3, + 'LOW_PRIORITY' => 3, 'SQLEXCEPTION' => 3, 'VARCHARACTER' => 3, + 'DETERMINISTIC' => 3, 'HIGH_PRIORITY' => 3, 'MINUTE_SECOND' => 3, 'STRAIGHT_JOIN' => 3, + 'IO_AFTER_GTIDS' => 3, 'SQL_BIG_RESULT' => 3, + 'DAY_MICROSECOND' => 3, 'IO_BEFORE_GTIDS' => 3, 'OPTIMIZER_COSTS' => 3, + 'HOUR_MICROSECOND' => 3, 'SQL_SMALL_RESULT' => 3, + 'MINUTE_MICROSECOND' => 3, 'NO_WRITE_TO_BINLOG' => 3, 'SECOND_MICROSECOND' => 3, + 'SQL_CALC_FOUND_ROWS' => 3, + 'MASTER_SSL_VERIFY_SERVER_CERT' => 3, + + 'GROUP BY' => 7, 'NOT NULL' => 7, 'ORDER BY' => 7, 'SET NULL' => 7, + 'AND CHAIN' => 7, 'FULL JOIN' => 7, 'IF EXISTS' => 7, 'LEFT JOIN' => 7, + 'LESS THAN' => 7, 'LOAD DATA' => 7, 'NO ACTION' => 7, 'ON DELETE' => 7, + 'ON UPDATE' => 7, 'UNION ALL' => 7, + 'CROSS JOIN' => 7, 'ESCAPED BY' => 7, 'FOR UPDATE' => 7, 'INNER JOIN' => 7, + 'LINEAR KEY' => 7, 'NO RELEASE' => 7, 'OR REPLACE' => 7, 'RIGHT JOIN' => 7, + 'ENCLOSED BY' => 7, 'LINEAR HASH' => 7, 'STARTING BY' => 7, + 'AND NO CHAIN' => 7, 'FOR EACH ROW' => 7, 'NATURAL JOIN' => 7, 'PARTITION BY' => 7, + 'SET PASSWORD' => 7, 'SQL SECURITY' => 7, + 'CHARACTER SET' => 7, 'IF NOT EXISTS' => 7, 'TERMINATED BY' => 7, + 'DATA DIRECTORY' => 7, 'UNION DISTINCT' => 7, + 'DEFAULT CHARSET' => 7, 'DEFAULT COLLATE' => 7, 'FULL OUTER JOIN' => 7, 'INDEX DIRECTORY' => 7, + 'LEFT OUTER JOIN' => 7, 'SUBPARTITION BY' => 7, + 'GENERATED ALWAYS' => 7, 'RIGHT OUTER JOIN' => 7, + 'NATURAL LEFT JOIN' => 7, 'START TRANSACTION' => 7, + 'LOCK IN SHARE MODE' => 7, 'NATURAL RIGHT JOIN' => 7, 'SELECT TRANSACTION' => 7, + 'DEFAULT CHARACTER SET' => 7, + 'NATURAL LEFT OUTER JOIN' => 7, + 'NATURAL RIGHT OUTER JOIN' => 7, 'WITH CONSISTENT SNAPSHOT' => 7, + + 'BIT' => 9, 'XML' => 9, + 'ENUM' => 9, 'JSON' => 9, 'TEXT' => 9, + 'ARRAY' => 9, + 'SERIAL' => 9, + 'BOOLEAN' => 9, + 'DATETIME' => 9, 'GEOMETRY' => 9, 'MULTISET' => 9, + 'MULTILINEPOINT' => 9, + 'MULTILINEPOLYGON' => 9, + + 'INT' => 11, 'SET' => 11, + 'BLOB' => 11, 'REAL' => 11, + 'FLOAT' => 11, + 'BIGINT' => 11, 'DOUBLE' => 11, + 'DECIMAL' => 11, 'INTEGER' => 11, 'NUMERIC' => 11, 'TINYINT' => 11, 'VARCHAR' => 11, + 'LONGBLOB' => 11, 'LONGTEXT' => 11, 'SMALLINT' => 11, 'TINYBLOB' => 11, 'TINYTEXT' => 11, + 'CHARACTER' => 11, 'MEDIUMINT' => 11, 'VARBINARY' => 11, + 'MEDIUMBLOB' => 11, 'MEDIUMTEXT' => 11, + + 'BINARY VARYING' => 15, + + 'KEY' => 19, + 'INDEX' => 19, + 'UNIQUE' => 19, + 'SPATIAL' => 19, + 'FULLTEXT' => 19, + + 'INDEX KEY' => 23, + 'UNIQUE KEY' => 23, + 'FOREIGN KEY' => 23, 'PRIMARY KEY' => 23, 'SPATIAL KEY' => 23, + 'FULLTEXT KEY' => 23, 'UNIQUE INDEX' => 23, + 'SPATIAL INDEX' => 23, + 'FULLTEXT INDEX' => 23, + + 'X' => 33, 'Y' => 33, + 'LN' => 33, 'PI' => 33, + 'ABS' => 33, 'AVG' => 33, 'BIN' => 33, 'COS' => 33, 'COT' => 33, 'DAY' => 33, + 'ELT' => 33, 'EXP' => 33, 'HEX' => 33, 'LOG' => 33, 'MAX' => 33, 'MD5' => 33, + 'MID' => 33, 'MIN' => 33, 'NOW' => 33, 'OCT' => 33, 'ORD' => 33, 'POW' => 33, + 'SHA' => 33, 'SIN' => 33, 'STD' => 33, 'SUM' => 33, 'TAN' => 33, + 'ACOS' => 33, 'AREA' => 33, 'ASIN' => 33, 'ATAN' => 33, 'CAST' => 33, 'CEIL' => 33, + 'CONV' => 33, 'HOUR' => 33, 'LOG2' => 33, 'LPAD' => 33, 'RAND' => 33, 'RPAD' => 33, + 'SHA1' => 33, 'SHA2' => 33, 'SIGN' => 33, 'SQRT' => 33, 'SRID' => 33, 'ST_X' => 33, + 'ST_Y' => 33, 'TRIM' => 33, 'USER' => 33, 'UUID' => 33, 'WEEK' => 33, + 'ASCII' => 33, 'ASWKB' => 33, 'ASWKT' => 33, 'ATAN2' => 33, 'COUNT' => 33, + 'CRC32' => 33, 'FIELD' => 33, 'FLOOR' => 33, 'INSTR' => 33, 'LCASE' => 33, + 'LEAST' => 33, 'LOG10' => 33, 'LOWER' => 33, 'LTRIM' => 33, 'MONTH' => 33, + 'POWER' => 33, 'QUOTE' => 33, 'ROUND' => 33, 'RTRIM' => 33, 'SLEEP' => 33, + 'SPACE' => 33, 'UCASE' => 33, 'UNHEX' => 33, 'UPPER' => 33, + 'ASTEXT' => 33, 'BIT_OR' => 33, 'BUFFER' => 33, 'CONCAT' => 33, 'DECODE' => 33, + 'ENCODE' => 33, 'EQUALS' => 33, 'FORMAT' => 33, 'IFNULL' => 33, 'ISNULL' => 33, + 'LENGTH' => 33, 'LOCATE' => 33, 'MINUTE' => 33, 'NULLIF' => 33, 'POINTN' => 33, + 'SECOND' => 33, 'STDDEV' => 33, 'STRCMP' => 33, 'SUBSTR' => 33, 'WITHIN' => 33, + 'ADDDATE' => 33, 'ADDTIME' => 33, 'AGAINST' => 33, 'BIT_AND' => 33, 'BIT_XOR' => 33, + 'CEILING' => 33, 'CHARSET' => 33, 'CROSSES' => 33, 'CURDATE' => 33, 'CURTIME' => 33, + 'DAYNAME' => 33, 'DEGREES' => 33, 'ENCRYPT' => 33, 'EXTRACT' => 33, 'GLENGTH' => 33, + 'ISEMPTY' => 33, 'IS_IPV4' => 33, 'IS_IPV6' => 33, 'IS_UUID' => 33, 'QUARTER' => 33, + 'RADIANS' => 33, 'REVERSE' => 33, 'SOUNDEX' => 33, 'ST_AREA' => 33, 'ST_SRID' => 33, + 'SUBDATE' => 33, 'SUBTIME' => 33, 'SYSDATE' => 33, 'TOUCHES' => 33, 'TO_DAYS' => 33, + 'VAR_POP' => 33, 'VERSION' => 33, 'WEEKDAY' => 33, + 'ASBINARY' => 33, 'CENTROID' => 33, 'COALESCE' => 33, 'COMPRESS' => 33, 'CONTAINS' => 33, + 'DATEDIFF' => 33, 'DATE_ADD' => 33, 'DATE_SUB' => 33, 'DISJOINT' => 33, 'DISTANCE' => 33, + 'ENDPOINT' => 33, 'ENVELOPE' => 33, 'GET_LOCK' => 33, 'GREATEST' => 33, 'ISCLOSED' => 33, + 'ISSIMPLE' => 33, 'JSON_SET' => 33, 'MAKEDATE' => 33, 'MAKETIME' => 33, 'MAKE_SET' => 33, + 'MBREQUAL' => 33, 'OVERLAPS' => 33, 'PASSWORD' => 33, 'POSITION' => 33, 'ST_ASWKB' => 33, + 'ST_ASWKT' => 33, 'ST_UNION' => 33, 'TIMEDIFF' => 33, 'TRUNCATE' => 33, 'VARIANCE' => 33, + 'VAR_SAMP' => 33, 'YEARWEEK' => 33, + 'ANY_VALUE' => 33, 'BENCHMARK' => 33, 'BIT_COUNT' => 33, 'COLLATION' => 33, + 'CONCAT_WS' => 33, 'DAYOFWEEK' => 33, 'DAYOFYEAR' => 33, 'DIMENSION' => 33, + 'FROM_DAYS' => 33, 'GEOMETRYN' => 33, 'INET_ATON' => 33, 'INET_NTOA' => 33, + 'JSON_KEYS' => 33, 'JSON_TYPE' => 33, 'LOAD_FILE' => 33, 'MBRCOVERS' => 33, + 'MBREQUALS' => 33, 'MBRWITHIN' => 33, 'MONTHNAME' => 33, 'NUMPOINTS' => 33, + 'ROW_COUNT' => 33, 'ST_ASTEXT' => 33, 'ST_BUFFER' => 33, 'ST_EQUALS' => 33, + 'ST_LENGTH' => 33, 'ST_POINTN' => 33, 'ST_WITHIN' => 33, 'SUBSTRING' => 33, + 'TO_BASE64' => 33, 'UPDATEXML' => 33, + 'BIT_LENGTH' => 33, 'CONVERT_TZ' => 33, 'CONVEXHULL' => 33, 'DAYOFMONTH' => 33, + 'EXPORT_SET' => 33, 'FOUND_ROWS' => 33, 'GET_FORMAT' => 33, 'INET6_ATON' => 33, + 'INET6_NTOA' => 33, 'INTERSECTS' => 33, 'JSON_ARRAY' => 33, 'JSON_DEPTH' => 33, + 'JSON_MERGE' => 33, 'JSON_QUOTE' => 33, 'JSON_VALID' => 33, 'MBRTOUCHES' => 33, + 'MULTIPOINT' => 33, 'NAME_CONST' => 33, 'PERIOD_ADD' => 33, 'STARTPOINT' => 33, + 'STDDEV_POP' => 33, 'ST_CROSSES' => 33, 'ST_GEOHASH' => 33, 'ST_ISEMPTY' => 33, + 'ST_ISVALID' => 33, 'ST_TOUCHES' => 33, 'TO_SECONDS' => 33, 'UNCOMPRESS' => 33, + 'UUID_SHORT' => 33, 'WEEKOFYEAR' => 33, + 'AES_DECRYPT' => 33, 'AES_ENCRYPT' => 33, 'BIN_TO_UUID' => 33, 'CHAR_LENGTH' => 33, + 'DATE_FORMAT' => 33, 'DES_DECRYPT' => 33, 'DES_ENCRYPT' => 33, 'FIND_IN_SET' => 33, + 'FROM_BASE64' => 33, 'GEOMFROMWKB' => 33, 'GTID_SUBSET' => 33, 'JSON_INSERT' => 33, + 'JSON_LENGTH' => 33, 'JSON_OBJECT' => 33, 'JSON_PRETTY' => 33, 'JSON_REMOVE' => 33, + 'JSON_SEARCH' => 33, 'LINEFROMWKB' => 33, 'MBRCONTAINS' => 33, 'MBRDISJOINT' => 33, + 'MBROVERLAPS' => 33, 'MICROSECOND' => 33, 'PERIOD_DIFF' => 33, 'POLYFROMWKB' => 33, + 'SEC_TO_TIME' => 33, 'STDDEV_SAMP' => 33, 'STR_TO_DATE' => 33, 'ST_ASBINARY' => 33, + 'ST_CENTROID' => 33, 'ST_CONTAINS' => 33, 'ST_DISJOINT' => 33, 'ST_DISTANCE' => 33, + 'ST_ENDPOINT' => 33, 'ST_ENVELOPE' => 33, 'ST_ISCLOSED' => 33, 'ST_ISSIMPLE' => 33, + 'ST_OVERLAPS' => 33, 'ST_SIMPLIFY' => 33, 'ST_VALIDATE' => 33, 'SYSTEM_USER' => 33, + 'TIME_FORMAT' => 33, 'TIME_TO_SEC' => 33, 'UUID_TO_BIN' => 33, + 'COERCIBILITY' => 33, 'EXTERIORRING' => 33, 'EXTRACTVALUE' => 33, 'GEOMETRYTYPE' => 33, + 'GEOMFROMTEXT' => 33, 'GROUP_CONCAT' => 33, 'IS_FREE_LOCK' => 33, 'IS_USED_LOCK' => 33, + 'JSON_EXTRACT' => 33, 'JSON_REPLACE' => 33, 'JSON_UNQUOTE' => 33, 'LINEFROMTEXT' => 33, + 'MBRCOVEREDBY' => 33, 'MLINEFROMWKB' => 33, 'MPOLYFROMWKB' => 33, 'MULTIPOLYGON' => 33, + 'OCTET_LENGTH' => 33, 'OLD_PASSWORD' => 33, 'POINTFROMWKB' => 33, 'POLYFROMTEXT' => 33, + 'RANDOM_BYTES' => 33, 'RELEASE_LOCK' => 33, 'SESSION_USER' => 33, 'ST_ASGEOJSON' => 33, + 'ST_DIMENSION' => 33, 'ST_GEOMETRYN' => 33, 'ST_NUMPOINTS' => 33, 'TIMESTAMPADD' => 33, + 'CONNECTION_ID' => 33, 'FROM_UNIXTIME' => 33, 'GTID_SUBTRACT' => 33, 'INTERIORRINGN' => 33, + 'JSON_CONTAINS' => 33, 'MBRINTERSECTS' => 33, 'MLINEFROMTEXT' => 33, 'MPOINTFROMWKB' => 33, + 'MPOLYFROMTEXT' => 33, 'NUMGEOMETRIES' => 33, 'POINTFROMTEXT' => 33, 'ST_CONVEXHULL' => 33, + 'ST_DIFFERENCE' => 33, 'ST_INTERSECTS' => 33, 'ST_STARTPOINT' => 33, 'TIMESTAMPDIFF' => 33, + 'WEIGHT_STRING' => 33, + 'IS_IPV4_COMPAT' => 33, 'IS_IPV4_MAPPED' => 33, 'LAST_INSERT_ID' => 33, 'MPOINTFROMTEXT' => 33, + 'POLYGONFROMWKB' => 33, 'ST_GEOMFROMWKB' => 33, 'ST_LINEFROMWKB' => 33, 'ST_POLYFROMWKB' => 33, + 'UNIX_TIMESTAMP' => 33, + 'GEOMCOLLFROMWKB' => 33, 'MASTER_POS_WAIT' => 33, 'POLYGONFROMTEXT' => 33, 'ST_EXTERIORRING' => 33, + 'ST_GEOMETRYTYPE' => 33, 'ST_GEOMFROMTEXT' => 33, 'ST_INTERSECTION' => 33, 'ST_LINEFROMTEXT' => 33, + 'ST_MAKEENVELOPE' => 33, 'ST_MLINEFROMWKB' => 33, 'ST_MPOLYFROMWKB' => 33, 'ST_POINTFROMWKB' => 33, + 'ST_POLYFROMTEXT' => 33, 'SUBSTRING_INDEX' => 33, + 'CHARACTER_LENGTH' => 33, 'GEOMCOLLFROMTEXT' => 33, 'GEOMETRYFROMTEXT' => 33, + 'JSON_MERGE_PATCH' => 33, 'NUMINTERIORRINGS' => 33, 'ST_INTERIORRINGN' => 33, + 'ST_MLINEFROMTEXT' => 33, 'ST_MPOINTFROMWKB' => 33, 'ST_MPOLYFROMTEXT' => 33, + 'ST_NUMGEOMETRIES' => 33, 'ST_POINTFROMTEXT' => 33, 'ST_SYMDIFFERENCE' => 33, + 'JSON_ARRAY_APPEND' => 33, 'JSON_ARRAY_INSERT' => 33, 'JSON_STORAGE_FREE' => 33, + 'JSON_STORAGE_SIZE' => 33, 'LINESTRINGFROMWKB' => 33, 'MULTIPOINTFROMWKB' => 33, + 'RELEASE_ALL_LOCKS' => 33, 'ST_LATFROMGEOHASH' => 33, 'ST_MPOINTFROMTEXT' => 33, + 'ST_POLYGONFROMWKB' => 33, + 'JSON_CONTAINS_PATH' => 33, 'MULTIPOINTFROMTEXT' => 33, 'ST_BUFFER_STRATEGY' => 33, + 'ST_DISTANCE_SPHERE' => 33, 'ST_GEOMCOLLFROMTXT' => 33, 'ST_GEOMCOLLFROMWKB' => 33, + 'ST_GEOMFROMGEOJSON' => 33, 'ST_LONGFROMGEOHASH' => 33, 'ST_POLYGONFROMTEXT' => 33, + 'JSON_MERGE_PRESERVE' => 33, 'MULTIPOLYGONFROMWKB' => 33, 'ST_GEOMCOLLFROMTEXT' => 33, + 'ST_GEOMETRYFROMTEXT' => 33, 'ST_NUMINTERIORRINGS' => 33, 'ST_POINTFROMGEOHASH' => 33, + 'UNCOMPRESSED_LENGTH' => 33, + 'MULTIPOLYGONFROMTEXT' => 33, 'ST_LINESTRINGFROMWKB' => 33, 'ST_MULTIPOINTFROMWKB' => 33, + 'ST_MULTIPOINTFROMTEXT' => 33, + 'MULTILINESTRINGFROMWKB' => 33, 'ST_MULTIPOLYGONFROMWKB' => 33, + 'MULTILINESTRINGFROMTEXT' => 33, 'ST_MULTIPOLYGONFROMTEXT' => 33, + 'GEOMETRYCOLLECTIONFROMWKB' => 33, 'ST_MULTILINESTRINGFROMWKB' => 33, + 'GEOMETRYCOLLECTIONFROMTEXT' => 33, 'ST_MULTILINESTRINGFROMTEXT' => 33, 'VALIDATE_PASSWORD_STRENGTH' => 33, + 'WAIT_FOR_EXECUTED_GTID_SET' => 33, + 'ST_GEOMETRYCOLLECTIONFROMWKB' => 33, + 'ST_GEOMETRYCOLLECTIONFROMTEXT' => 33, + 'WAIT_UNTIL_SQL_THREAD_AFTER_GTIDS' => 33, + + 'IF' => 35, 'IN' => 35, + 'MOD' => 35, + 'LEFT' => 35, + 'MATCH' => 35, 'RIGHT' => 35, + 'EXISTS' => 35, 'INSERT' => 35, 'REPEAT' => 35, 'SCHEMA' => 35, 'VALUES' => 35, + 'CONVERT' => 35, 'DEFAULT' => 35, 'REPLACE' => 35, + 'DATABASE' => 35, 'UTC_DATE' => 35, 'UTC_TIME' => 35, + 'LOCALTIME' => 35, + 'CURRENT_DATE' => 35, 'CURRENT_TIME' => 35, 'CURRENT_USER' => 35, + 'UTC_TIMESTAMP' => 35, + 'LOCALTIMESTAMP' => 35, + 'CURRENT_TIMESTAMP' => 35, + + 'NOT IN' => 39, + + 'DATE' => 41, 'TIME' => 41, 'YEAR' => 41, + 'POINT' => 41, + 'POLYGON' => 41, + 'TIMESTAMP' => 41, + 'LINESTRING' => 41, + 'MULTILINESTRING' => 41, + 'GEOMETRYCOLLECTION' => 41, + + 'CHAR' => 43, + 'BINARY' => 43, + 'INTERVAL' => 43, + ]; +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Core.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Core.php new file mode 100644 index 0000000000..e529920771 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Core.php @@ -0,0 +1,51 @@ +strict) { + throw $error; + } + + $this->errors[] = $error; + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Exceptions/LexerException.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Exceptions/LexerException.php new file mode 100644 index 0000000000..287ecec60a --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Exceptions/LexerException.php @@ -0,0 +1,43 @@ +ch = $ch; + $this->pos = $pos; + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Exceptions/LoaderException.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Exceptions/LoaderException.php new file mode 100644 index 0000000000..35d4b16ced --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Exceptions/LoaderException.php @@ -0,0 +1,34 @@ +name = $name; + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Exceptions/ParserException.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Exceptions/ParserException.php new file mode 100644 index 0000000000..3f48698aaf --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Exceptions/ParserException.php @@ -0,0 +1,35 @@ +token = $token; + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Lexer.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Lexer.php new file mode 100644 index 0000000000..9e905f524a --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Lexer.php @@ -0,0 +1,1050 @@ +list; + } + + /** + * @param string|UtfString $str the query to be lexed + * @param bool $strict whether strict mode should be + * enabled or not + * @param string $delimiter the delimiter to be used + */ + public function __construct($str, $strict = false, $delimiter = null) + { + // `strlen` is used instead of `mb_strlen` because the lexer needs to + // parse each byte of the input. + $len = $str instanceof UtfString ? $str->length() : strlen($str); + + // For multi-byte strings, a new instance of `UtfString` is + // initialized (only if `UtfString` usage is forced. + if (! $str instanceof UtfString && USE_UTF_STRINGS && $len !== mb_strlen($str, 'UTF-8')) { + $str = new UtfString($str); + } + + $this->str = $str; + $this->len = $str instanceof UtfString ? $str->length() : $len; + + $this->strict = $strict; + + // Setting the delimiter. + $this->setDelimiter(! empty($delimiter) ? $delimiter : static::$DEFAULT_DELIMITER); + + $this->lex(); + } + + /** + * Sets the delimiter. + * + * @param string $delimiter the new delimiter + */ + public function setDelimiter($delimiter) + { + $this->delimiter = $delimiter; + $this->delimiterLen = strlen($delimiter); + } + + /** + * Parses the string and extracts lexemes. + */ + public function lex() + { + // TODO: Sometimes, static::parse* functions make unnecessary calls to + // is* functions. For a better performance, some rules can be deduced + // from context. + // For example, in `parseBool` there is no need to compare the token + // every time with `true` and `false`. The first step would be to + // compare with 'true' only and just after that add another letter from + // context and compare again with `false`. + // Another example is `parseComment`. + + $list = new TokensList(); + + /** + * Last processed token. + * + * @var Token + */ + $lastToken = null; + + for ($this->last = 0, $lastIdx = 0; $this->last < $this->len; $lastIdx = ++$this->last) { + /** + * The new token. + * + * @var Token + */ + $token = null; + + foreach (static::$PARSER_METHODS as $method) { + $token = $this->$method(); + + if ($token) { + break; + } + } + + if ($token === null) { + // @assert($this->last === $lastIdx); + $token = new Token($this->str[$this->last]); + $this->error('Unexpected character.', $this->str[$this->last], $this->last); + } elseif ( + $lastToken !== null + && $token->type === Token::TYPE_SYMBOL + && $token->flags & Token::FLAG_SYMBOL_VARIABLE + && ( + $lastToken->type === Token::TYPE_STRING + || ( + $lastToken->type === Token::TYPE_SYMBOL + && $lastToken->flags & Token::FLAG_SYMBOL_BACKTICK + ) + ) + ) { + // Handles ```... FROM 'user'@'%' ...```. + $lastToken->token .= $token->token; + $lastToken->type = Token::TYPE_SYMBOL; + $lastToken->flags = Token::FLAG_SYMBOL_USER; + $lastToken->value .= '@' . $token->value; + continue; + } elseif ( + $lastToken !== null + && $token->type === Token::TYPE_KEYWORD + && $lastToken->type === Token::TYPE_OPERATOR + && $lastToken->value === '.' + ) { + // Handles ```... tbl.FROM ...```. In this case, FROM is not + // a reserved word. + $token->type = Token::TYPE_NONE; + $token->flags = 0; + $token->value = $token->token; + } + + $token->position = $lastIdx; + + $list->tokens[$list->count++] = $token; + + // Handling delimiters. + if ($token->type === Token::TYPE_NONE && $token->value === 'DELIMITER') { + if ($this->last + 1 >= $this->len) { + $this->error('Expected whitespace(s) before delimiter.', '', $this->last + 1); + continue; + } + + // Skipping last R (from `delimiteR`) and whitespaces between + // the keyword `DELIMITER` and the actual delimiter. + $pos = ++$this->last; + $token = $this->parseWhitespace(); + + if ($token !== null) { + $token->position = $pos; + $list->tokens[$list->count++] = $token; + } + + // Preparing the token that holds the new delimiter. + if ($this->last + 1 >= $this->len) { + $this->error('Expected delimiter.', '', $this->last + 1); + continue; + } + + $pos = $this->last + 1; + + // Parsing the delimiter. + $this->delimiter = null; + $delimiterLen = 0; + while ( + ++$this->last < $this->len + && ! Context::isWhitespace($this->str[$this->last]) + && $delimiterLen < 15 + ) { + $this->delimiter .= $this->str[$this->last]; + ++$delimiterLen; + } + + if (empty($this->delimiter)) { + $this->error('Expected delimiter.', '', $this->last); + $this->delimiter = ';'; + } + + --$this->last; + + // Saving the delimiter and its token. + $this->delimiterLen = strlen($this->delimiter); + $token = new Token($this->delimiter, Token::TYPE_DELIMITER); + $token->position = $pos; + $list->tokens[$list->count++] = $token; + } + + $lastToken = $token; + } + + // Adding a final delimiter to mark the ending. + $list->tokens[$list->count++] = new Token(null, Token::TYPE_DELIMITER); + + // Saving the tokens list. + $this->list = $list; + + $this->solveAmbiguityOnStarOperator(); + } + + /** + * Resolves the ambiguity when dealing with the "*" operator. + * + * In SQL statements, the "*" operator can be an arithmetic operator (like in 2*3) or an SQL wildcard (like in + * SELECT a.* FROM ...). To solve this ambiguity, the solution is to find the next token, excluding whitespaces and + * comments, right after the "*" position. The "*" is for sure an SQL wildcard if the next token found is any of: + * - "FROM" (the FROM keyword like in "SELECT * FROM..."); + * - "USING" (the USING keyword like in "DELETE table_name.* USING..."); + * - "," (a comma separator like in "SELECT *, field FROM..."); + * - ")" (a closing parenthesis like in "COUNT(*)"). + * This methods will change the flag of the "*" tokens when any of those condition above is true. Otherwise, the + * default flag (arithmetic) will be kept. + * + * @return void + */ + private function solveAmbiguityOnStarOperator() + { + $iBak = $this->list->idx; + while (($starToken = $this->list->getNextOfTypeAndValue(Token::TYPE_OPERATOR, '*')) !== null) { + // getNext() already gets rid of whitespaces and comments. + $next = $this->list->getNext(); + + if ($next === null) { + continue; + } + + if ( + ($next->type !== Token::TYPE_KEYWORD || ! in_array($next->value, ['FROM', 'USING'], true)) + && ($next->type !== Token::TYPE_OPERATOR || ! in_array($next->value, [',', ')'], true)) + ) { + continue; + } + + $starToken->flags = Token::FLAG_OPERATOR_SQL; + } + + $this->list->idx = $iBak; + } + + /** + * Creates a new error log. + * + * @param string $msg the error message + * @param string $str the character that produced the error + * @param int $pos the position of the character + * @param int $code the code of the error + * + * @throws LexerException throws the exception, if strict mode is enabled. + */ + public function error($msg, $str = '', $pos = 0, $code = 0) + { + $error = new LexerException( + Translator::gettext($msg), + $str, + $pos, + $code + ); + parent::error($error); + } + + /** + * Parses a keyword. + * + * @return Token|null + */ + public function parseKeyword() + { + $token = ''; + + /** + * Value to be returned. + * + * @var Token + */ + $ret = null; + + /** + * The value of `$this->last` where `$token` ends in `$this->str`. + * + * @var int + */ + $iEnd = $this->last; + + /** + * Whether last parsed character is a whitespace. + * + * @var bool + */ + $lastSpace = false; + + for ($j = 1; $j < Context::KEYWORD_MAX_LENGTH && $this->last < $this->len; ++$j, ++$this->last) { + // Composed keywords shouldn't have more than one whitespace between + // keywords. + if (Context::isWhitespace($this->str[$this->last])) { + if ($lastSpace) { + --$j; // The size of the keyword didn't increase. + continue; + } + + $lastSpace = true; + } else { + $lastSpace = false; + } + + $token .= $this->str[$this->last]; + $flags = Context::isKeyword($token); + + if (($this->last + 1 !== $this->len && ! Context::isSeparator($this->str[$this->last + 1])) || ! $flags) { + continue; + } + + $ret = new Token($token, Token::TYPE_KEYWORD, $flags); + $iEnd = $this->last; + + // We don't break so we find longest keyword. + // For example, `OR` and `ORDER` have a common prefix `OR`. + // If we stopped at `OR`, the parsing would be invalid. + } + + $this->last = $iEnd; + + return $ret; + } + + /** + * Parses a label. + * + * @return Token|null + */ + public function parseLabel() + { + $token = ''; + + /** + * Value to be returned. + * + * @var Token + */ + $ret = null; + + /** + * The value of `$this->last` where `$token` ends in `$this->str`. + * + * @var int + */ + $iEnd = $this->last; + for ($j = 1; $j < Context::LABEL_MAX_LENGTH && $this->last < $this->len; ++$j, ++$this->last) { + if ($this->str[$this->last] === ':' && $j > 1) { + // End of label + $token .= $this->str[$this->last]; + $ret = new Token($token, Token::TYPE_LABEL); + $iEnd = $this->last; + break; + } + + if (Context::isWhitespace($this->str[$this->last]) && $j > 1) { + // Whitespace between label and : + // The size of the keyword didn't increase. + --$j; + } elseif (Context::isSeparator($this->str[$this->last])) { + // Any other separator + break; + } + + $token .= $this->str[$this->last]; + } + + $this->last = $iEnd; + + return $ret; + } + + /** + * Parses an operator. + * + * @return Token|null + */ + public function parseOperator() + { + $token = ''; + + /** + * Value to be returned. + * + * @var Token + */ + $ret = null; + + /** + * The value of `$this->last` where `$token` ends in `$this->str`. + * + * @var int + */ + $iEnd = $this->last; + + for ($j = 1; $j < Context::OPERATOR_MAX_LENGTH && $this->last < $this->len; ++$j, ++$this->last) { + $token .= $this->str[$this->last]; + $flags = Context::isOperator($token); + + if (! $flags) { + continue; + } + + $ret = new Token($token, Token::TYPE_OPERATOR, $flags); + $iEnd = $this->last; + } + + $this->last = $iEnd; + + return $ret; + } + + /** + * Parses a whitespace. + * + * @return Token|null + */ + public function parseWhitespace() + { + $token = $this->str[$this->last]; + + if (! Context::isWhitespace($token)) { + return null; + } + + while (++$this->last < $this->len && Context::isWhitespace($this->str[$this->last])) { + $token .= $this->str[$this->last]; + } + + --$this->last; + + return new Token($token, Token::TYPE_WHITESPACE); + } + + /** + * Parses a comment. + * + * @return Token|null + */ + public function parseComment() + { + $iBak = $this->last; + $token = $this->str[$this->last]; + + // Bash style comments. (#comment\n) + if (Context::isComment($token)) { + while (++$this->last < $this->len && $this->str[$this->last] !== "\n") { + $token .= $this->str[$this->last]; + } + + // Include trailing \n as whitespace token + if ($this->last < $this->len) { + --$this->last; + } + + return new Token($token, Token::TYPE_COMMENT, Token::FLAG_COMMENT_BASH); + } + + // C style comments. (/*comment*\/) + if (++$this->last < $this->len) { + $token .= $this->str[$this->last]; + if (Context::isComment($token)) { + // There might be a conflict with "*" operator here, when string is "*/*". + // This can occurs in the following statements: + // - "SELECT */* comment */ FROM ..." + // - "SELECT 2*/* comment */3 AS `six`;" + $next = $this->last + 1; + if (($next < $this->len) && $this->str[$next] === '*') { + // Conflict in "*/*": first "*" was not for ending a comment. + // Stop here and let other parsing method define the true behavior of that first star. + $this->last = $iBak; + + return null; + } + + $flags = Token::FLAG_COMMENT_C; + + // This comment already ended. It may be a part of a + // previous MySQL specific command. + if ($token === '*/') { + return new Token($token, Token::TYPE_COMMENT, $flags); + } + + // Checking if this is a MySQL-specific command. + if ($this->last + 1 < $this->len && $this->str[$this->last + 1] === '!') { + $flags |= Token::FLAG_COMMENT_MYSQL_CMD; + $token .= $this->str[++$this->last]; + + while ( + ++$this->last < $this->len + && $this->str[$this->last] >= '0' + && $this->str[$this->last] <= '9' + ) { + $token .= $this->str[$this->last]; + } + + --$this->last; + + // We split this comment and parse only its beginning + // here. + return new Token($token, Token::TYPE_COMMENT, $flags); + } + + // Parsing the comment. + while ( + ++$this->last < $this->len + && ( + $this->str[$this->last - 1] !== '*' + || $this->str[$this->last] !== '/' + ) + ) { + $token .= $this->str[$this->last]; + } + + // Adding the ending. + if ($this->last < $this->len) { + $token .= $this->str[$this->last]; + } + + return new Token($token, Token::TYPE_COMMENT, $flags); + } + } + + // SQL style comments. (-- comment\n) + if (++$this->last < $this->len) { + $token .= $this->str[$this->last]; + $end = false; + } else { + --$this->last; + $end = true; + } + + if (Context::isComment($token, $end)) { + // Checking if this comment did not end already (```--\n```). + if ($this->str[$this->last] !== "\n") { + while (++$this->last < $this->len && $this->str[$this->last] !== "\n") { + $token .= $this->str[$this->last]; + } + } + + // Include trailing \n as whitespace token + if ($this->last < $this->len) { + --$this->last; + } + + return new Token($token, Token::TYPE_COMMENT, Token::FLAG_COMMENT_SQL); + } + + $this->last = $iBak; + + return null; + } + + /** + * Parses a boolean. + * + * @return Token|null + */ + public function parseBool() + { + if ($this->last + 3 >= $this->len) { + // At least `min(strlen('TRUE'), strlen('FALSE'))` characters are + // required. + return null; + } + + $iBak = $this->last; + $token = $this->str[$this->last] . $this->str[++$this->last] + . $this->str[++$this->last] . $this->str[++$this->last]; // _TRUE_ or _FALS_e + + if (Context::isBool($token)) { + return new Token($token, Token::TYPE_BOOL); + } + + if (++$this->last < $this->len) { + $token .= $this->str[$this->last]; // fals_E_ + if (Context::isBool($token)) { + return new Token($token, Token::TYPE_BOOL, 1); + } + } + + $this->last = $iBak; + + return null; + } + + /** + * Parses a number. + * + * @return Token|null + */ + public function parseNumber() + { + // A rudimentary state machine is being used to parse numbers due to + // the various forms of their notation. + // + // Below are the states of the machines and the conditions to change + // the state. + // + // 1 --------------------[ + or - ]-------------------> 1 + // 1 -------------------[ 0x or 0X ]------------------> 2 + // 1 --------------------[ 0 to 9 ]-------------------> 3 + // 1 -----------------------[ . ]---------------------> 4 + // 1 -----------------------[ b ]---------------------> 7 + // + // 2 --------------------[ 0 to F ]-------------------> 2 + // + // 3 --------------------[ 0 to 9 ]-------------------> 3 + // 3 -----------------------[ . ]---------------------> 4 + // 3 --------------------[ e or E ]-------------------> 5 + // + // 4 --------------------[ 0 to 9 ]-------------------> 4 + // 4 --------------------[ e or E ]-------------------> 5 + // + // 5 ---------------[ + or - or 0 to 9 ]--------------> 6 + // + // 7 -----------------------[ ' ]---------------------> 8 + // + // 8 --------------------[ 0 or 1 ]-------------------> 8 + // 8 -----------------------[ ' ]---------------------> 9 + // + // State 1 may be reached by negative numbers. + // State 2 is reached only by hex numbers. + // State 4 is reached only by float numbers. + // State 5 is reached only by numbers in approximate form. + // State 7 is reached only by numbers in bit representation. + // + // Valid final states are: 2, 3, 4 and 6. Any parsing that finished in a + // state other than these is invalid. + // Also, negative states are invalid states. + $iBak = $this->last; + $token = ''; + $flags = 0; + $state = 1; + for (; $this->last < $this->len; ++$this->last) { + if ($state === 1) { + if ($this->str[$this->last] === '-') { + $flags |= Token::FLAG_NUMBER_NEGATIVE; + } elseif ( + $this->last + 1 < $this->len + && $this->str[$this->last] === '0' + && ( + $this->str[$this->last + 1] === 'x' + || $this->str[$this->last + 1] === 'X' + ) + ) { + $token .= $this->str[$this->last++]; + $state = 2; + } elseif ($this->str[$this->last] >= '0' && $this->str[$this->last] <= '9') { + $state = 3; + } elseif ($this->str[$this->last] === '.') { + $state = 4; + } elseif ($this->str[$this->last] === 'b') { + $state = 7; + } elseif ($this->str[$this->last] !== '+') { + // `+` is a valid character in a number. + break; + } + } elseif ($state === 2) { + $flags |= Token::FLAG_NUMBER_HEX; + if ( + ! ( + ($this->str[$this->last] >= '0' && $this->str[$this->last] <= '9') + || ($this->str[$this->last] >= 'A' && $this->str[$this->last] <= 'F') + || ($this->str[$this->last] >= 'a' && $this->str[$this->last] <= 'f') + ) + ) { + break; + } + } elseif ($state === 3) { + if ($this->str[$this->last] === '.') { + $state = 4; + } elseif ($this->str[$this->last] === 'e' || $this->str[$this->last] === 'E') { + $state = 5; + } elseif ( + ($this->str[$this->last] >= 'a' && $this->str[$this->last] <= 'z') + || ($this->str[$this->last] >= 'A' && $this->str[$this->last] <= 'Z') + ) { + // A number can't be directly followed by a letter + $state = -$state; + } elseif ($this->str[$this->last] < '0' || $this->str[$this->last] > '9') { + // Just digits and `.`, `e` and `E` are valid characters. + break; + } + } elseif ($state === 4) { + $flags |= Token::FLAG_NUMBER_FLOAT; + if ($this->str[$this->last] === 'e' || $this->str[$this->last] === 'E') { + $state = 5; + } elseif ( + ($this->str[$this->last] >= 'a' && $this->str[$this->last] <= 'z') + || ($this->str[$this->last] >= 'A' && $this->str[$this->last] <= 'Z') + ) { + // A number can't be directly followed by a letter + $state = -$state; + } elseif ($this->str[$this->last] < '0' || $this->str[$this->last] > '9') { + // Just digits, `e` and `E` are valid characters. + break; + } + } elseif ($state === 5) { + $flags |= Token::FLAG_NUMBER_APPROXIMATE; + if ( + $this->str[$this->last] === '+' || $this->str[$this->last] === '-' + || ($this->str[$this->last] >= '0' && $this->str[$this->last] <= '9') + ) { + $state = 6; + } elseif ( + ($this->str[$this->last] >= 'a' && $this->str[$this->last] <= 'z') + || ($this->str[$this->last] >= 'A' && $this->str[$this->last] <= 'Z') + ) { + // A number can't be directly followed by a letter + $state = -$state; + } else { + break; + } + } elseif ($state === 6) { + if ($this->str[$this->last] < '0' || $this->str[$this->last] > '9') { + // Just digits are valid characters. + break; + } + } elseif ($state === 7) { + $flags |= Token::FLAG_NUMBER_BINARY; + if ($this->str[$this->last] !== '\'') { + break; + } + + $state = 8; + } elseif ($state === 8) { + if ($this->str[$this->last] === '\'') { + $state = 9; + } elseif ($this->str[$this->last] !== '0' && $this->str[$this->last] !== '1') { + break; + } + } elseif ($state === 9) { + break; + } + + $token .= $this->str[$this->last]; + } + + if ($state === 2 || $state === 3 || ($token !== '.' && $state === 4) || $state === 6 || $state === 9) { + --$this->last; + + return new Token($token, Token::TYPE_NUMBER, $flags); + } + + $this->last = $iBak; + + return null; + } + + /** + * Parses a string. + * + * @param string $quote additional starting symbol + * + * @return Token|null + * + * @throws LexerException + */ + public function parseString($quote = '') + { + $token = $this->str[$this->last]; + $flags = Context::isString($token); + + if (! $flags && $token !== $quote) { + return null; + } + + $quote = $token; + + while (++$this->last < $this->len) { + if ( + $this->last + 1 < $this->len + && ( + ($this->str[$this->last] === $quote && $this->str[$this->last + 1] === $quote) + || ($this->str[$this->last] === '\\' && $quote !== '`') + ) + ) { + $token .= $this->str[$this->last] . $this->str[++$this->last]; + } else { + if ($this->str[$this->last] === $quote) { + break; + } + + $token .= $this->str[$this->last]; + } + } + + if ($this->last >= $this->len || $this->str[$this->last] !== $quote) { + $this->error( + sprintf( + Translator::gettext('Ending quote %1$s was expected.'), + $quote + ), + '', + $this->last + ); + } else { + $token .= $this->str[$this->last]; + } + + return new Token($token, Token::TYPE_STRING, $flags); + } + + /** + * Parses a symbol. + * + * @return Token|null + * + * @throws LexerException + */ + public function parseSymbol() + { + $token = $this->str[$this->last]; + $flags = Context::isSymbol($token); + + if (! $flags) { + return null; + } + + if ($flags & Token::FLAG_SYMBOL_VARIABLE) { + if ($this->last + 1 < $this->len && $this->str[++$this->last] === '@') { + // This is a system variable (e.g. `@@hostname`). + $token .= $this->str[$this->last++]; + $flags |= Token::FLAG_SYMBOL_SYSTEM; + } + } elseif ($flags & Token::FLAG_SYMBOL_PARAMETER) { + if ($token !== '?' && $this->last + 1 < $this->len) { + ++$this->last; + } + } else { + $token = ''; + } + + $str = null; + + if ($this->last < $this->len) { + $str = $this->parseString('`'); + + if ($str === null) { + $str = $this->parseUnknown(); + + if ($str === null) { + $this->error('Variable name was expected.', $this->str[$this->last], $this->last); + } + } + } + + if ($str !== null) { + $token .= $str->token; + } + + return new Token($token, Token::TYPE_SYMBOL, $flags); + } + + /** + * Parses unknown parts of the query. + * + * @return Token|null + */ + public function parseUnknown() + { + $token = $this->str[$this->last]; + if (Context::isSeparator($token)) { + return null; + } + + while (++$this->last < $this->len && ! Context::isSeparator($this->str[$this->last])) { + $token .= $this->str[$this->last]; + + // Test if end of token equals the current delimiter. If so, remove it from the token. + if (substr($token, -$this->delimiterLen) === $this->delimiter) { + $token = substr($token, 0, -$this->delimiterLen); + $this->last -= $this->delimiterLen - 1; + break; + } + } + + --$this->last; + + return new Token($token); + } + + /** + * Parses the delimiter of the query. + * + * @return Token|null + */ + public function parseDelimiter() + { + $idx = 0; + + while ($idx < $this->delimiterLen && $this->last + $idx < $this->len) { + if ($this->delimiter[$idx] !== $this->str[$this->last + $idx]) { + return null; + } + + ++$idx; + } + + $this->last += $this->delimiterLen - 1; + + return new Token($this->delimiter, Token::TYPE_DELIMITER); + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Parser.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Parser.php new file mode 100644 index 0000000000..7fe27d7489 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Parser.php @@ -0,0 +1,610 @@ + 'PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement', + 'DESC' => 'PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement', + 'EXPLAIN' => 'PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement', + 'FLUSH' => '', + 'GRANT' => '', + 'HELP' => '', + 'SET PASSWORD' => '', + 'STATUS' => '', + 'USE' => '', + + // Table Maintenance Statements + // https://dev.mysql.com/doc/refman/5.7/en/table-maintenance-sql.html + 'ANALYZE' => 'PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement', + 'BACKUP' => 'PhpMyAdmin\\SqlParser\\Statements\\BackupStatement', + 'CHECK' => 'PhpMyAdmin\\SqlParser\\Statements\\CheckStatement', + 'CHECKSUM' => 'PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement', + 'OPTIMIZE' => 'PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement', + 'REPAIR' => 'PhpMyAdmin\\SqlParser\\Statements\\RepairStatement', + 'RESTORE' => 'PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement', + + // Database Administration Statements + // https://dev.mysql.com/doc/refman/5.7/en/sql-syntax-server-administration.html + 'SET' => 'PhpMyAdmin\\SqlParser\\Statements\\SetStatement', + 'SHOW' => 'PhpMyAdmin\\SqlParser\\Statements\\ShowStatement', + + // Data Definition Statements. + // https://dev.mysql.com/doc/refman/5.7/en/sql-syntax-data-definition.html + 'ALTER' => 'PhpMyAdmin\\SqlParser\\Statements\\AlterStatement', + 'CREATE' => 'PhpMyAdmin\\SqlParser\\Statements\\CreateStatement', + 'DROP' => 'PhpMyAdmin\\SqlParser\\Statements\\DropStatement', + 'RENAME' => 'PhpMyAdmin\\SqlParser\\Statements\\RenameStatement', + 'TRUNCATE' => 'PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement', + + // Data Manipulation Statements. + // https://dev.mysql.com/doc/refman/5.7/en/sql-syntax-data-manipulation.html + 'CALL' => 'PhpMyAdmin\\SqlParser\\Statements\\CallStatement', + 'DELETE' => 'PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement', + 'DO' => '', + 'HANDLER' => '', + 'INSERT' => 'PhpMyAdmin\\SqlParser\\Statements\\InsertStatement', + 'LOAD DATA' => 'PhpMyAdmin\\SqlParser\\Statements\\LoadStatement', + 'REPLACE' => 'PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement', + 'SELECT' => 'PhpMyAdmin\\SqlParser\\Statements\\SelectStatement', + 'UPDATE' => 'PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement', + 'WITH' => 'PhpMyAdmin\\SqlParser\\Statements\\WithStatement', + + // Prepared Statements. + // https://dev.mysql.com/doc/refman/5.7/en/sql-syntax-prepared-statements.html + 'DEALLOCATE' => '', + 'EXECUTE' => '', + 'PREPARE' => '', + + // Transactional and Locking Statements + // https://dev.mysql.com/doc/refman/5.7/en/commit.html + 'BEGIN' => 'PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement', + 'COMMIT' => 'PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement', + 'ROLLBACK' => 'PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement', + 'START TRANSACTION' => 'PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement', + + 'PURGE' => 'PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement', + + // Lock statements + // https://dev.mysql.com/doc/refman/5.7/en/lock-tables.html + 'LOCK' => 'PhpMyAdmin\\SqlParser\\Statements\\LockStatement', + 'UNLOCK' => 'PhpMyAdmin\\SqlParser\\Statements\\LockStatement', + ]; + + /** + * Array of classes that are used in parsing SQL components. + * + * @var array + */ + public static $KEYWORD_PARSERS = [ + // This is not a proper keyword and was added here to help the + // formatter. + 'PARTITION BY' => [], + 'SUBPARTITION BY' => [], + + // This is not a proper keyword and was added here to help the + // builder. + '_OPTIONS' => [ + 'class' => 'PhpMyAdmin\\SqlParser\\Components\\OptionsArray', + 'field' => 'options', + ], + '_END_OPTIONS' => [ + 'class' => 'PhpMyAdmin\\SqlParser\\Components\\OptionsArray', + 'field' => 'end_options', + ], + + 'INTERSECT' => [ + 'class' => 'PhpMyAdmin\\SqlParser\\Components\\UnionKeyword', + 'field' => 'union', + ], + 'EXCEPT' => [ + 'class' => 'PhpMyAdmin\\SqlParser\\Components\\UnionKeyword', + 'field' => 'union', + ], + 'UNION' => [ + 'class' => 'PhpMyAdmin\\SqlParser\\Components\\UnionKeyword', + 'field' => 'union', + ], + 'UNION ALL' => [ + 'class' => 'PhpMyAdmin\\SqlParser\\Components\\UnionKeyword', + 'field' => 'union', + ], + 'UNION DISTINCT' => [ + 'class' => 'PhpMyAdmin\\SqlParser\\Components\\UnionKeyword', + 'field' => 'union', + ], + + // Actual clause parsers. + 'ALTER' => [ + 'class' => 'PhpMyAdmin\\SqlParser\\Components\\Expression', + 'field' => 'table', + 'options' => ['parseField' => 'table'], + ], + 'ANALYZE' => [ + 'class' => 'PhpMyAdmin\\SqlParser\\Components\\ExpressionArray', + 'field' => 'tables', + 'options' => ['parseField' => 'table'], + ], + 'BACKUP' => [ + 'class' => 'PhpMyAdmin\\SqlParser\\Components\\ExpressionArray', + 'field' => 'tables', + 'options' => ['parseField' => 'table'], + ], + 'CALL' => [ + 'class' => 'PhpMyAdmin\\SqlParser\\Components\\FunctionCall', + 'field' => 'call', + ], + 'CHECK' => [ + 'class' => 'PhpMyAdmin\\SqlParser\\Components\\ExpressionArray', + 'field' => 'tables', + 'options' => ['parseField' => 'table'], + ], + 'CHECKSUM' => [ + 'class' => 'PhpMyAdmin\\SqlParser\\Components\\ExpressionArray', + 'field' => 'tables', + 'options' => ['parseField' => 'table'], + ], + 'CROSS JOIN' => [ + 'class' => 'PhpMyAdmin\\SqlParser\\Components\\JoinKeyword', + 'field' => 'join', + ], + 'DROP' => [ + 'class' => 'PhpMyAdmin\\SqlParser\\Components\\ExpressionArray', + 'field' => 'fields', + 'options' => ['parseField' => 'table'], + ], + 'FORCE' => [ + 'class' => 'PhpMyAdmin\\SqlParser\\Components\\IndexHint', + 'field' => 'index_hints', + ], + 'FROM' => [ + 'class' => 'PhpMyAdmin\\SqlParser\\Components\\ExpressionArray', + 'field' => 'from', + 'options' => ['field' => 'table'], + ], + 'GROUP BY' => [ + 'class' => 'PhpMyAdmin\\SqlParser\\Components\\GroupKeyword', + 'field' => 'group', + ], + 'HAVING' => [ + 'class' => 'PhpMyAdmin\\SqlParser\\Components\\Condition', + 'field' => 'having', + ], + 'IGNORE' => [ + 'class' => 'PhpMyAdmin\\SqlParser\\Components\\IndexHint', + 'field' => 'index_hints', + ], + 'INTO' => [ + 'class' => 'PhpMyAdmin\\SqlParser\\Components\\IntoKeyword', + 'field' => 'into', + ], + 'JOIN' => [ + 'class' => 'PhpMyAdmin\\SqlParser\\Components\\JoinKeyword', + 'field' => 'join', + ], + 'LEFT JOIN' => [ + 'class' => 'PhpMyAdmin\\SqlParser\\Components\\JoinKeyword', + 'field' => 'join', + ], + 'LEFT OUTER JOIN' => [ + 'class' => 'PhpMyAdmin\\SqlParser\\Components\\JoinKeyword', + 'field' => 'join', + ], + 'ON' => [ + 'class' => 'PhpMyAdmin\\SqlParser\\Components\\Expression', + 'field' => 'table', + 'options' => ['parseField' => 'table'], + ], + 'RIGHT JOIN' => [ + 'class' => 'PhpMyAdmin\\SqlParser\\Components\\JoinKeyword', + 'field' => 'join', + ], + 'RIGHT OUTER JOIN' => [ + 'class' => 'PhpMyAdmin\\SqlParser\\Components\\JoinKeyword', + 'field' => 'join', + ], + 'INNER JOIN' => [ + 'class' => 'PhpMyAdmin\\SqlParser\\Components\\JoinKeyword', + 'field' => 'join', + ], + 'FULL JOIN' => [ + 'class' => 'PhpMyAdmin\\SqlParser\\Components\\JoinKeyword', + 'field' => 'join', + ], + 'FULL OUTER JOIN' => [ + 'class' => 'PhpMyAdmin\\SqlParser\\Components\\JoinKeyword', + 'field' => 'join', + ], + 'NATURAL JOIN' => [ + 'class' => 'PhpMyAdmin\\SqlParser\\Components\\JoinKeyword', + 'field' => 'join', + ], + 'NATURAL LEFT JOIN' => [ + 'class' => 'PhpMyAdmin\\SqlParser\\Components\\JoinKeyword', + 'field' => 'join', + ], + 'NATURAL RIGHT JOIN' => [ + 'class' => 'PhpMyAdmin\\SqlParser\\Components\\JoinKeyword', + 'field' => 'join', + ], + 'NATURAL LEFT OUTER JOIN' => [ + 'class' => 'PhpMyAdmin\\SqlParser\\Components\\JoinKeyword', + 'field' => 'join', + ], + 'NATURAL RIGHT OUTER JOIN' => [ + 'class' => 'PhpMyAdmin\\SqlParser\\Components\\JoinKeyword', + 'field' => 'join', + ], + 'STRAIGHT_JOIN' => [ + 'class' => 'PhpMyAdmin\\SqlParser\\Components\\JoinKeyword', + 'field' => 'join', + ], + 'LIMIT' => [ + 'class' => 'PhpMyAdmin\\SqlParser\\Components\\Limit', + 'field' => 'limit', + ], + 'OPTIMIZE' => [ + 'class' => 'PhpMyAdmin\\SqlParser\\Components\\ExpressionArray', + 'field' => 'tables', + 'options' => ['parseField' => 'table'], + ], + 'ORDER BY' => [ + 'class' => 'PhpMyAdmin\\SqlParser\\Components\\OrderKeyword', + 'field' => 'order', + ], + 'PARTITION' => [ + 'class' => 'PhpMyAdmin\\SqlParser\\Components\\ArrayObj', + 'field' => 'partition', + ], + 'PROCEDURE' => [ + 'class' => 'PhpMyAdmin\\SqlParser\\Components\\FunctionCall', + 'field' => 'procedure', + ], + 'RENAME' => [ + 'class' => 'PhpMyAdmin\\SqlParser\\Components\\RenameOperation', + 'field' => 'renames', + ], + 'REPAIR' => [ + 'class' => 'PhpMyAdmin\\SqlParser\\Components\\ExpressionArray', + 'field' => 'tables', + 'options' => ['parseField' => 'table'], + ], + 'RESTORE' => [ + 'class' => 'PhpMyAdmin\\SqlParser\\Components\\ExpressionArray', + 'field' => 'tables', + 'options' => ['parseField' => 'table'], + ], + 'SET' => [ + 'class' => 'PhpMyAdmin\\SqlParser\\Components\\SetOperation', + 'field' => 'set', + ], + 'SELECT' => [ + 'class' => 'PhpMyAdmin\\SqlParser\\Components\\ExpressionArray', + 'field' => 'expr', + ], + 'TRUNCATE' => [ + 'class' => 'PhpMyAdmin\\SqlParser\\Components\\Expression', + 'field' => 'table', + 'options' => ['parseField' => 'table'], + ], + 'UPDATE' => [ + 'class' => 'PhpMyAdmin\\SqlParser\\Components\\ExpressionArray', + 'field' => 'tables', + 'options' => ['parseField' => 'table'], + ], + 'USE' => [ + 'class' => 'PhpMyAdmin\\SqlParser\\Components\\IndexHint', + 'field' => 'index_hints', + ], + 'VALUE' => [ + 'class' => 'PhpMyAdmin\\SqlParser\\Components\\Array2d', + 'field' => 'values', + ], + 'VALUES' => [ + 'class' => 'PhpMyAdmin\\SqlParser\\Components\\Array2d', + 'field' => 'values', + ], + 'WHERE' => [ + 'class' => 'PhpMyAdmin\\SqlParser\\Components\\Condition', + 'field' => 'where', + ], + ]; + + /** + * The list of tokens that are parsed. + * + * @var TokensList + */ + public $list; + + /** + * List of statements parsed. + * + * @var Statement[] + */ + public $statements = []; + + /** + * The number of opened brackets. + * + * @var int + */ + public $brackets = 0; + + /** + * @param string|UtfString|TokensList $list the list of tokens to be parsed + * @param bool $strict whether strict mode should be enabled or not + */ + public function __construct($list = null, $strict = false) + { + if (is_string($list) || ($list instanceof UtfString)) { + $lexer = new Lexer($list, $strict); + $this->list = $lexer->list; + } elseif ($list instanceof TokensList) { + $this->list = $list; + } + + $this->strict = $strict; + + if ($list === null) { + return; + } + + $this->parse(); + } + + /** + * Builds the parse trees. + * + * @throws ParserException + */ + public function parse() + { + /** + * Last transaction. + * + * @var TransactionStatement + */ + $lastTransaction = null; + + /** + * Last parsed statement. + * + * @var Statement + */ + $lastStatement = null; + + /** + * Union's type or false for no union. + * + * @var bool|string + */ + $unionType = false; + + /** + * The index of the last token from the last statement. + * + * @var int + */ + $prevLastIdx = -1; + + /** + * The list of tokens. + * + * @var TokensList + */ + $list = &$this->list; + + for (; $list->idx < $list->count; ++$list->idx) { + /** + * Token parsed at this moment. + * + * @var Token + */ + $token = $list->tokens[$list->idx]; + + // `DELIMITER` is not an actual statement and it requires + // special handling. + if (($token->type === Token::TYPE_NONE) && (strtoupper($token->token) === 'DELIMITER')) { + // Skipping to the end of this statement. + $list->getNextOfType(Token::TYPE_DELIMITER); + $prevLastIdx = $list->idx; + continue; + } + + // Counting the brackets around statements. + if ($token->value === '(') { + ++$this->brackets; + continue; + } + + // Statements can start with keywords only. + // Comments, whitespaces, etc. are ignored. + if ($token->type !== Token::TYPE_KEYWORD) { + if ( + ($token->type !== Token::TYPE_COMMENT) + && ($token->type !== Token::TYPE_WHITESPACE) + && ($token->type !== Token::TYPE_OPERATOR) // `(` and `)` + && ($token->type !== Token::TYPE_DELIMITER) + ) { + $this->error('Unexpected beginning of statement.', $token); + } + + continue; + } + + if ( + ($token->keyword === 'UNION') || + ($token->keyword === 'UNION ALL') || + ($token->keyword === 'UNION DISTINCT') || + ($token->keyword === 'EXCEPT') || + ($token->keyword === 'INTERSECT') + ) { + $unionType = $token->keyword; + continue; + } + + // Checking if it is a known statement that can be parsed. + if (empty(static::$STATEMENT_PARSERS[$token->keyword])) { + if (! isset(static::$STATEMENT_PARSERS[$token->keyword])) { + // A statement is considered recognized if the parser + // is aware that it is a statement, but it does not have + // a parser for it yet. + $this->error('Unrecognized statement type.', $token); + } + + // Skipping to the end of this statement. + $list->getNextOfType(Token::TYPE_DELIMITER); + $prevLastIdx = $list->idx; + continue; + } + + /** + * The name of the class that is used for parsing. + * + * @var string + */ + $class = static::$STATEMENT_PARSERS[$token->keyword]; + + /** + * Processed statement. + * + * @var Statement + */ + $statement = new $class($this, $this->list); + + // The first token that is a part of this token is the next token + // unprocessed by the previous statement. + // There might be brackets around statements and this shouldn't + // affect the parser + $statement->first = $prevLastIdx + 1; + + // Storing the index of the last token parsed and updating the old + // index. + $statement->last = $list->idx; + $prevLastIdx = $list->idx; + + // Handles unions. + if ( + ! empty($unionType) + && ($lastStatement instanceof SelectStatement) + && ($statement instanceof SelectStatement) + ) { + /* + * This SELECT statement. + * + * @var SelectStatement $statement + */ + + /* + * Last SELECT statement. + * + * @var SelectStatement $lastStatement + */ + $lastStatement->union[] = [ + $unionType, + $statement, + ]; + + // if there are no no delimiting brackets, the `ORDER` and + // `LIMIT` keywords actually belong to the first statement. + $lastStatement->order = $statement->order; + $lastStatement->limit = $statement->limit; + $statement->order = []; + $statement->limit = null; + + // The statement actually ends where the last statement in + // union ends. + $lastStatement->last = $statement->last; + + $unionType = false; + + // Validate clause order + $statement->validateClauseOrder($this, $list); + continue; + } + + // Handles transactions. + if ($statement instanceof TransactionStatement) { + /* + * @var TransactionStatement + */ + if ($statement->type === TransactionStatement::TYPE_BEGIN) { + $lastTransaction = $statement; + $this->statements[] = $statement; + } elseif ($statement->type === TransactionStatement::TYPE_END) { + if ($lastTransaction === null) { + // Even though an error occurred, the query is being + // saved. + $this->statements[] = $statement; + $this->error('No transaction was previously started.', $token); + } else { + $lastTransaction->end = $statement; + } + + $lastTransaction = null; + } + + // Validate clause order + $statement->validateClauseOrder($this, $list); + continue; + } + + // Validate clause order + $statement->validateClauseOrder($this, $list); + + // Finally, storing the statement. + if ($lastTransaction !== null) { + $lastTransaction->statements[] = $statement; + } else { + $this->statements[] = $statement; + } + + $lastStatement = $statement; + } + } + + /** + * Creates a new error log. + * + * @param string $msg the error message + * @param Token $token the token that produced the error + * @param int $code the code of the error + * + * @throws ParserException throws the exception, if strict mode is enabled. + */ + public function error($msg, ?Token $token = null, $code = 0) + { + $error = new ParserException( + Translator::gettext($msg), + $token, + $code + ); + parent::error($error); + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statement.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statement.php new file mode 100644 index 0000000000..10c609a1c1 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statement.php @@ -0,0 +1,558 @@ +parse($parser, $list); + } + + /** + * Builds the string representation of this statement. + * + * @return string + */ + public function build() + { + /** + * Query to be returned. + * + * @var string + */ + $query = ''; + + /** + * Clauses which were built already. + * + * It is required to keep track of built clauses because some fields, + * for example `join` is used by multiple clauses (`JOIN`, `LEFT JOIN`, + * `LEFT OUTER JOIN`, etc.). The same happens for `VALUE` and `VALUES`. + * + * A clause is considered built just after fields' value + * (`$this->field`) was used in building. + * + * @var array + */ + $built = []; + + /** + * Statement's clauses. + * + * @var array + */ + $clauses = $this->getClauses(); + + foreach ($clauses as $clause) { + /** + * The name of the clause. + * + * @var string + */ + $name = $clause[0]; + + /** + * The type of the clause. + * + * @see self::$CLAUSES + * + * @var int + */ + $type = $clause[1]; + + /** + * The builder (parser) of this clause. + * + * @var Component + */ + $class = Parser::$KEYWORD_PARSERS[$name]['class']; + + /** + * The name of the field that is used as source for the builder. + * Same field is used to store the result of parsing. + * + * @var string + */ + $field = Parser::$KEYWORD_PARSERS[$name]['field']; + + // The field is empty, there is nothing to be built. + if (empty($this->$field)) { + continue; + } + + // Checking if this field was already built. + if ($type & 1) { + if (! empty($built[$field])) { + continue; + } + + $built[$field] = true; + } + + // Checking if the name of the clause should be added. + if ($type & 2) { + $query = trim($query) . ' ' . $name; + } + + // Checking if the result of the builder should be added. + if (! ($type & 1)) { + continue; + } + + $query = trim($query) . ' ' . $class::build($this->$field); + } + + return $query; + } + + /** + * Parses the statements defined by the tokens list. + * + * @param Parser $parser the instance that requests parsing + * @param TokensList $list the list of tokens to be parsed + * + * @throws Exceptions\ParserException + */ + public function parse(Parser $parser, TokensList $list) + { + /** + * Array containing all list of clauses parsed. + * This is used to check for duplicates. + * + * @var array + */ + $parsedClauses = []; + + // This may be corrected by the parser. + $this->first = $list->idx; + + /** + * Whether options were parsed or not. + * For statements that do not have any options this is set to `true` by + * default. + * + * @var bool + */ + $parsedOptions = empty(static::$OPTIONS); + + for (; $list->idx < $list->count; ++$list->idx) { + /** + * Token parsed at this moment. + * + * @var Token + */ + $token = $list->tokens[$list->idx]; + + // End of statement. + if ($token->type === Token::TYPE_DELIMITER) { + break; + } + + // Checking if this closing bracket is the pair for a bracket + // outside the statement. + if (($token->value === ')') && ($parser->brackets > 0)) { + --$parser->brackets; + continue; + } + + // Only keywords are relevant here. Other parts of the query are + // processed in the functions below. + if ($token->type !== Token::TYPE_KEYWORD) { + if (($token->type !== Token::TYPE_COMMENT) && ($token->type !== Token::TYPE_WHITESPACE)) { + $parser->error('Unexpected token.', $token); + } + + continue; + } + + // Unions are parsed by the parser because they represent more than + // one statement. + if ( + ($token->keyword === 'UNION') || + ($token->keyword === 'UNION ALL') || + ($token->keyword === 'UNION DISTINCT') || + ($token->keyword === 'EXCEPT') || + ($token->keyword === 'INTERSECT') + ) { + break; + } + + $lastIdx = $list->idx; + + // ON DUPLICATE KEY UPDATE ... + // has to be parsed in parent statement (INSERT or REPLACE) + // so look for it and break + if ($this instanceof Statements\SelectStatement && $token->value === 'ON') { + ++$list->idx; // Skip ON + + // look for ON DUPLICATE KEY UPDATE + $first = $list->getNextOfType(Token::TYPE_KEYWORD); + $second = $list->getNextOfType(Token::TYPE_KEYWORD); + $third = $list->getNextOfType(Token::TYPE_KEYWORD); + + if ( + $first && $second && $third + && $first->value === 'DUPLICATE' + && $second->value === 'KEY' + && $third->value === 'UPDATE' + ) { + $list->idx = $lastIdx; + break; + } + } + + $list->idx = $lastIdx; + + /** + * The name of the class that is used for parsing. + * + * @var Component + */ + $class = null; + + /** + * The name of the field where the result of the parsing is stored. + * + * @var string + */ + $field = null; + + /** + * Parser's options. + * + * @var array + */ + $options = []; + + // Looking for duplicated clauses. + if ( + ! empty(Parser::$KEYWORD_PARSERS[$token->value]) + || ! empty(Parser::$STATEMENT_PARSERS[$token->value]) + ) { + if (! empty($parsedClauses[$token->value])) { + $parser->error('This type of clause was previously parsed.', $token); + break; + } + + $parsedClauses[$token->value] = true; + } + + // Checking if this is the beginning of a clause. + // Fix Issue #221: As `truncate` is not a keyword + // but it might be the beginning of a statement of truncate, + // so let the value use the keyword field for truncate type. + $tokenValue = in_array($token->keyword, ['TRUNCATE']) ? $token->keyword : $token->value; + if (! empty(Parser::$KEYWORD_PARSERS[$tokenValue]) && $list->idx < $list->count) { + $class = Parser::$KEYWORD_PARSERS[$tokenValue]['class']; + $field = Parser::$KEYWORD_PARSERS[$tokenValue]['field']; + if (! empty(Parser::$KEYWORD_PARSERS[$tokenValue]['options'])) { + $options = Parser::$KEYWORD_PARSERS[$tokenValue]['options']; + } + } + + // Checking if this is the beginning of the statement. + if (! empty(Parser::$STATEMENT_PARSERS[$token->keyword])) { + if ( + ! empty(static::$CLAUSES) // Undefined for some statements. + && empty(static::$CLAUSES[$token->value]) + ) { + // Some keywords (e.g. `SET`) may be the beginning of a + // statement and a clause. + // If such keyword was found and it cannot be a clause of + // this statement it means it is a new statement, but no + // delimiter was found between them. + $parser->error( + 'A new statement was found, but no delimiter between it and the previous one.', + $token + ); + break; + } + + if (! $parsedOptions) { + if (empty(static::$OPTIONS[$token->value])) { + // Skipping keyword because if it is not a option. + ++$list->idx; + } + + $this->options = OptionsArray::parse($parser, $list, static::$OPTIONS); + $parsedOptions = true; + } + } elseif ($class === null) { + if ( + $this instanceof Statements\SelectStatement + && ($token->value === 'FOR UPDATE' + || $token->value === 'LOCK IN SHARE MODE') + ) { + // Handle special end options in Select statement + // See Statements\SelectStatement::$END_OPTIONS + $this->end_options = OptionsArray::parse($parser, $list, static::$END_OPTIONS); + } elseif ( + $this instanceof Statements\SetStatement + && ($token->value === 'COLLATE' + || $token->value === 'DEFAULT') + ) { + // Handle special end options in SET statement + // See Statements\SetStatement::$END_OPTIONS + $this->end_options = OptionsArray::parse($parser, $list, static::$END_OPTIONS); + } else { + // There is no parser for this keyword and isn't the beginning + // of a statement (so no options) either. + $parser->error('Unrecognized keyword.', $token); + continue; + } + } + + $this->before($parser, $list, $token); + + // Parsing this keyword. + if ($class !== null) { + // We can't parse keyword at the end of statement + if ($list->idx >= $list->count) { + $parser->error('Keyword at end of statement.', $token); + continue; + } + + ++$list->idx; // Skipping keyword or last option. + $this->$field = $class::parse($parser, $list, $options); + } + + $this->after($parser, $list, $token); + + // #223 Here may make a patch, if last is delimiter, back one + if ($class !== FunctionCall::class || $list->offsetGet($list->idx)->type !== Token::TYPE_DELIMITER) { + continue; + } + + --$list->idx; + } + + // This may be corrected by the parser. + $this->last = --$list->idx; // Go back to last used token. + } + + /** + * Function called before the token is processed. + * + * @param Parser $parser the instance that requests parsing + * @param TokensList $list the list of tokens to be parsed + * @param Token $token the token that is being parsed + */ + public function before(Parser $parser, TokensList $list, Token $token) + { + } + + /** + * Function called after the token was processed. + * + * @param Parser $parser the instance that requests parsing + * @param TokensList $list the list of tokens to be parsed + * @param Token $token the token that is being parsed + */ + public function after(Parser $parser, TokensList $list, Token $token) + { + } + + /** + * Gets the clauses of this statement. + * + * @return array + */ + public function getClauses() + { + return static::$CLAUSES; + } + + /** + * Builds the string representation of this statement. + * + * @see static::build + * + * @return string + */ + public function __toString() + { + return $this->build(); + } + + /** + * Validates the order of the clauses in parsed statement + * Ideally this should be called after successfully + * completing the parsing of each statement. + * + * @param Parser $parser the instance that requests parsing + * @param TokensList $list the list of tokens to be parsed + * + * @return bool + * + * @throws Exceptions\ParserException + */ + public function validateClauseOrder($parser, $list) + { + $clauses = array_flip(array_keys($this->getClauses())); + + if (empty($clauses) || count($clauses) === 0) { + return true; + } + + $minIdx = -1; + + /** + * For tracking JOIN clauses in a query + * = 0 - JOIN not found till now + * > 0 - Index of first JOIN clause in the statement. + * + * @var int + */ + $minJoin = 0; + + /** + * For tracking JOIN clauses in a query + * = 0 - JOIN not found till now + * > 0 - Index of last JOIN clause + * (which appears together with other JOINs) + * in the statement. + * + * @var int + */ + $maxJoin = 0; + + $error = 0; + $lastIdx = 0; + foreach ($clauses as $clauseType => $index) { + $clauseStartIdx = Utils\Query::getClauseStartOffset($this, $list, $clauseType); + + if ( + $clauseStartIdx !== -1 + && $this instanceof Statements\SelectStatement + && ($clauseType === 'FORCE' + || $clauseType === 'IGNORE' + || $clauseType === 'USE') + ) { + // TODO: ordering of clauses in a SELECT statement with + // Index hints is not supported + return true; + } + + // Handle ordering of Multiple Joins in a query + if ($clauseStartIdx !== -1) { + if ($minJoin === 0 && stripos($clauseType, 'JOIN')) { + // First JOIN clause is detected + $minJoin = $maxJoin = $clauseStartIdx; + } elseif ($minJoin !== 0 && ! stripos($clauseType, 'JOIN')) { + // After a previous JOIN clause, a non-JOIN clause has been detected + $maxJoin = $lastIdx; + } elseif ($maxJoin < $clauseStartIdx && stripos($clauseType, 'JOIN')) { + $error = 1; + } + } + + if ($clauseStartIdx !== -1 && $clauseStartIdx < $minIdx) { + if ($minJoin === 0 || $error === 1) { + $token = $list->tokens[$clauseStartIdx]; + $parser->error('Unexpected ordering of clauses.', $token); + + return false; + } + + $minIdx = $clauseStartIdx; + } elseif ($clauseStartIdx !== -1) { + $minIdx = $clauseStartIdx; + } + + $lastIdx = $clauseStartIdx !== -1 ? $clauseStartIdx : $lastIdx; + } + + return true; + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/AlterStatement.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/AlterStatement.php new file mode 100644 index 0000000000..f7b3b3f80e --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/AlterStatement.php @@ -0,0 +1,148 @@ + 1, + 'OFFLINE' => 1, + 'IGNORE' => 2, + + 'DATABASE' => 3, + 'EVENT' => 3, + 'FUNCTION' => 3, + 'PROCEDURE' => 3, + 'SERVER' => 3, + 'TABLE' => 3, + 'TABLESPACE' => 3, + 'USER' => 3, + 'VIEW' => 3, + ]; + + /** + * @param Parser $parser the instance that requests parsing + * @param TokensList $list the list of tokens to be parsed + */ + public function parse(Parser $parser, TokensList $list) + { + ++$list->idx; // Skipping `ALTER`. + $this->options = OptionsArray::parse($parser, $list, static::$OPTIONS); + ++$list->idx; + + // Parsing affected table. + $this->table = Expression::parse( + $parser, + $list, + [ + 'parseField' => 'table', + 'breakOnAlias' => true, + ] + ); + ++$list->idx; // Skipping field. + + /** + * The state of the parser. + * + * Below are the states of the parser. + * + * 0 -----------------[ alter operation ]-----------------> 1 + * + * 1 -------------------------[ , ]-----------------------> 0 + * + * @var int + */ + $state = 0; + + for (; $list->idx < $list->count; ++$list->idx) { + /** + * Token parsed at this moment. + * + * @var Token + */ + $token = $list->tokens[$list->idx]; + + // End of statement. + if ($token->type === Token::TYPE_DELIMITER) { + break; + } + + // Skipping whitespaces and comments. + if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { + continue; + } + + if ($state === 0) { + $options = []; + if ($this->options->has('DATABASE')) { + $options = AlterOperation::$DB_OPTIONS; + } elseif ($this->options->has('TABLE')) { + $options = AlterOperation::$TABLE_OPTIONS; + } elseif ($this->options->has('VIEW')) { + $options = AlterOperation::$VIEW_OPTIONS; + } elseif ($this->options->has('USER')) { + $options = AlterOperation::$USER_OPTIONS; + } + + $this->altered[] = AlterOperation::parse($parser, $list, $options); + $state = 1; + } elseif ($state === 1) { + if (($token->type === Token::TYPE_OPERATOR) && ($token->value === ',')) { + $state = 0; + } + } + } + } + + /** + * @return string + */ + public function build() + { + $tmp = []; + foreach ($this->altered as $altered) { + $tmp[] = $altered::build($altered); + } + + return 'ALTER ' . OptionsArray::build($this->options) + . ' ' . Expression::build($this->table) + . ' ' . implode(', ', $tmp); + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/AnalyzeStatement.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/AnalyzeStatement.php new file mode 100644 index 0000000000..2f60c60cc8 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/AnalyzeStatement.php @@ -0,0 +1,39 @@ + 1, + + 'NO_WRITE_TO_BINLOG' => 2, + 'LOCAL' => 3, + ]; + + /** + * Analyzed tables. + * + * @var Expression[] + */ + public $tables; +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/BackupStatement.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/BackupStatement.php new file mode 100644 index 0000000000..1e2a4e5540 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/BackupStatement.php @@ -0,0 +1,33 @@ + 1, + + 'NO_WRITE_TO_BINLOG' => 2, + 'LOCAL' => 3, + + 'TO' => [ + 4, + 'var', + ], + ]; +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/CallStatement.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/CallStatement.php new file mode 100644 index 0000000000..f7db88e0ba --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/CallStatement.php @@ -0,0 +1,43 @@ +call->name . '(' + . ($this->call->parameters ? implode(',', $this->call->parameters->raw) : '') . ')'; + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/CheckStatement.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/CheckStatement.php new file mode 100644 index 0000000000..4519dd6c86 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/CheckStatement.php @@ -0,0 +1,32 @@ + 1, + + 'FOR UPGRADE' => 2, + 'QUICK' => 3, + 'FAST' => 4, + 'MEDIUM' => 5, + 'EXTENDED' => 6, + 'CHANGED' => 7, + ]; +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/ChecksumStatement.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/ChecksumStatement.php new file mode 100644 index 0000000000..69f4ed1c0d --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/ChecksumStatement.php @@ -0,0 +1,28 @@ + 1, + + 'QUICK' => 2, + 'EXTENDED' => 3, + ]; +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/CreateStatement.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/CreateStatement.php new file mode 100644 index 0000000000..3a5bffef3e --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/CreateStatement.php @@ -0,0 +1,766 @@ + 1, + + // CREATE VIEW + 'OR REPLACE' => 2, + 'ALGORITHM' => [ + 3, + 'var=', + ], + // `DEFINER` is also used for `CREATE FUNCTION / PROCEDURE` + 'DEFINER' => [ + 4, + 'expr=', + ], + // Used in `CREATE VIEW` + 'SQL SECURITY' => [ + 5, + 'var', + ], + + 'DATABASE' => 6, + 'EVENT' => 6, + 'FUNCTION' => 6, + 'INDEX' => 6, + 'UNIQUE INDEX' => 6, + 'FULLTEXT INDEX' => 6, + 'SPATIAL INDEX' => 6, + 'PROCEDURE' => 6, + 'SERVER' => 6, + 'TABLE' => 6, + 'TABLESPACE' => 6, + 'TRIGGER' => 6, + 'USER' => 6, + 'VIEW' => 6, + 'SCHEMA' => 6, + + // CREATE TABLE + 'IF NOT EXISTS' => 7, + ]; + + /** + * All database options. + * + * @var array + */ + public static $DB_OPTIONS = [ + 'CHARACTER SET' => [ + 1, + 'var=', + ], + 'CHARSET' => [ + 1, + 'var=', + ], + 'DEFAULT CHARACTER SET' => [ + 1, + 'var=', + ], + 'DEFAULT CHARSET' => [ + 1, + 'var=', + ], + 'DEFAULT COLLATE' => [ + 2, + 'var=', + ], + 'COLLATE' => [ + 2, + 'var=', + ], + ]; + + /** + * All table options. + * + * @var array + */ + public static $TABLE_OPTIONS = [ + 'ENGINE' => [ + 1, + 'var=', + ], + 'AUTO_INCREMENT' => [ + 2, + 'var=', + ], + 'AVG_ROW_LENGTH' => [ + 3, + 'var', + ], + 'CHARACTER SET' => [ + 4, + 'var=', + ], + 'CHARSET' => [ + 4, + 'var=', + ], + 'DEFAULT CHARACTER SET' => [ + 4, + 'var=', + ], + 'DEFAULT CHARSET' => [ + 4, + 'var=', + ], + 'CHECKSUM' => [ + 5, + 'var', + ], + 'DEFAULT COLLATE' => [ + 6, + 'var=', + ], + 'COLLATE' => [ + 6, + 'var=', + ], + 'COMMENT' => [ + 7, + 'var=', + ], + 'CONNECTION' => [ + 8, + 'var', + ], + 'DATA DIRECTORY' => [ + 9, + 'var', + ], + 'DELAY_KEY_WRITE' => [ + 10, + 'var', + ], + 'INDEX DIRECTORY' => [ + 11, + 'var', + ], + 'INSERT_METHOD' => [ + 12, + 'var', + ], + 'KEY_BLOCK_SIZE' => [ + 13, + 'var', + ], + 'MAX_ROWS' => [ + 14, + 'var', + ], + 'MIN_ROWS' => [ + 15, + 'var', + ], + 'PACK_KEYS' => [ + 16, + 'var', + ], + 'PASSWORD' => [ + 17, + 'var', + ], + 'ROW_FORMAT' => [ + 18, + 'var', + ], + 'TABLESPACE' => [ + 19, + 'var', + ], + 'STORAGE' => [ + 20, + 'var', + ], + 'UNION' => [ + 21, + 'var', + ], + ]; + + /** + * All function options. + * + * @var array + */ + public static $FUNC_OPTIONS = [ + 'NOT' => [ + 2, + 'var', + ], + 'FUNCTION' => [ + 3, + 'var=', + ], + 'PROCEDURE' => [ + 3, + 'var=', + ], + 'CONTAINS' => [ + 4, + 'expr', + ], + 'NO' => [ + 4, + 'var', + ], + 'READS' => [ + 4, + 'var', + ], + 'MODIFIES' => [ + 4, + 'expr', + ], + 'SQL SECURITY' => [ + 6, + 'var', + ], + 'LANGUAGE' => [ + 7, + 'var', + ], + 'COMMENT' => [ + 8, + 'var', + ], + + 'CREATE' => 1, + 'DETERMINISTIC' => 2, + 'DATA' => 5, + ]; + + /** + * All trigger options. + * + * @var array + */ + public static $TRIGGER_OPTIONS = [ + 'BEFORE' => 1, + 'AFTER' => 1, + 'INSERT' => 2, + 'UPDATE' => 2, + 'DELETE' => 2, + ]; + + /** + * The name of the entity that is created. + * + * Used by all `CREATE` statements. + * + * @var Expression + */ + public $name; + + /** + * The options of the entity (table, procedure, function, etc.). + * + * Used by `CREATE TABLE`, `CREATE FUNCTION` and `CREATE PROCEDURE`. + * + * @see static::$TABLE_OPTIONS + * @see static::$FUNC_OPTIONS + * @see static::$TRIGGER_OPTIONS + * + * @var OptionsArray + */ + public $entityOptions; + + /** + * If `CREATE TABLE`, a list of columns and keys. + * If `CREATE VIEW`, a list of columns. + * + * Used by `CREATE TABLE` and `CREATE VIEW`. + * + * @var CreateDefinition[]|ArrayObj + */ + public $fields; + + /** + * If `CREATE TABLE ... SELECT`. + * If `CREATE VIEW AS ` ... SELECT`. + * + * Used by `CREATE TABLE`, `CREATE VIEW` + * + * @var SelectStatement|null + */ + public $select; + + /** + * If `CREATE TABLE ... LIKE`. + * + * Used by `CREATE TABLE` + * + * @var Expression + */ + public $like; + + /** + * Expression used for partitioning. + * + * @var string + */ + public $partitionBy; + + /** + * The number of partitions. + * + * @var int + */ + public $partitionsNum; + + /** + * Expression used for subpartitioning. + * + * @var string + */ + public $subpartitionBy; + + /** + * The number of subpartitions. + * + * @var int + */ + public $subpartitionsNum; + + /** + * The partition of the new table. + * + * @var PartitionDefinition[] + */ + public $partitions; + + /** + * If `CREATE TRIGGER` the name of the table. + * + * Used by `CREATE TRIGGER`. + * + * @var Expression + */ + public $table; + + /** + * The return data type of this routine. + * + * Used by `CREATE FUNCTION`. + * + * @var DataType + */ + public $return; + + /** + * The parameters of this routine. + * + * Used by `CREATE FUNCTION` and `CREATE PROCEDURE`. + * + * @var ParameterDefinition[] + */ + public $parameters; + + /** + * The body of this function or procedure. + * For views, it is the select statement that creates the view. + * Used by `CREATE FUNCTION`, `CREATE PROCEDURE` and `CREATE VIEW`. + * + * @var Token[]|string + */ + public $body = []; + + /** + * @return string + */ + public function build() + { + $fields = ''; + if (! empty($this->fields)) { + if (is_array($this->fields)) { + $fields = CreateDefinition::build($this->fields) . ' '; + } elseif ($this->fields instanceof ArrayObj) { + $fields = ArrayObj::build($this->fields); + } + } + + if ($this->options->has('DATABASE') || $this->options->has('SCHEMA')) { + return 'CREATE ' + . OptionsArray::build($this->options) . ' ' + . Expression::build($this->name) . ' ' + . OptionsArray::build($this->entityOptions); + } + + if ($this->options->has('TABLE')) { + if ($this->select !== null) { + return 'CREATE ' + . OptionsArray::build($this->options) . ' ' + . Expression::build($this->name) . ' ' + . $this->select->build(); + } + + if ($this->like !== null) { + return 'CREATE ' + . OptionsArray::build($this->options) . ' ' + . Expression::build($this->name) . ' LIKE ' + . Expression::build($this->like); + } + + $partition = ''; + + if (! empty($this->partitionBy)) { + $partition .= "\nPARTITION BY " . $this->partitionBy; + } + + if (! empty($this->partitionsNum)) { + $partition .= "\nPARTITIONS " . $this->partitionsNum; + } + + if (! empty($this->subpartitionBy)) { + $partition .= "\nSUBPARTITION BY " . $this->subpartitionBy; + } + + if (! empty($this->subpartitionsNum)) { + $partition .= "\nSUBPARTITIONS " . $this->subpartitionsNum; + } + + if (! empty($this->partitions)) { + $partition .= "\n" . PartitionDefinition::build($this->partitions); + } + + return 'CREATE ' + . OptionsArray::build($this->options) . ' ' + . Expression::build($this->name) . ' ' + . $fields + . OptionsArray::build($this->entityOptions) + . $partition; + } elseif ($this->options->has('VIEW')) { + return 'CREATE ' + . OptionsArray::build($this->options) . ' ' + . Expression::build($this->name) . ' ' + . $fields . ' AS ' . ($this->select ? $this->select->build() : '') + . (! empty($this->body) ? TokensList::build($this->body) : '') . ' ' + . OptionsArray::build($this->entityOptions); + } elseif ($this->options->has('TRIGGER')) { + return 'CREATE ' + . OptionsArray::build($this->options) . ' ' + . Expression::build($this->name) . ' ' + . OptionsArray::build($this->entityOptions) . ' ' + . 'ON ' . Expression::build($this->table) . ' ' + . 'FOR EACH ROW ' . TokensList::build($this->body); + } elseif ($this->options->has('PROCEDURE') || $this->options->has('FUNCTION')) { + $tmp = ''; + if ($this->options->has('FUNCTION')) { + $tmp = 'RETURNS ' . DataType::build($this->return); + } + + return 'CREATE ' + . OptionsArray::build($this->options) . ' ' + . Expression::build($this->name) . ' ' + . ParameterDefinition::build($this->parameters) . ' ' + . $tmp . ' ' . OptionsArray::build($this->entityOptions) . ' ' + . TokensList::build($this->body); + } + + return 'CREATE ' + . OptionsArray::build($this->options) . ' ' + . Expression::build($this->name) . ' ' + . TokensList::build($this->body); + } + + /** + * @param Parser $parser the instance that requests parsing + * @param TokensList $list the list of tokens to be parsed + */ + public function parse(Parser $parser, TokensList $list) + { + ++$list->idx; // Skipping `CREATE`. + + // Parsing options. + $this->options = OptionsArray::parse($parser, $list, static::$OPTIONS); + ++$list->idx; // Skipping last option. + + $isDatabase = $this->options->has('DATABASE') || $this->options->has('SCHEMA'); + $fieldName = $isDatabase ? 'database' : 'table'; + + // Parsing the field name. + $this->name = Expression::parse( + $parser, + $list, + [ + 'parseField' => $fieldName, + 'breakOnAlias' => true, + ] + ); + + if (! isset($this->name) || ($this->name === '')) { + $parser->error('The name of the entity was expected.', $list->tokens[$list->idx]); + } else { + ++$list->idx; // Skipping field. + } + + /** + * Token parsed at this moment. + * + * @var Token + */ + $token = $list->tokens[$list->idx]; + $nextidx = $list->idx + 1; + while ($nextidx < $list->count && $list->tokens[$nextidx]->type === Token::TYPE_WHITESPACE) { + ++$nextidx; + } + + if ($isDatabase) { + $this->entityOptions = OptionsArray::parse($parser, $list, static::$DB_OPTIONS); + } elseif ($this->options->has('TABLE')) { + if (($token->type === Token::TYPE_KEYWORD) && ($token->keyword === 'SELECT')) { + /* CREATE TABLE ... SELECT */ + $this->select = new SelectStatement($parser, $list); + } elseif ( + ($token->type === Token::TYPE_KEYWORD) && ($token->keyword === 'AS') + && ($list->tokens[$nextidx]->type === Token::TYPE_KEYWORD) + && ($list->tokens[$nextidx]->value === 'SELECT') + ) { + /* CREATE TABLE ... AS SELECT */ + $list->idx = $nextidx; + $this->select = new SelectStatement($parser, $list); + } elseif ($token->type === Token::TYPE_KEYWORD && $token->keyword === 'LIKE') { + /* CREATE TABLE `new_tbl` LIKE 'orig_tbl' */ + $list->idx = $nextidx; + $this->like = Expression::parse( + $parser, + $list, + [ + 'parseField' => 'table', + 'breakOnAlias' => true, + ] + ); + // The 'LIKE' keyword was found, but no table_name was found next to it + if ($this->like === null) { + $parser->error('A table name was expected.', $list->tokens[$list->idx]); + } + } else { + $this->fields = CreateDefinition::parse($parser, $list); + if (empty($this->fields)) { + $parser->error('At least one column definition was expected.', $list->tokens[$list->idx]); + } + + ++$list->idx; + + $this->entityOptions = OptionsArray::parse($parser, $list, static::$TABLE_OPTIONS); + + /** + * The field that is being filled (`partitionBy` or + * `subpartitionBy`). + * + * @var string + */ + $field = null; + + /** + * The number of brackets. `false` means no bracket was found + * previously. At least one bracket is required to validate the + * expression. + * + * @var int|bool + */ + $brackets = false; + + /* + * Handles partitions. + */ + for (; $list->idx < $list->count; ++$list->idx) { + /** + * Token parsed at this moment. + * + * @var Token + */ + $token = $list->tokens[$list->idx]; + + // End of statement. + if ($token->type === Token::TYPE_DELIMITER) { + break; + } + + // Skipping comments. + if ($token->type === Token::TYPE_COMMENT) { + continue; + } + + if (($token->type === Token::TYPE_KEYWORD) && ($token->keyword === 'PARTITION BY')) { + $field = 'partitionBy'; + $brackets = false; + } elseif (($token->type === Token::TYPE_KEYWORD) && ($token->keyword === 'SUBPARTITION BY')) { + $field = 'subpartitionBy'; + $brackets = false; + } elseif (($token->type === Token::TYPE_KEYWORD) && ($token->keyword === 'PARTITIONS')) { + $token = $list->getNextOfType(Token::TYPE_NUMBER); + --$list->idx; // `getNextOfType` also advances one position. + $this->partitionsNum = $token->value; + } elseif (($token->type === Token::TYPE_KEYWORD) && ($token->keyword === 'SUBPARTITIONS')) { + $token = $list->getNextOfType(Token::TYPE_NUMBER); + --$list->idx; // `getNextOfType` also advances one position. + $this->subpartitionsNum = $token->value; + } elseif (! empty($field)) { + /* + * Handling the content of `PARTITION BY` and `SUBPARTITION BY`. + */ + + // Counting brackets. + if ($token->type === Token::TYPE_OPERATOR) { + if ($token->value === '(') { + // This is used instead of `++$brackets` because, + // initially, `$brackets` is `false` cannot be + // incremented. + $brackets += 1; + } elseif ($token->value === ')') { + --$brackets; + } + } + + // Building the expression used for partitioning. + $this->$field .= $token->type === Token::TYPE_WHITESPACE ? ' ' : $token->token; + + // Last bracket was read, the expression ended. + // Comparing with `0` and not `false`, because `false` means + // that no bracket was found and at least one must is + // required. + if ($brackets === 0) { + $this->$field = trim($this->$field); + $field = null; + } + } elseif (($token->type === Token::TYPE_OPERATOR) && ($token->value === '(')) { + if (! empty($this->partitionBy)) { + $this->partitions = ArrayObj::parse( + $parser, + $list, + ['type' => 'PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition'] + ); + } + + break; + } + } + } + } elseif ($this->options->has('PROCEDURE') || $this->options->has('FUNCTION')) { + $this->parameters = ParameterDefinition::parse($parser, $list); + if ($this->options->has('FUNCTION')) { + $prevToken = $token; + $token = $list->getNextOfType(Token::TYPE_KEYWORD); + if ($token === null || $token->keyword !== 'RETURNS') { + $parser->error('A "RETURNS" keyword was expected.', $token ?? $prevToken); + } else { + ++$list->idx; + $this->return = DataType::parse($parser, $list); + } + } + + ++$list->idx; + + $this->entityOptions = OptionsArray::parse($parser, $list, static::$FUNC_OPTIONS); + ++$list->idx; + + for (; $list->idx < $list->count; ++$list->idx) { + $token = $list->tokens[$list->idx]; + $this->body[] = $token; + } + } elseif ($this->options->has('VIEW')) { + /** @var Token $token */ + $token = $list->getNext(); // Skipping whitespaces and comments. + + // Parsing columns list. + if (($token->type === Token::TYPE_OPERATOR) && ($token->value === '(')) { + --$list->idx; // getNext() also goes forward one field. + $this->fields = ArrayObj::parse($parser, $list); + ++$list->idx; // Skipping last token from the array. + $list->getNext(); + } + + // Parsing the SELECT expression if the view started with it. + if ( + $token->type === Token::TYPE_KEYWORD + && $token->keyword === 'AS' + && $list->tokens[$nextidx]->type === Token::TYPE_KEYWORD + && $list->tokens[$nextidx]->value === 'SELECT' + ) { + $list->idx = $nextidx; + $this->select = new SelectStatement($parser, $list); + } + + // Parsing all other tokens + for (; $list->idx < $list->count; ++$list->idx) { + $token = $list->tokens[$list->idx]; + if ($token->type === Token::TYPE_DELIMITER) { + break; + } + + $this->body[] = $token; + } + } elseif ($this->options->has('TRIGGER')) { + // Parsing the time and the event. + $this->entityOptions = OptionsArray::parse($parser, $list, static::$TRIGGER_OPTIONS); + ++$list->idx; + + $list->getNextOfTypeAndValue(Token::TYPE_KEYWORD, 'ON'); + ++$list->idx; // Skipping `ON`. + + // Parsing the name of the table. + $this->table = Expression::parse( + $parser, + $list, + [ + 'parseField' => 'table', + 'breakOnAlias' => true, + ] + ); + ++$list->idx; + + $list->getNextOfTypeAndValue(Token::TYPE_KEYWORD, 'FOR EACH ROW'); + ++$list->idx; // Skipping `FOR EACH ROW`. + + for (; $list->idx < $list->count; ++$list->idx) { + $token = $list->tokens[$list->idx]; + $this->body[] = $token; + } + } else { + for (; $list->idx < $list->count; ++$list->idx) { + $token = $list->tokens[$list->idx]; + if ($token->type === Token::TYPE_DELIMITER) { + break; + } + + $this->body[] = $token; + } + } + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/DeleteStatement.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/DeleteStatement.php new file mode 100644 index 0000000000..b718b3c765 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/DeleteStatement.php @@ -0,0 +1,377 @@ + 1, + 'QUICK' => 2, + 'IGNORE' => 3, + ]; + + /** + * The clauses of this statement, in order. + * + * @see Statement::$CLAUSES + * + * @var array + */ + public static $CLAUSES = [ + 'DELETE' => [ + 'DELETE', + 2, + ], + // Used for options. + '_OPTIONS' => [ + '_OPTIONS', + 1, + ], + 'FROM' => [ + 'FROM', + 3, + ], + 'PARTITION' => [ + 'PARTITION', + 3, + ], + 'USING' => [ + 'USING', + 3, + ], + 'WHERE' => [ + 'WHERE', + 3, + ], + 'ORDER BY' => [ + 'ORDER BY', + 3, + ], + 'LIMIT' => [ + 'LIMIT', + 3, + ], + ]; + + /** + * Table(s) used as sources for this statement. + * + * @var Expression[] + */ + public $from; + + /** + * Joins. + * + * @var JoinKeyword[] + */ + public $join; + + /** + * Tables used as sources for this statement. + * + * @var Expression[] + */ + public $using; + + /** + * Columns used in this statement. + * + * @var Expression[] + */ + public $columns; + + /** + * Partitions used as source for this statement. + * + * @var ArrayObj + */ + public $partition; + + /** + * Conditions used for filtering each row of the result set. + * + * @var Condition[] + */ + public $where; + + /** + * Specifies the order of the rows in the result set. + * + * @var OrderKeyword[] + */ + public $order; + + /** + * Conditions used for limiting the size of the result set. + * + * @var Limit + */ + public $limit; + + /** + * @return string + */ + public function build() + { + $ret = 'DELETE ' . OptionsArray::build($this->options); + + if ($this->columns !== null && count($this->columns) > 0) { + $ret .= ' ' . ExpressionArray::build($this->columns); + } + + if ($this->from !== null && count($this->from) > 0) { + $ret .= ' FROM ' . ExpressionArray::build($this->from); + } + + if ($this->join !== null && count($this->join) > 0) { + $ret .= ' ' . JoinKeyword::build($this->join); + } + + if ($this->using !== null && count($this->using) > 0) { + $ret .= ' USING ' . ExpressionArray::build($this->using); + } + + if ($this->where !== null && count($this->where) > 0) { + $ret .= ' WHERE ' . Condition::build($this->where); + } + + if ($this->order !== null && count($this->order) > 0) { + $ret .= ' ORDER BY ' . ExpressionArray::build($this->order); + } + + if ($this->limit !== null && strlen((string) $this->limit) > 0) { + $ret .= ' LIMIT ' . Limit::build($this->limit); + } + + return $ret; + } + + /** + * @param Parser $parser the instance that requests parsing + * @param TokensList $list the list of tokens to be parsed + */ + public function parse(Parser $parser, TokensList $list) + { + ++$list->idx; // Skipping `DELETE`. + + // parse any options if provided + $this->options = OptionsArray::parse($parser, $list, static::$OPTIONS); + ++$list->idx; + + /** + * The state of the parser. + * + * Below are the states of the parser. + * + * 0 ---------------------------------[ FROM ]----------------------------------> 2 + * 0 ------------------------------[ table[.*] ]--------------------------------> 1 + * 1 ---------------------------------[ FROM ]----------------------------------> 2 + * 2 --------------------------------[ USING ]----------------------------------> 3 + * 2 --------------------------------[ WHERE ]----------------------------------> 4 + * 2 --------------------------------[ ORDER ]----------------------------------> 5 + * 2 --------------------------------[ LIMIT ]----------------------------------> 6 + * + * @var int + */ + $state = 0; + + /** + * If the query is multi-table or not. + * + * @var bool + */ + $multiTable = false; + + for (; $list->idx < $list->count; ++$list->idx) { + /** + * Token parsed at this moment. + * + * @var Token + */ + $token = $list->tokens[$list->idx]; + + // End of statement. + if ($token->type === Token::TYPE_DELIMITER) { + break; + } + + if ($state === 0) { + if ($token->type === Token::TYPE_KEYWORD) { + if ($token->keyword !== 'FROM') { + $parser->error('Unexpected keyword.', $token); + break; + } + + ++$list->idx; // Skip 'FROM' + $this->from = ExpressionArray::parse($parser, $list); + + $state = 2; + } else { + $this->columns = ExpressionArray::parse($parser, $list); + $state = 1; + } + } elseif ($state === 1) { + if ($token->type !== Token::TYPE_KEYWORD) { + $parser->error('Unexpected token.', $token); + break; + } + + if ($token->keyword !== 'FROM') { + $parser->error('Unexpected keyword.', $token); + break; + } + + ++$list->idx; // Skip 'FROM' + $this->from = ExpressionArray::parse($parser, $list); + + $state = 2; + } elseif ($state === 2) { + if ($token->type === Token::TYPE_KEYWORD) { + if (stripos($token->keyword, 'JOIN') !== false) { + ++$list->idx; + $this->join = JoinKeyword::parse($parser, $list); + + // remain in state = 2 + } else { + switch ($token->keyword) { + case 'USING': + ++$list->idx; // Skip 'USING' + $this->using = ExpressionArray::parse($parser, $list); + $state = 3; + + $multiTable = true; + break; + case 'WHERE': + ++$list->idx; // Skip 'WHERE' + $this->where = Condition::parse($parser, $list); + $state = 4; + break; + case 'ORDER BY': + ++$list->idx; // Skip 'ORDER BY' + $this->order = OrderKeyword::parse($parser, $list); + $state = 5; + break; + case 'LIMIT': + ++$list->idx; // Skip 'LIMIT' + $this->limit = Limit::parse($parser, $list); + $state = 6; + break; + default: + $parser->error('Unexpected keyword.', $token); + break 2; + } + } + } + } elseif ($state === 3) { + if ($token->type !== Token::TYPE_KEYWORD) { + $parser->error('Unexpected token.', $token); + break; + } + + if ($token->keyword !== 'WHERE') { + $parser->error('Unexpected keyword.', $token); + break; + } + + ++$list->idx; // Skip 'WHERE' + $this->where = Condition::parse($parser, $list); + $state = 4; + } elseif ($state === 4) { + if ($multiTable === true && $token->type === Token::TYPE_KEYWORD) { + $parser->error('This type of clause is not valid in Multi-table queries.', $token); + break; + } + + if ($token->type === Token::TYPE_KEYWORD) { + switch ($token->keyword) { + case 'ORDER BY': + ++$list->idx; // Skip 'ORDER BY' + $this->order = OrderKeyword::parse($parser, $list); + $state = 5; + break; + case 'LIMIT': + ++$list->idx; // Skip 'LIMIT' + $this->limit = Limit::parse($parser, $list); + $state = 6; + break; + default: + $parser->error('Unexpected keyword.', $token); + break 2; + } + } + } elseif ($state === 5) { + if ($token->type === Token::TYPE_KEYWORD) { + if ($token->keyword !== 'LIMIT') { + $parser->error('Unexpected keyword.', $token); + break; + } + + ++$list->idx; // Skip 'LIMIT' + $this->limit = Limit::parse($parser, $list); + $state = 6; + } + } + } + + if ($state >= 2) { + foreach ($this->from as $fromExpr) { + $fromExpr->database = $fromExpr->table; + $fromExpr->table = $fromExpr->column; + $fromExpr->column = null; + } + } + + --$list->idx; + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/DropStatement.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/DropStatement.php new file mode 100644 index 0000000000..3b4983a7c7 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/DropStatement.php @@ -0,0 +1,83 @@ + 1, + 'EVENT' => 1, + 'FUNCTION' => 1, + 'INDEX' => 1, + 'LOGFILE' => 1, + 'PROCEDURE' => 1, + 'SCHEMA' => 1, + 'SERVER' => 1, + 'TABLE' => 1, + 'VIEW' => 1, + 'TABLESPACE' => 1, + 'TRIGGER' => 1, + 'USER' => 1, + + 'TEMPORARY' => 2, + 'IF EXISTS' => 3, + ]; + + /** + * The clauses of this statement, in order. + * + * @see Statement::$CLAUSES + * + * @var array + */ + public static $CLAUSES = [ + 'DROP' => [ + 'DROP', + 2, + ], + // Used for options. + '_OPTIONS' => [ + '_OPTIONS', + 1, + ], + // Used for select expressions. + 'DROP_' => [ + 'DROP', + 1, + ], + 'ON' => [ + 'ON', + 3, + ], + ]; + + /** + * Dropped elements. + * + * @var Expression[] + */ + public $fields; + + /** + * Table of the dropped index. + * + * @var Expression + */ + public $table; +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/ExplainStatement.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/ExplainStatement.php new file mode 100644 index 0000000000..5c4ea17d97 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/ExplainStatement.php @@ -0,0 +1,15 @@ + 1, + 'DELAYED' => 2, + 'HIGH_PRIORITY' => 3, + 'IGNORE' => 4, + ]; + + /** + * Tables used as target for this statement. + * + * @var IntoKeyword + */ + public $into; + + /** + * Values to be inserted. + * + * @var ArrayObj[]|null + */ + public $values; + + /** + * If SET clause is present + * holds the SetOperation. + * + * @var SetOperation[] + */ + public $set; + + /** + * If SELECT clause is present + * holds the SelectStatement. + * + * @var SelectStatement + */ + public $select; + + /** + * If ON DUPLICATE KEY UPDATE clause is present + * holds the SetOperation. + * + * @var SetOperation[] + */ + public $onDuplicateSet; + + /** + * @return string + */ + public function build() + { + $ret = 'INSERT ' . $this->options; + $ret = trim($ret) . ' INTO ' . $this->into; + + if ($this->values !== null && count($this->values) > 0) { + $ret .= ' VALUES ' . Array2d::build($this->values); + } elseif ($this->set !== null && count($this->set) > 0) { + $ret .= ' SET ' . SetOperation::build($this->set); + } elseif ($this->select !== null && strlen((string) $this->select) > 0) { + $ret .= ' ' . $this->select->build(); + } + + if ($this->onDuplicateSet !== null && count($this->onDuplicateSet) > 0) { + $ret .= ' ON DUPLICATE KEY UPDATE ' . SetOperation::build($this->onDuplicateSet); + } + + return $ret; + } + + /** + * @param Parser $parser the instance that requests parsing + * @param TokensList $list the list of tokens to be parsed + */ + public function parse(Parser $parser, TokensList $list) + { + ++$list->idx; // Skipping `INSERT`. + + // parse any options if provided + $this->options = OptionsArray::parse($parser, $list, static::$OPTIONS); + ++$list->idx; + + /** + * The state of the parser. + * + * Below are the states of the parser. + * + * 0 ---------------------------------[ INTO ]----------------------------------> 1 + * + * 1 -------------------------[ VALUES/VALUE/SET/SELECT ]-----------------------> 2 + * + * 2 -------------------------[ ON DUPLICATE KEY UPDATE ]-----------------------> 3 + * + * @var int + */ + $state = 0; + + /** + * For keeping track of semi-states on encountering + * ON DUPLICATE KEY UPDATE ... + */ + $miniState = 0; + + for (; $list->idx < $list->count; ++$list->idx) { + /** + * Token parsed at this moment. + * + * @var Token + */ + $token = $list->tokens[$list->idx]; + + // End of statement. + if ($token->type === Token::TYPE_DELIMITER) { + break; + } + + // Skipping whitespaces and comments. + if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { + continue; + } + + if ($state === 0) { + if ($token->type === Token::TYPE_KEYWORD && $token->keyword !== 'INTO') { + $parser->error('Unexpected keyword.', $token); + break; + } + + ++$list->idx; + $this->into = IntoKeyword::parse( + $parser, + $list, + ['fromInsert' => true] + ); + + $state = 1; + } elseif ($state === 1) { + if ($token->type !== Token::TYPE_KEYWORD) { + $parser->error('Unexpected token.', $token); + break; + } + + if ($token->keyword === 'VALUE' || $token->keyword === 'VALUES') { + ++$list->idx; // skip VALUES + + $this->values = Array2d::parse($parser, $list); + } elseif ($token->keyword === 'SET') { + ++$list->idx; // skip SET + + $this->set = SetOperation::parse($parser, $list); + } elseif ($token->keyword === 'SELECT') { + $this->select = new SelectStatement($parser, $list); + } else { + $parser->error('Unexpected keyword.', $token); + break; + } + + $state = 2; + $miniState = 1; + } elseif ($state === 2) { + $lastCount = $miniState; + + if ($miniState === 1 && $token->keyword === 'ON') { + ++$miniState; + } elseif ($miniState === 2 && $token->keyword === 'DUPLICATE') { + ++$miniState; + } elseif ($miniState === 3 && $token->keyword === 'KEY') { + ++$miniState; + } elseif ($miniState === 4 && $token->keyword === 'UPDATE') { + ++$miniState; + } + + if ($lastCount === $miniState) { + $parser->error('Unexpected token.', $token); + break; + } + + if ($miniState === 5) { + ++$list->idx; + $this->onDuplicateSet = SetOperation::parse($parser, $list); + $state = 3; + } + } + } + + --$list->idx; + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/LoadStatement.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/LoadStatement.php new file mode 100644 index 0000000000..4424a95133 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/LoadStatement.php @@ -0,0 +1,412 @@ + 1, + 'CONCURRENT' => 1, + 'LOCAL' => 2, + ]; + + /** + * FIELDS/COLUMNS Options for `LOAD DATA...INFILE` statements. + * + * @var array + */ + public static $FIELDS_OPTIONS = [ + 'TERMINATED BY' => [ + 1, + 'expr', + ], + 'OPTIONALLY' => 2, + 'ENCLOSED BY' => [ + 3, + 'expr', + ], + 'ESCAPED BY' => [ + 4, + 'expr', + ], + ]; + + /** + * LINES Options for `LOAD DATA...INFILE` statements. + * + * @var array + */ + public static $LINES_OPTIONS = [ + 'STARTING BY' => [ + 1, + 'expr', + ], + 'TERMINATED BY' => [ + 2, + 'expr', + ], + ]; + + /** + * File name being used to load data. + * + * @var Expression + */ + public $file_name; + + /** + * Table used as destination for this statement. + * + * @var Expression + */ + public $table; + + /** + * Partitions used as source for this statement. + * + * @var ArrayObj + */ + public $partition; + + /** + * Character set used in this statement. + * + * @var Expression + */ + public $charset_name; + + /** + * Options for FIELDS/COLUMNS keyword. + * + * @see static::$FIELDS_OPTIONS + * + * @var OptionsArray + */ + public $fields_options; + + /** + * Whether to use `FIELDS` or `COLUMNS` while building. + * + * @var string + */ + public $fields_keyword; + + /** + * Options for OPTIONS keyword. + * + * @see static::$LINES_OPTIONS + * + * @var OptionsArray + */ + public $lines_options; + + /** + * Column names or user variables. + * + * @var Expression[] + */ + public $col_name_or_user_var; + + /** + * SET clause's updated values(optional). + * + * @var SetOperation[] + */ + public $set; + + /** + * Ignore 'number' LINES/ROWS. + * + * @var Expression + */ + public $ignore_number; + + /** + * REPLACE/IGNORE Keyword. + * + * @var string + */ + public $replace_ignore; + + /** + * LINES/ROWS Keyword. + * + * @var string + */ + public $lines_rows; + + /** + * @return string + */ + public function build() + { + $ret = 'LOAD DATA ' . $this->options + . ' INFILE ' . $this->file_name; + + if ($this->replace_ignore !== null) { + $ret .= ' ' . trim($this->replace_ignore); + } + + $ret .= ' INTO TABLE ' . $this->table; + + if ($this->partition !== null && strlen((string) $this->partition) > 0) { + $ret .= ' PARTITION ' . ArrayObj::build($this->partition); + } + + if ($this->charset_name !== null) { + $ret .= ' CHARACTER SET ' . $this->charset_name; + } + + if ($this->fields_keyword !== null) { + $ret .= ' ' . $this->fields_keyword . ' ' . $this->fields_options; + } + + if ($this->lines_options !== null && strlen((string) $this->lines_options) > 0) { + $ret .= ' LINES ' . $this->lines_options; + } + + if ($this->ignore_number !== null) { + $ret .= ' IGNORE ' . $this->ignore_number . ' ' . $this->lines_rows; + } + + if ($this->col_name_or_user_var !== null && count($this->col_name_or_user_var) > 0) { + $ret .= ' ' . ExpressionArray::build($this->col_name_or_user_var); + } + + if ($this->set !== null && count($this->set) > 0) { + $ret .= ' SET ' . SetOperation::build($this->set); + } + + return $ret; + } + + /** + * @param Parser $parser the instance that requests parsing + * @param TokensList $list the list of tokens to be parsed + */ + public function parse(Parser $parser, TokensList $list) + { + ++$list->idx; // Skipping `LOAD DATA`. + + // parse any options if provided + $this->options = OptionsArray::parse($parser, $list, static::$OPTIONS); + ++$list->idx; + + /** + * The state of the parser. + * + * @var int + */ + $state = 0; + + for (; $list->idx < $list->count; ++$list->idx) { + /** + * Token parsed at this moment. + * + * @var Token + */ + $token = $list->tokens[$list->idx]; + + // End of statement. + if ($token->type === Token::TYPE_DELIMITER) { + break; + } + + // Skipping whitespaces and comments. + if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { + continue; + } + + if ($state === 0) { + if ($token->type === Token::TYPE_KEYWORD && $token->keyword !== 'INFILE') { + $parser->error('Unexpected keyword.', $token); + break; + } + + if ($token->type !== Token::TYPE_KEYWORD) { + $parser->error('Unexpected token.', $token); + break; + } + + ++$list->idx; + $this->file_name = Expression::parse( + $parser, + $list, + ['parseField' => 'file'] + ); + $state = 1; + } elseif ($state === 1) { + if ($token->type === Token::TYPE_KEYWORD) { + if ($token->keyword === 'REPLACE' || $token->keyword === 'IGNORE') { + $this->replace_ignore = trim($token->keyword); + } elseif ($token->keyword === 'INTO') { + $state = 2; + } + } + } elseif ($state === 2) { + if ($token->type !== Token::TYPE_KEYWORD || $token->keyword !== 'TABLE') { + $parser->error('Unexpected token.', $token); + break; + } + + ++$list->idx; + $this->table = Expression::parse($parser, $list, ['parseField' => 'table']); + $state = 3; + } elseif ($state >= 3 && $state <= 7) { + if ($token->type === Token::TYPE_KEYWORD) { + $newState = $this->parseKeywordsAccordingToState($parser, $list, $state); + if ($newState === $state) { + // Avoid infinite loop + break; + } + } elseif ($token->type === Token::TYPE_OPERATOR && $token->token === '(') { + $this->col_name_or_user_var + = ExpressionArray::parse($parser, $list); + $state = 7; + } else { + $parser->error('Unexpected token.', $token); + break; + } + } + } + + --$list->idx; + } + + /** + * @param Parser $parser The parser + * @param TokensList $list A token list + * @param string $keyword The keyword + */ + public function parseFileOptions(Parser $parser, TokensList $list, $keyword = 'FIELDS'): void + { + ++$list->idx; + + if ($keyword === 'FIELDS' || $keyword === 'COLUMNS') { + // parse field options + $this->fields_options = OptionsArray::parse($parser, $list, static::$FIELDS_OPTIONS); + + $this->fields_keyword = $keyword; + } else { + // parse line options + $this->lines_options = OptionsArray::parse($parser, $list, static::$LINES_OPTIONS); + } + } + + /** + * @param Parser $parser + * @param TokensList $list + * @param int $state + * + * @return int + */ + public function parseKeywordsAccordingToState($parser, $list, $state) + { + $token = $list->tokens[$list->idx]; + + switch ($state) { + case 3: + if ($token->keyword === 'PARTITION') { + ++$list->idx; + $this->partition = ArrayObj::parse($parser, $list); + + return 4; + } + + // no break + case 4: + if ($token->keyword === 'CHARACTER SET') { + ++$list->idx; + $this->charset_name = Expression::parse($parser, $list); + + return 5; + } + + // no break + case 5: + if ($token->keyword === 'FIELDS' || $token->keyword === 'COLUMNS' || $token->keyword === 'LINES') { + $this->parseFileOptions($parser, $list, $token->value); + + return 6; + } + + // no break + case 6: + if ($token->keyword === 'IGNORE') { + ++$list->idx; + + $this->ignore_number = Expression::parse($parser, $list); + $nextToken = $list->getNextOfType(Token::TYPE_KEYWORD); + + if ( + $nextToken->type === Token::TYPE_KEYWORD + && (($nextToken->keyword === 'LINES') + || ($nextToken->keyword === 'ROWS')) + ) { + $this->lines_rows = $nextToken->token; + } + + return 7; + } + + // no break + case 7: + if ($token->keyword === 'SET') { + ++$list->idx; + $this->set = SetOperation::parse($parser, $list); + + return 8; + } + + // no break + default: + } + + return $state; + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/LockStatement.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/LockStatement.php new file mode 100644 index 0000000000..0bfc89fc0c --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/LockStatement.php @@ -0,0 +1,136 @@ +tokens[$list->idx]->value === 'UNLOCK') { + // this is in fact an UNLOCK statement + $this->isLock = false; + } + + ++$list->idx; // Skipping `LOCK`. + + /** + * The state of the parser. + * + * Below are the states of the parser. + * + * 0 ---------------- [ TABLES ] -----------------> 1 + * 1 -------------- [ lock_expr ] ----------------> 2 + * 2 ------------------ [ , ] --------------------> 1 + * + * @var int + */ + $state = 0; + + /** + * Previous parsed token + */ + $prevToken = null; + + for (; $list->idx < $list->count; ++$list->idx) { + /** + * Token parsed at this moment. + * + * @var Token + */ + $token = $list->tokens[$list->idx]; + + // End of statement. + if ($token->type === Token::TYPE_DELIMITER) { + break; + } + + // Skipping whitespaces and comments. + if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { + continue; + } + + if ($state === 0) { + if ($token->type === Token::TYPE_KEYWORD) { + if ($token->keyword !== 'TABLES') { + $parser->error('Unexpected keyword.', $token); + break; + } + + $state = 1; + continue; + } + + $parser->error('Unexpected token.', $token); + break; + } + + if ($state === 1) { + if (! $this->isLock) { + // UNLOCK statement should not have any more tokens + $parser->error('Unexpected token.', $token); + break; + } + + $this->locked[] = LockExpression::parse($parser, $list); + $state = 2; + } elseif ($state === 2) { + if ($token->value === ',') { + // move over to parsing next lock expression + $state = 1; + } + } + + $prevToken = $token; + } + + if ($state === 2 || $prevToken === null) { + return; + } + + $parser->error('Unexpected end of LOCK statement.', $prevToken); + } + + /** + * @return string + */ + public function build() + { + return trim(($this->isLock ? 'LOCK' : 'UNLOCK') + . ' TABLES ' . LockExpression::build($this->locked)); + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/MaintenanceStatement.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/MaintenanceStatement.php new file mode 100644 index 0000000000..1f3f71b8a7 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/MaintenanceStatement.php @@ -0,0 +1,58 @@ +idx; + $this->options->merge( + OptionsArray::parse( + $parser, + $list, + static::$OPTIONS + ) + ); + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/NotImplementedStatement.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/NotImplementedStatement.php new file mode 100644 index 0000000000..ebb79fbd1b --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/NotImplementedStatement.php @@ -0,0 +1,59 @@ +unknown as $token) { + $query .= $token->token; + } + + return $query; + } + + /** + * @param Parser $parser the instance that requests parsing + * @param TokensList $list the list of tokens to be parsed + */ + public function parse(Parser $parser, TokensList $list) + { + for (; $list->idx < $list->count; ++$list->idx) { + if ($list->tokens[$list->idx]->type === Token::TYPE_DELIMITER) { + break; + } + + $this->unknown[] = $list->tokens[$list->idx]; + } + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/OptimizeStatement.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/OptimizeStatement.php new file mode 100644 index 0000000000..e5fa5640ca --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/OptimizeStatement.php @@ -0,0 +1,39 @@ + 1, + + 'NO_WRITE_TO_BINLOG' => 2, + 'LOCAL' => 3, + ]; + + /** + * Optimized tables. + * + * @var Expression[] + */ + public $tables; +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/PurgeStatement.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/PurgeStatement.php new file mode 100644 index 0000000000..b130c38493 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/PurgeStatement.php @@ -0,0 +1,150 @@ +log_type . ' LOGS ' + . ($this->end_option !== null ? ($this->end_option . ' ' . $this->end_expr) : ''); + + return trim($ret); + } + + /** + * @param Parser $parser the instance that requests parsing + * @param TokensList $list the list of tokens to be parsed + */ + public function parse(Parser $parser, TokensList $list) + { + ++$list->idx; // Skipping `PURGE`. + + /** + * The state of the parser. + * + * @var int + */ + $state = 0; + + $prevToken = null; + for (; $list->idx < $list->count; ++$list->idx) { + /** + * Token parsed at this moment. + * + * @var Token + */ + $token = $list->tokens[$list->idx]; + + // End of statement. + if ($token->type === Token::TYPE_DELIMITER) { + break; + } + + // Skipping whitespaces and comments. + if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { + continue; + } + + switch ($state) { + case 0: + // parse `{ BINARY | MASTER }` + $this->log_type = self::parseExpectedKeyword($parser, $token, ['BINARY', 'MASTER']); + break; + case 1: + // parse `LOGS` + self::parseExpectedKeyword($parser, $token, ['LOGS']); + break; + case 2: + // parse `{ TO | BEFORE }` + $this->end_option = self::parseExpectedKeyword($parser, $token, ['TO', 'BEFORE']); + break; + case 3: + // parse `expr` + $this->end_expr = Expression::parse($parser, $list, []); + break; + default: + $parser->error('Unexpected token.', $token); + break; + } + + $state++; + $prevToken = $token; + } + + // Only one possible end state + if ($state === 4) { + return; + } + + $parser->error('Unexpected token.', $prevToken); + } + + /** + * Parse expected keyword (or throw relevant error) + * + * @param Parser $parser the instance that requests parsing + * @param Token $token token to be parsed + * @param array $expectedKeywords array of possibly expected keywords at this point + * + * @return mixed|null + */ + private static function parseExpectedKeyword($parser, $token, $expectedKeywords) + { + if ($token->type === Token::TYPE_KEYWORD) { + if (in_array($token->keyword, $expectedKeywords)) { + return $token->keyword; + } + + $parser->error('Unexpected keyword', $token); + } else { + $parser->error('Unexpected token.', $token); + } + + return null; + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/RenameStatement.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/RenameStatement.php new file mode 100644 index 0000000000..b7b91cfc17 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/RenameStatement.php @@ -0,0 +1,57 @@ +type !== Token::TYPE_KEYWORD) || ($token->keyword !== 'RENAME')) { + return; + } + + // Checking if it is the beginning of the query. + $list->getNextOfTypeAndValue(Token::TYPE_KEYWORD, 'TABLE'); + } + + /** + * @return string + */ + public function build() + { + return 'RENAME TABLE ' . RenameOperation::build($this->renames); + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/RepairStatement.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/RepairStatement.php new file mode 100644 index 0000000000..bdbc40dbca --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/RepairStatement.php @@ -0,0 +1,34 @@ + 1, + + 'NO_WRITE_TO_BINLOG' => 2, + 'LOCAL' => 3, + + 'QUICK' => 4, + 'EXTENDED' => 5, + 'USE_FRM' => 6, + ]; +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/ReplaceStatement.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/ReplaceStatement.php new file mode 100644 index 0000000000..29c581d808 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/ReplaceStatement.php @@ -0,0 +1,190 @@ + 1, + 'DELAYED' => 1, + ]; + + /** + * Tables used as target for this statement. + * + * @var IntoKeyword + */ + public $into; + + /** + * Values to be replaced. + * + * @var Array2d + */ + public $values; + + /** + * If SET clause is present + * holds the SetOperation. + * + * @var SetOperation[] + */ + public $set; + + /** + * If SELECT clause is present + * holds the SelectStatement. + * + * @var SelectStatement + */ + public $select; + + /** + * @return string + */ + public function build() + { + $ret = 'REPLACE ' . $this->options; + $ret = trim($ret) . ' INTO ' . $this->into; + + if ($this->values !== null && count($this->values) > 0) { + $ret .= ' VALUES ' . Array2d::build($this->values); + } elseif ($this->set !== null && count($this->set) > 0) { + $ret .= ' SET ' . SetOperation::build($this->set); + } elseif ($this->select !== null && strlen((string) $this->select) > 0) { + $ret .= ' ' . $this->select->build(); + } + + return $ret; + } + + /** + * @param Parser $parser the instance that requests parsing + * @param TokensList $list the list of tokens to be parsed + */ + public function parse(Parser $parser, TokensList $list) + { + ++$list->idx; // Skipping `REPLACE`. + + // parse any options if provided + $this->options = OptionsArray::parse($parser, $list, static::$OPTIONS); + + ++$list->idx; + + /** + * The state of the parser. + * + * Below are the states of the parser. + * + * 0 ---------------------------------[ INTO ]----------------------------------> 1 + * + * 1 -------------------------[ VALUES/VALUE/SET/SELECT ]-----------------------> 2 + * + * @var int + */ + $state = 0; + + for (; $list->idx < $list->count; ++$list->idx) { + /** + * Token parsed at this moment. + * + * @var Token + */ + $token = $list->tokens[$list->idx]; + + // End of statement. + if ($token->type === Token::TYPE_DELIMITER) { + break; + } + + // Skipping whitespaces and comments. + if (($token->type === Token::TYPE_WHITESPACE) || ($token->type === Token::TYPE_COMMENT)) { + continue; + } + + if ($state === 0) { + if ($token->type === Token::TYPE_KEYWORD && $token->keyword !== 'INTO') { + $parser->error('Unexpected keyword.', $token); + break; + } + + ++$list->idx; + $this->into = IntoKeyword::parse( + $parser, + $list, + ['fromReplace' => true] + ); + + $state = 1; + } elseif ($state === 1) { + if ($token->type !== Token::TYPE_KEYWORD) { + $parser->error('Unexpected token.', $token); + break; + } + + if ($token->keyword === 'VALUE' || $token->keyword === 'VALUES') { + ++$list->idx; // skip VALUES + + $this->values = Array2d::parse($parser, $list); + } elseif ($token->keyword === 'SET') { + ++$list->idx; // skip SET + + $this->set = SetOperation::parse($parser, $list); + } elseif ($token->keyword === 'SELECT') { + $this->select = new SelectStatement($parser, $list); + } else { + $parser->error('Unexpected keyword.', $token); + break; + } + + $state = 2; + } + } + + --$list->idx; + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/RestoreStatement.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/RestoreStatement.php new file mode 100644 index 0000000000..186d7c7143 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/RestoreStatement.php @@ -0,0 +1,30 @@ + 1, + + 'FROM' => [ + 2, + 'var', + ], + ]; +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/SelectStatement.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/SelectStatement.php new file mode 100644 index 0000000000..0933730f8b --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/SelectStatement.php @@ -0,0 +1,350 @@ + 1, + 'DISTINCT' => 1, + 'DISTINCTROW' => 1, + 'HIGH_PRIORITY' => 2, + 'MAX_STATEMENT_TIME' => [ + 3, + 'var=', + ], + 'STRAIGHT_JOIN' => 4, + 'SQL_SMALL_RESULT' => 5, + 'SQL_BIG_RESULT' => 6, + 'SQL_BUFFER_RESULT' => 7, + 'SQL_CACHE' => 8, + 'SQL_NO_CACHE' => 8, + 'SQL_CALC_FOUND_ROWS' => 9, + ]; + + /** @var array */ + public static $END_OPTIONS = [ + 'FOR UPDATE' => 1, + 'LOCK IN SHARE MODE' => 1, + ]; + + /** + * The clauses of this statement, in order. + * + * @see Statement::$CLAUSES + * + * @var array + */ + public static $CLAUSES = [ + 'SELECT' => [ + 'SELECT', + 2, + ], + // Used for options. + '_OPTIONS' => [ + '_OPTIONS', + 1, + ], + // Used for selected expressions. + '_SELECT' => [ + 'SELECT', + 1, + ], + 'INTO' => [ + 'INTO', + 3, + ], + 'FROM' => [ + 'FROM', + 3, + ], + 'FORCE' => [ + 'FORCE', + 1, + ], + 'USE' => [ + 'USE', + 1, + ], + 'IGNORE' => [ + 'IGNORE', + 3, + ], + 'PARTITION' => [ + 'PARTITION', + 3, + ], + + 'JOIN' => [ + 'JOIN', + 1, + ], + 'FULL JOIN' => [ + 'FULL JOIN', + 1, + ], + 'INNER JOIN' => [ + 'INNER JOIN', + 1, + ], + 'LEFT JOIN' => [ + 'LEFT JOIN', + 1, + ], + 'LEFT OUTER JOIN' => [ + 'LEFT OUTER JOIN', + 1, + ], + 'RIGHT JOIN' => [ + 'RIGHT JOIN', + 1, + ], + 'RIGHT OUTER JOIN' => [ + 'RIGHT OUTER JOIN', + 1, + ], + 'NATURAL JOIN' => [ + 'NATURAL JOIN', + 1, + ], + 'NATURAL LEFT JOIN' => [ + 'NATURAL LEFT JOIN', + 1, + ], + 'NATURAL RIGHT JOIN' => [ + 'NATURAL RIGHT JOIN', + 1, + ], + 'NATURAL LEFT OUTER JOIN' => [ + 'NATURAL LEFT OUTER JOIN', + 1, + ], + 'NATURAL RIGHT OUTER JOIN' => [ + 'NATURAL RIGHT JOIN', + 1, + ], + + 'WHERE' => [ + 'WHERE', + 3, + ], + 'GROUP BY' => [ + 'GROUP BY', + 3, + ], + 'HAVING' => [ + 'HAVING', + 3, + ], + 'ORDER BY' => [ + 'ORDER BY', + 3, + ], + 'LIMIT' => [ + 'LIMIT', + 3, + ], + 'PROCEDURE' => [ + 'PROCEDURE', + 3, + ], + 'UNION' => [ + 'UNION', + 1, + ], + 'EXCEPT' => [ + 'EXCEPT', + 1, + ], + 'INTERSECT' => [ + 'INTERSECT', + 1, + ], + '_END_OPTIONS' => [ + '_END_OPTIONS', + 1, + ], + // These are available only when `UNION` is present. + // 'ORDER BY' => ['ORDER BY', 3], + // 'LIMIT' => ['LIMIT', 3], + ]; + + /** + * Expressions that are being selected by this statement. + * + * @var Expression[] + */ + public $expr = []; + + /** + * Tables used as sources for this statement. + * + * @var Expression[] + */ + public $from = []; + + /** + * Index hints + * + * @var IndexHint[] + */ + public $index_hints; + + /** + * Partitions used as source for this statement. + * + * @var ArrayObj + */ + public $partition; + + /** + * Conditions used for filtering each row of the result set. + * + * @var Condition[] + */ + public $where; + + /** + * Conditions used for grouping the result set. + * + * @var GroupKeyword[] + */ + public $group; + + /** + * Conditions used for filtering the result set. + * + * @var Condition[] + */ + public $having; + + /** + * Specifies the order of the rows in the result set. + * + * @var OrderKeyword[] + */ + public $order; + + /** + * Conditions used for limiting the size of the result set. + * + * @var Limit + */ + public $limit; + + /** + * Procedure that should process the data in the result set. + * + * @var FunctionCall + */ + public $procedure; + + /** + * Destination of this result set. + * + * @var IntoKeyword + */ + public $into; + + /** + * Joins. + * + * @var JoinKeyword[] + */ + public $join; + + /** + * Unions. + * + * @var SelectStatement[] + */ + public $union = []; + + /** + * The end options of this query. + * + * @see static::$END_OPTIONS + * + * @var OptionsArray + */ + public $end_options; + + /** + * Gets the clauses of this statement. + * + * @return array + */ + public function getClauses() + { + // This is a cheap fix for `SELECT` statements that contain `UNION`. + // The `ORDER BY` and `LIMIT` clauses should be at the end of the + // statement. + if (! empty($this->union)) { + $clauses = static::$CLAUSES; + unset($clauses['ORDER BY'], $clauses['LIMIT']); + $clauses['ORDER BY'] = [ + 'ORDER BY', + 3, + ]; + $clauses['LIMIT'] = [ + 'LIMIT', + 3, + ]; + + return $clauses; + } + + return static::$CLAUSES; + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/SetStatement.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/SetStatement.php new file mode 100644 index 0000000000..2040a7e26a --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/SetStatement.php @@ -0,0 +1,114 @@ + [ + 'SET', + 3, + ], + '_END_OPTIONS' => [ + '_END_OPTIONS', + 1, + ], + ]; + + /** + * Possible exceptions in SET statement. + * + * @var array + */ + public static $OPTIONS = [ + 'CHARSET' => [ + 3, + 'var', + ], + 'CHARACTER SET' => [ + 3, + 'var', + ], + 'NAMES' => [ + 3, + 'var', + ], + 'PASSWORD' => [ + 3, + 'expr', + ], + 'SESSION' => 3, + 'GLOBAL' => 3, + 'PERSIST' => 3, + 'PERSIST_ONLY' => 3, + '@@SESSION' => 3, + '@@GLOBAL' => 3, + '@@PERSIST' => 3, + '@@PERSIST_ONLY' => 3, + ]; + + /** @var array */ + public static $END_OPTIONS = [ + 'COLLATE' => [ + 1, + 'var', + ], + 'DEFAULT' => 1, + ]; + + /** + * Options used in current statement. + * + * @var OptionsArray[] + */ + public $options; + + /** + * The end options of this query. + * + * @see static::$END_OPTIONS + * + * @var OptionsArray + */ + public $end_options; + + /** + * The updated values. + * + * @var SetOperation[] + */ + public $set; + + /** + * @return string + */ + public function build() + { + $ret = 'SET ' . OptionsArray::build($this->options) + . ' ' . SetOperation::build($this->set) + . ' ' . OptionsArray::build($this->end_options); + + return trim($ret); + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/ShowStatement.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/ShowStatement.php new file mode 100644 index 0000000000..15ce499598 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/ShowStatement.php @@ -0,0 +1,63 @@ + 1, + 'AUTHORS' => 2, + 'BINARY' => 2, + 'BINLOG' => 2, + 'CHARACTER' => 2, + 'CODE' => 2, + 'COLLATION' => 2, + 'COLUMNS' => 2, + 'CONTRIBUTORS' => 2, + 'DATABASE' => 2, + 'DATABASES' => 2, + 'ENGINE' => 2, + 'ENGINES' => 2, + 'ERRORS' => 2, + 'EVENT' => 2, + 'EVENTS' => 2, + 'FUNCTION' => 2, + 'GRANTS' => 2, + 'HOSTS' => 2, + 'INDEX' => 2, + 'INNODB' => 2, + 'LOGS' => 2, + 'MASTER' => 2, + 'OPEN' => 2, + 'PLUGINS' => 2, + 'PRIVILEGES' => 2, + 'PROCEDURE' => 2, + 'PROCESSLIST' => 2, + 'PROFILE' => 2, + 'PROFILES' => 2, + 'SCHEDULER' => 2, + 'SET' => 2, + 'SLAVE' => 2, + 'STATUS' => 2, + 'TABLE' => 2, + 'TABLES' => 2, + 'TRIGGER' => 2, + 'TRIGGERS' => 2, + 'VARIABLES' => 2, + 'VIEW' => 2, + 'WARNINGS' => 2, + ]; +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/TransactionStatement.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/TransactionStatement.php new file mode 100644 index 0000000000..84b350708b --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/TransactionStatement.php @@ -0,0 +1,104 @@ + 1, + 'BEGIN' => 1, + 'COMMIT' => 1, + 'ROLLBACK' => 1, + 'WITH CONSISTENT SNAPSHOT' => 2, + 'WORK' => 2, + 'AND NO CHAIN' => 3, + 'AND CHAIN' => 3, + 'RELEASE' => 4, + 'NO RELEASE' => 4, + ]; + + /** + * @param Parser $parser the instance that requests parsing + * @param TokensList $list the list of tokens to be parsed + */ + public function parse(Parser $parser, TokensList $list) + { + parent::parse($parser, $list); + + // Checks the type of this query. + if ($this->options->has('START TRANSACTION') || $this->options->has('BEGIN')) { + $this->type = self::TYPE_BEGIN; + } elseif ($this->options->has('COMMIT') || $this->options->has('ROLLBACK')) { + $this->type = self::TYPE_END; + } + } + + /** + * @return string + */ + public function build() + { + $ret = OptionsArray::build($this->options); + if ($this->type === self::TYPE_BEGIN) { + foreach ($this->statements as $statement) { + /* + * @var SelectStatement $statement + */ + $ret .= ';' . $statement->build(); + } + + $ret .= ';' . $this->end->build(); + } + + return $ret; + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/TruncateStatement.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/TruncateStatement.php new file mode 100644 index 0000000000..fcccd9466e --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/TruncateStatement.php @@ -0,0 +1,41 @@ + 1]; + + /** + * The name of the truncated table. + * + * @var Expression + */ + public $table; + + /** + * Special build method for truncate statement as Statement::build would return empty string. + * + * @return string + */ + public function build() + { + return 'TRUNCATE TABLE ' . $this->table . ';'; + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/UpdateStatement.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/UpdateStatement.php new file mode 100644 index 0000000000..2789d7236f --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/UpdateStatement.php @@ -0,0 +1,118 @@ + 1, + 'IGNORE' => 2, + ]; + + /** + * The clauses of this statement, in order. + * + * @see Statement::$CLAUSES + * + * @var array + */ + public static $CLAUSES = [ + 'UPDATE' => [ + 'UPDATE', + 2, + ], + // Used for options. + '_OPTIONS' => [ + '_OPTIONS', + 1, + ], + // Used for updated tables. + '_UPDATE' => [ + 'UPDATE', + 1, + ], + 'SET' => [ + 'SET', + 3, + ], + 'WHERE' => [ + 'WHERE', + 3, + ], + 'ORDER BY' => [ + 'ORDER BY', + 3, + ], + 'LIMIT' => [ + 'LIMIT', + 3, + ], + ]; + + /** + * Tables used as sources for this statement. + * + * @var Expression[] + */ + public $tables; + + /** + * The updated values. + * + * @var SetOperation[] + */ + public $set; + + /** + * Conditions used for filtering each row of the result set. + * + * @var Condition[] + */ + public $where; + + /** + * Specifies the order of the rows in the result set. + * + * @var OrderKeyword[] + */ + public $order; + + /** + * Conditions used for limiting the size of the result set. + * + * @var Limit + */ + public $limit; +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/WithStatement.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/WithStatement.php new file mode 100644 index 0000000000..92cfb79b06 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Statements/WithStatement.php @@ -0,0 +1,214 @@ + 1]; + + /** + * The clauses of this statement, in order. + * + * @see Statement::$CLAUSES + * + * @var mixed[] + */ + public static $CLAUSES = [ + 'WITH' => [ + 'WITH', + 2, + ], + // Used for options. + '_OPTIONS' => [ + '_OPTIONS', + 1, + ], + 'AS' => [ + 'AS', + 2, + ], + ]; + + /** @var WithKeyword[] */ + public $withers = []; + + /** + * @param Parser $parser the instance that requests parsing + * @param TokensList $list the list of tokens to be parsed + */ + public function parse(Parser $parser, TokensList $list) + { + ++$list->idx; // Skipping `WITH`. + + // parse any options if provided + $this->options = OptionsArray::parse($parser, $list, static::$OPTIONS); + ++$list->idx; + + /** + * The state of the parser. + * + * Below are the states of the parser. + * + * 0 ---------------- [ name ] -----------------> 1 + * 1 -------------- [( columns )] AS ----------------> 2 + * 2 ------------------ [ , ] --------------------> 0 + * + * @var int + */ + $state = 0; + $wither = null; + + for (; $list->idx < $list->count; ++$list->idx) { + /** + * Token parsed at this moment. + * + * @var Token + */ + $token = $list->tokens[$list->idx]; + + // Skipping whitespaces and comments. + if ($token->type === Token::TYPE_WHITESPACE || $token->type === Token::TYPE_COMMENT) { + continue; + } + + if ($token->type === Token::TYPE_NONE) { + $wither = $token->value; + $this->withers[$wither] = new WithKeyword($wither); + $state = 1; + continue; + } + + if ($state === 1) { + if ($token->value === '(') { + $this->withers[$wither]->columns = Array2d::parse($parser, $list); + continue; + } + + if ($token->keyword === 'AS') { + ++$list->idx; + $state = 2; + continue; + } + } elseif ($state === 2) { + if ($token->value === '(') { + ++$list->idx; + $subList = $this->getSubTokenList($list); + if ($subList instanceof ParserException) { + $parser->errors[] = $subList; + continue; + } + + $subParser = new Parser($subList); + + if (count($subParser->errors)) { + foreach ($subParser->errors as $error) { + $parser->errors[] = $error; + } + } + + $this->withers[$wither]->statement = $subParser; + continue; + } + + // There's another WITH expression to parse, go back to state=0 + if ($token->value === ',') { + $list->idx++; + $state = 0; + continue; + } + + // No more WITH expressions, we're done with this statement + break; + } + } + + --$list->idx; + } + + /** + * {@inheritdoc} + */ + public function build() + { + $str = 'WITH '; + + foreach ($this->withers as $wither) { + $str .= $str === 'WITH ' ? '' : ', '; + $str .= WithKeyword::build($wither); + } + + return $str; + } + + /** + * Get tokens within the WITH expression to use them in another parser + * + * @return ParserException|TokensList + */ + private function getSubTokenList(TokensList $list) + { + $idx = $list->idx; + /** @var Token $token */ + $token = $list->tokens[$list->idx]; + $openParenthesis = 0; + + while ($list->idx < $list->count) { + if ($token->value === '(') { + ++$openParenthesis; + } elseif ($token->value === ')') { + if (--$openParenthesis === -1) { + break; + } + } + + ++$list->idx; + if (! isset($list->tokens[$list->idx])) { + break; + } + + $token = $list->tokens[$list->idx]; + } + + // performance improvement: return the error to avoid a try/catch in the loop + if ($list->idx === $list->count) { + --$list->idx; + + return new ParserException( + Translator::gettext('A closing bracket was expected.'), + $token + ); + } + + $length = $list->idx - $idx; + + return new TokensList(array_slice($list->tokens, $idx, $length), $length); + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Token.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Token.php new file mode 100644 index 0000000000..bab78af8e3 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Token.php @@ -0,0 +1,328 @@ +, !==, etc. + * Bitwise operators: &, |, ^, etc. + * Assignment operators: =, +=, -=, etc. + * SQL specific operators: . (e.g. .. WHERE database.table ..), + * * (e.g. SELECT * FROM ..) + */ + public const TYPE_OPERATOR = 2; + + /** + * Spaces, tabs, new lines, etc. + */ + public const TYPE_WHITESPACE = 3; + + /** + * Any type of legal comment. + * + * Bash (#), C (/* *\/) or SQL (--) comments: + * + * -- SQL-comment + * + * #Bash-like comment + * + * /*C-like comment*\/ + * + * or: + * + * /*C-like + * comment*\/ + * + * Backslashes were added to respect PHP's comments syntax. + */ + public const TYPE_COMMENT = 4; + + /** + * Boolean values: true or false. + */ + public const TYPE_BOOL = 5; + + /** + * Numbers: 4, 0x8, 15.16, 23e42, etc. + */ + public const TYPE_NUMBER = 6; + + /** + * Literal strings: 'string', "test". + * Some of these strings are actually symbols. + */ + public const TYPE_STRING = 7; + + /** + * Database, table names, variables, etc. + * For example: ```SELECT `foo`, `bar` FROM `database`.`table`;```. + */ + public const TYPE_SYMBOL = 8; + + /** + * Delimits an unknown string. + * For example: ```SELECT * FROM test;```, `test` is a delimiter. + */ + public const TYPE_DELIMITER = 9; + + /** + * Labels in LOOP statement, ITERATE statement etc. + * For example (only for begin label): + * begin_label: BEGIN [statement_list] END [end_label] + * begin_label: LOOP [statement_list] END LOOP [end_label] + * begin_label: REPEAT [statement_list] ... END REPEAT [end_label] + * begin_label: WHILE ... DO [statement_list] END WHILE [end_label]. + */ + public const TYPE_LABEL = 10; + + // Flags that describe the tokens in more detail. + // All keywords must have flag 1 so `Context::isKeyword` method doesn't + // require strict comparison. + public const FLAG_KEYWORD_RESERVED = 2; + public const FLAG_KEYWORD_COMPOSED = 4; + public const FLAG_KEYWORD_DATA_TYPE = 8; + public const FLAG_KEYWORD_KEY = 16; + public const FLAG_KEYWORD_FUNCTION = 32; + + // Numbers related flags. + public const FLAG_NUMBER_HEX = 1; + public const FLAG_NUMBER_FLOAT = 2; + public const FLAG_NUMBER_APPROXIMATE = 4; + public const FLAG_NUMBER_NEGATIVE = 8; + public const FLAG_NUMBER_BINARY = 16; + + // Strings related flags. + public const FLAG_STRING_SINGLE_QUOTES = 1; + public const FLAG_STRING_DOUBLE_QUOTES = 2; + + // Comments related flags. + public const FLAG_COMMENT_BASH = 1; + public const FLAG_COMMENT_C = 2; + public const FLAG_COMMENT_SQL = 4; + public const FLAG_COMMENT_MYSQL_CMD = 8; + + // Operators related flags. + public const FLAG_OPERATOR_ARITHMETIC = 1; + public const FLAG_OPERATOR_LOGICAL = 2; + public const FLAG_OPERATOR_BITWISE = 4; + public const FLAG_OPERATOR_ASSIGNMENT = 8; + public const FLAG_OPERATOR_SQL = 16; + + // Symbols related flags. + public const FLAG_SYMBOL_VARIABLE = 1; + public const FLAG_SYMBOL_BACKTICK = 2; + public const FLAG_SYMBOL_USER = 4; + public const FLAG_SYMBOL_SYSTEM = 8; + public const FLAG_SYMBOL_PARAMETER = 16; + + /** + * The token it its raw string representation. + * + * @var string + */ + public $token; + + /** + * The value this token contains (i.e. token after some evaluation). + * + * @var mixed + */ + public $value; + + /** + * The keyword value this token contains, always uppercase. + * + * @var mixed + */ + public $keyword; + + /** + * The type of this token. + * + * @var int + */ + public $type; + + /** + * The flags of this token. + * + * @var int + */ + public $flags; + + /** + * The position in the initial string where this token started. + * + * The position is counted in chars, not bytes, so you should + * use mb_* functions to properly handle utf-8 multibyte chars. + * + * @var int + */ + public $position; + + /** + * @param string $token the value of the token + * @param int $type the type of the token + * @param int $flags the flags of the token + */ + public function __construct($token, $type = 0, $flags = 0) + { + $this->token = $token; + $this->type = $type; + $this->flags = $flags; + $this->keyword = null; + $this->value = $this->extract(); + } + + /** + * Does little processing to the token to extract a value. + * + * If no processing can be done it will return the initial string. + * + * @return mixed + */ + public function extract() + { + switch ($this->type) { + case self::TYPE_KEYWORD: + $this->keyword = strtoupper($this->token); + if (! ($this->flags & self::FLAG_KEYWORD_RESERVED)) { + // Unreserved keywords should stay the way they are because they + // might represent field names. + return $this->token; + } + + return $this->keyword; + + case self::TYPE_WHITESPACE: + return ' '; + + case self::TYPE_BOOL: + return strtoupper($this->token) === 'TRUE'; + + case self::TYPE_NUMBER: + $ret = str_replace('--', '', $this->token); // e.g. ---42 === -42 + if ($this->flags & self::FLAG_NUMBER_HEX) { + if ($this->flags & self::FLAG_NUMBER_NEGATIVE) { + $ret = str_replace('-', '', $this->token); + $ret = -hexdec($ret); + } else { + $ret = hexdec($ret); + } + } elseif (($this->flags & self::FLAG_NUMBER_APPROXIMATE) || ($this->flags & self::FLAG_NUMBER_FLOAT)) { + $ret = (float) $ret; + } elseif (! ($this->flags & self::FLAG_NUMBER_BINARY)) { + $ret = (int) $ret; + } + + return $ret; + + case self::TYPE_STRING: + // Trims quotes. + $str = $this->token; + $str = mb_substr($str, 1, -1, 'UTF-8'); + + // Removes surrounding quotes. + $quote = $this->token[0]; + $str = str_replace($quote . $quote, $quote, $str); + + // Finally unescapes the string. + // + // `stripcslashes` replaces escape sequences with their + // representation. + // + // NOTE: In MySQL, `\f` and `\v` have no representation, + // even they usually represent: form-feed and vertical tab. + $str = str_replace('\f', 'f', $str); + $str = str_replace('\v', 'v', $str); + $str = stripcslashes($str); + + return $str; + + case self::TYPE_SYMBOL: + $str = $this->token; + if (isset($str[0]) && ($str[0] === '@')) { + // `mb_strlen($str)` must be used instead of `null` because + // in PHP 5.3- the `null` parameter isn't handled correctly. + $str = mb_substr( + $str, + ! empty($str[1]) && ($str[1] === '@') ? 2 : 1, + mb_strlen($str), + 'UTF-8' + ); + } + + if (isset($str[0]) && ($str[0] === ':')) { + $str = mb_substr($str, 1, mb_strlen($str), 'UTF-8'); + } + + if (isset($str[0]) && (($str[0] === '`') || ($str[0] === '"') || ($str[0] === '\''))) { + $quote = $str[0]; + $str = str_replace($quote . $quote, $quote, $str); + $str = mb_substr($str, 1, -1, 'UTF-8'); + } + + return $str; + } + + return $this->token; + } + + /** + * Converts the token into an inline token by replacing tabs and new lines. + * + * @return string + */ + public function getInlineToken() + { + return str_replace( + [ + "\r", + "\n", + "\t", + ], + [ + '\r', + '\n', + '\t', + ], + $this->token + ); + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/TokensList.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/TokensList.php new file mode 100644 index 0000000000..21cac879e6 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/TokensList.php @@ -0,0 +1,208 @@ +tokens = $tokens; + $this->count = $count === -1 ? count($tokens) : $count; + } + + /** + * Builds an array of tokens by merging their raw value. + * + * @param string|Token[]|TokensList $list the tokens to be built + * + * @return string + */ + public static function build($list) + { + if (is_string($list)) { + return $list; + } + + if ($list instanceof self) { + $list = $list->tokens; + } + + $ret = ''; + if (is_array($list)) { + foreach ($list as $tok) { + $ret .= $tok->token; + } + } + + return $ret; + } + + /** + * Adds a new token. + * + * @param Token $token token to be added in list + */ + public function add(Token $token) + { + $this->tokens[$this->count++] = $token; + } + + /** + * Gets the next token. Skips any irrelevant token (whitespaces and + * comments). + * + * @return Token|null + */ + public function getNext() + { + for (; $this->idx < $this->count; ++$this->idx) { + if ( + ($this->tokens[$this->idx]->type !== Token::TYPE_WHITESPACE) + && ($this->tokens[$this->idx]->type !== Token::TYPE_COMMENT) + ) { + return $this->tokens[$this->idx++]; + } + } + + return null; + } + + /** + * Gets the next token. + * + * @param int $type the type + * + * @return Token|null + */ + public function getNextOfType($type) + { + for (; $this->idx < $this->count; ++$this->idx) { + if ($this->tokens[$this->idx]->type === $type) { + return $this->tokens[$this->idx++]; + } + } + + return null; + } + + /** + * Gets the next token. + * + * @param int $type the type of the token + * @param string $value the value of the token + * + * @return Token|null + */ + public function getNextOfTypeAndValue($type, $value) + { + for (; $this->idx < $this->count; ++$this->idx) { + if (($this->tokens[$this->idx]->type === $type) && ($this->tokens[$this->idx]->value === $value)) { + return $this->tokens[$this->idx++]; + } + } + + return null; + } + + /** + * Sets an value inside the container. + * + * @param int $offset the offset to be set + * @param Token $value the token to be saved + */ + #[\ReturnTypeWillChange] + public function offsetSet($offset, $value) + { + if ($offset === null) { + $this->tokens[$this->count++] = $value; + } else { + $this->tokens[$offset] = $value; + } + } + + /** + * Gets a value from the container. + * + * @param int $offset the offset to be returned + * + * @return Token + */ + #[\ReturnTypeWillChange] + public function offsetGet($offset) + { + return $offset < $this->count ? $this->tokens[$offset] : null; + } + + /** + * Checks if an offset was previously set. + * + * @param int $offset the offset to be checked + * + * @return bool + */ + #[\ReturnTypeWillChange] + public function offsetExists($offset) + { + return $offset < $this->count; + } + + /** + * Unsets the value of an offset. + * + * @param int $offset the offset to be unset + */ + #[\ReturnTypeWillChange] + public function offsetUnset($offset) + { + unset($this->tokens[$offset]); + --$this->count; + for ($i = $offset; $i < $this->count; ++$i) { + $this->tokens[$i] = $this->tokens[$i + 1]; + } + + unset($this->tokens[$this->count]); + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Tools/ContextGenerator.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Tools/ContextGenerator.php new file mode 100644 index 0000000000..e01105c1cc --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Tools/ContextGenerator.php @@ -0,0 +1,403 @@ + 2, // reserved + '(D)' => 8, // data type + '(K)' => 16, // keyword + '(F)' => 32, // function name + ]; + + /** + * Documentation links for each context. + * + * @var array + */ + public static $LINKS = [ + 'MySql50000' => 'https://dev.mysql.com/doc/refman/5.0/en/keywords.html', + 'MySql50100' => 'https://dev.mysql.com/doc/refman/5.1/en/keywords.html', + 'MySql50500' => 'https://dev.mysql.com/doc/refman/5.5/en/keywords.html', + 'MySql50600' => 'https://dev.mysql.com/doc/refman/5.6/en/keywords.html', + 'MySql50700' => 'https://dev.mysql.com/doc/refman/5.7/en/keywords.html', + 'MySql80000' => 'https://dev.mysql.com/doc/refman/8.0/en/keywords.html', + 'MariaDb100000' => 'https://mariadb.com/kb/en/reserved-words/', + 'MariaDb100100' => 'https://mariadb.com/kb/en/reserved-words/', + 'MariaDb100200' => 'https://mariadb.com/kb/en/reserved-words/', + 'MariaDb100300' => 'https://mariadb.com/kb/en/reserved-words/', + 'MariaDb100400' => 'https://mariadb.com/kb/en/reserved-words/', + 'MariaDb100500' => 'https://mariadb.com/kb/en/reserved-words/', + 'MariaDb100600' => 'https://mariadb.com/kb/en/reserved-words/', + ]; + + /** + * The template of a context. + * + * Parameters: + * 1 - name + * 2 - class + * 3 - link + * 4 - keywords array + */ + public const TEMPLATE = <<<'PHP' + + * @phpstan-var non-empty-array + */ + public static $KEYWORDS = [ +%4$s ]; +} + +PHP; + + /** + * Sorts an array of words. + * + * @param array $arr + * + * @return array + */ + public static function sortWords(array &$arr) + { + ksort($arr); + foreach ($arr as &$wordsByLen) { + ksort($wordsByLen); + foreach ($wordsByLen as &$words) { + sort($words, SORT_STRING); + } + } + + return $arr; + } + + /** + * Reads a list of words and sorts it by type, length and keyword. + * + * @param string[] $files + * + * @return array + */ + public static function readWords(array $files) + { + $words = []; + foreach ($files as $file) { + $words = array_merge($words, file($file, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES)); + } + + $types = []; + + for ($i = 0, $count = count($words); $i !== $count; ++$i) { + $type = 1; + $value = trim($words[$i]); + + // Reserved, data types, keys, functions, etc. keywords. + foreach (static::$LABELS_FLAGS as $label => $flags) { + if (strstr($value, $label) === false) { + continue; + } + + $type |= $flags; + $value = trim(str_replace($label, '', $value)); + } + + // Composed keyword. + if (strstr($value, ' ') !== false) { + $type |= 2; // Reserved keyword. + $type |= 4; // Composed keyword. + } + + $len = strlen($words[$i]); + if ($len === 0) { + continue; + } + + $value = strtoupper($value); + if (! isset($types[$value])) { + $types[$value] = $type; + } else { + $types[$value] |= $type; + } + } + + $ret = []; + foreach ($types as $word => $type) { + $len = strlen($word); + if (! isset($ret[$type])) { + $ret[$type] = []; + } + + if (! isset($ret[$type][$len])) { + $ret[$type][$len] = []; + } + + $ret[$type][$len][] = $word; + } + + return static::sortWords($ret); + } + + /** + * Prints an array of a words in PHP format. + * + * @param array $words the list of words to be formatted + * @param int $spaces the number of spaces that starts every line + * @param int $line the length of a line + * + * @return string + */ + public static function printWords($words, $spaces = 8, $line = 140) + { + $typesCount = count($words); + $ret = ''; + $j = 0; + + foreach ($words as $type => $wordsByType) { + foreach ($wordsByType as $len => $wordsByLen) { + $count = round(($line - $spaces) / ($len + 9)); // strlen("'' => 1, ") = 9 + $i = 0; + + foreach ($wordsByLen as $word) { + if ($i === 0) { + $ret .= str_repeat(' ', $spaces); + } + + $ret .= sprintf('\'%s\' => %s, ', $word, $type); + if (++$i !== $count && ++$i <= $count) { + continue; + } + + $ret .= "\n"; + $i = 0; + } + + if ($i === 0) { + continue; + } + + $ret .= "\n"; + } + + if (++$j >= $typesCount) { + continue; + } + + $ret .= "\n"; + } + + // Trim trailing spaces and return. + return str_replace(" \n", "\n", $ret); + } + + /** + * Generates a context's class. + * + * @param array $options the options that are used in generating this context + * + * @return string + */ + public static function generate($options) + { + if (isset($options['keywords'])) { + $options['keywords'] = static::printWords($options['keywords']); + } + + return sprintf(self::TEMPLATE, $options['name'], $options['class'], $options['link'], $options['keywords']); + } + + /** + * Formats context name. + * + * @param string $name name to format + * + * @return string + */ + public static function formatName($name) + { + /* Split name and version */ + $parts = []; + if (preg_match('/([^[0-9]*)([0-9]*)/', $name, $parts) === false) { + return $name; + } + + /* Format name */ + $base = $parts[1]; + switch ($base) { + case 'MySql': + $base = 'MySQL'; + break; + case 'MariaDb': + $base = 'MariaDB'; + break; + } + + /* Parse version to array */ + $versionString = $parts[2]; + if (strlen($versionString) % 2 === 1) { + $versionString = '0' . $versionString; + } + + $version = array_map('intval', str_split($versionString, 2)); + /* Remove trailing zero */ + if ($version[count($version) - 1] === 0) { + $version = array_slice($version, 0, count($version) - 1); + } + + /* Create name */ + return $base . ' ' . implode('.', $version); + } + + /** + * Builds a test. + * + * Reads the input file, generates the data and writes it back. + * + * @param string $input the input file + * @param string $output the output directory + */ + public static function build($input, $output) + { + /** + * The directory that contains the input file. + * + * Used to include common files. + * + * @var string + */ + $directory = dirname($input) . '/'; + + /** + * The name of the file that contains the context. + * + * @var string + */ + $file = basename($input); + + /** + * The name of the context. + * + * @var string + */ + $name = substr($file, 0, -4); + + /** + * The name of the class that defines this context. + * + * @var string + */ + $class = 'Context' . $name; + + /** + * The formatted name of this context. + * + * @var string + */ + $formattedName = static::formatName($name); + + file_put_contents( + $output . '/' . $class . '.php', + static::generate( + [ + 'name' => $formattedName, + 'class' => $class, + 'link' => static::$LINKS[$name], + 'keywords' => static::readWords( + [ + $directory . '_common.txt', + $directory . '_functions' . $file, + $directory . $file, + ] + ), + ] + ) + ); + } + + /** + * Generates recursively all tests preserving the directory structure. + * + * @param string $input the input directory + * @param string $output the output directory + */ + public static function buildAll($input, $output) + { + $files = scandir($input); + + foreach ($files as $file) { + // Skipping current and parent directories. + if (($file[0] === '.') || ($file[0] === '_')) { + continue; + } + + // Building the context. + sprintf("Building context for %s...\n", $file); + static::build($input . '/' . $file, $output); + } + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Tools/TestGenerator.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Tools/TestGenerator.php new file mode 100644 index 0000000000..bca85937c5 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Tools/TestGenerator.php @@ -0,0 +1,244 @@ +list) : null; + + /** + * Lexer's errors. + * + * @var array + */ + $lexerErrors = []; + + /** + * Parser's errors. + * + * @var array + */ + $parserErrors = []; + + // Both the lexer and the parser construct exception for errors. + // Usually, exceptions contain a full stack trace and other details that + // are not required. + // The code below extracts only the relevant information. + + // Extracting lexer's errors. + if (! empty($lexer->errors)) { + /** @var LexerException $err */ + foreach ($lexer->errors as $err) { + $lexerErrors[] = [ + $err->getMessage(), + $err->ch, + $err->pos, + $err->getCode(), + ]; + } + + $lexer->errors = []; + } + + // Extracting parser's errors. + if (! empty($parser->errors)) { + /** @var ParserException $err */ + foreach ($parser->errors as $err) { + $parserErrors[] = [ + $err->getMessage(), + $err->token, + $err->getCode(), + ]; + } + + $parser->errors = []; + } + + return [ + 'query' => $query, + 'lexer' => $lexer, + 'parser' => $parser, + 'errors' => [ + 'lexer' => $lexerErrors, + 'parser' => $parserErrors, + ], + ]; + } + + /** + * Builds a test. + * + * Reads the input file, generates the data and writes it back. + * + * @param string $type the type of this test + * @param string $input the input file + * @param string $output the output file + * @param string $debug the debug file + * @param bool $ansi activate quotes ANSI mode + */ + public static function build($type, $input, $output, $debug = null, $ansi = false) + { + // Support query types: `lexer` / `parser`. + if (! in_array($type, ['lexer', 'parser'])) { + throw new Exception('Unknown test type (expected `lexer` or `parser`).'); + } + + /** + * The query that is used to generate the test. + * + * @var string + */ + $query = file_get_contents($input); + + // There is no point in generating a test without a query. + if (empty($query)) { + throw new Exception('No input query specified.'); + } + + if ($ansi === true) { + // set ANSI_QUOTES for ansi tests + Context::setMode('ANSI_QUOTES'); + } + + $mariaDbPos = strpos($input, '_mariadb_'); + if ($mariaDbPos !== false) {// Keep in sync with TestCase.php + // set context + $mariaDbVersion = (int) substr($input, $mariaDbPos + 9, 6); + Context::load('MariaDb' . $mariaDbVersion); + } + + $test = static::generate($query, $type); + + // unset mode, reset to default every time, to be sure + Context::setMode(); + $serializer = new JsonSerializer(); + // Writing test's data. + $encoded = $serializer->serialize($test); + $encoded = json_encode( + json_decode($encoded), + JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_PRESERVE_ZERO_FRACTION + ); + file_put_contents($output, $encoded); + + // Dumping test's data in human readable format too (if required). + if (empty($debug)) { + return; + } + + file_put_contents($debug, print_r($test, true)); + } + + /** + * Generates recursively all tests preserving the directory structure. + * + * @param string $input the input directory + * @param string $output the output directory + * @param mixed|null $debug + */ + public static function buildAll($input, $output, $debug = null) + { + $files = scandir($input); + + foreach ($files as $file) { + // Skipping current and parent directories. + if (($file === '.') || ($file === '..')) { + continue; + } + + // Appending the filename to directories. + $inputFile = $input . '/' . $file; + $outputFile = $output . '/' . $file; + $debugFile = $debug !== null ? $debug . '/' . $file : null; + + if (is_dir($inputFile)) { + // Creating required directories to maintain the structure. + // Ignoring errors if the folder structure exists already. + if (! is_dir($outputFile)) { + mkdir($outputFile); + } + + if (($debug !== null) && (! is_dir($debugFile))) { + mkdir($debugFile); + } + + // Generating tests recursively. + static::buildAll($inputFile, $outputFile, $debugFile); + } elseif (substr($inputFile, -3) === '.in') { + // Generating file names by replacing `.in` with `.out` and + // `.debug`. + $outputFile = substr($outputFile, 0, -3) . '.out'; + if ($debug !== null) { + $debugFile = substr($debugFile, 0, -3) . '.debug'; + } + + // Building the test. + if (! file_exists($outputFile)) { + sprintf("Building test for %s...\n", $inputFile); + static::build( + strpos($inputFile, 'lex') !== false ? 'lexer' : 'parser', + $inputFile, + $outputFile, + $debugFile, + strpos($inputFile, 'ansi') !== false + ); + } else { + sprintf("Test for %s already built!\n", $inputFile); + } + } + } + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Translator.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Translator.php new file mode 100644 index 0000000000..82079d53ab --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Translator.php @@ -0,0 +1,76 @@ +setlocale( + self::$loader->detectlocale() + ); + + // Set default text domain + self::$loader->textdomain('sqlparser'); + + // Set path where to look for a domain + self::$loader->bindtextdomain('sqlparser', __DIR__ . '/../locale/'); + } + + if (self::$translator !== null) { + return; + } + + // Get translator + self::$translator = self::$loader->getTranslator(); + } + + /** + * Translates a string. + * + * @param string $msgid String to be translated + * + * @return string translated string (or original, if not found) + */ + public static function gettext($msgid) + { + if (! class_exists('\PhpMyAdmin\MoTranslator\Loader', true)) { + return $msgid; + } + + self::load(); + + return self::$translator->gettext($msgid); + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/UtfString.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/UtfString.php new file mode 100644 index 0000000000..67832aa4bd --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/UtfString.php @@ -0,0 +1,350 @@ + + */ + protected static $asciiMap = [ + "\0" => 0, // (00000000) NUL Null + "\t" => 9, // (00001001) HT Horizontal Tab + "\n" => 10, // (00001010) LF Newline / Line Feed + "\v" => 11, // (00001011) VT Vertical Tab + "\f" => 12, // (00001100) FF Form Feed + "\r" => 13, // (00001101) CR Carriage Return + ' ' => 32, // (00100000) SP Space + '!' => 33, // (00100001) ! Exclamation mark + '"' => 34, // (00100010) " Double quote + '#' => 35, // (00100011) # Number + '$' => 36, // (00100100) $ Dollar + '%' => 37, // (00100101) % Percent + '&' => 38, // (00100110) & Ampersand + '\'' => 39, // (00100111) ' Single quote + '(' => 40, // (00101000) ( Left parenthesis + ')' => 41, // (00101001) ) Right parenthesis + '*' => 42, // (00101010) * Asterisk + '+' => 43, // (00101011) + Plus + ',' => 44, // (00101100) , Comma + '-' => 45, // (00101101) - Minus + '.' => 46, // (00101110) . Period + '/' => 47, // (00101111) / Slash + '0' => 48, // (00110000) 0 Zero + '1' => 49, // (00110001) 1 One + '2' => 50, // (00110010) 2 Two + '3' => 51, // (00110011) 3 Three + '4' => 52, // (00110100) 4 Four + '5' => 53, // (00110101) 5 Five + '6' => 54, // (00110110) 6 Six + '7' => 55, // (00110111) 7 Seven + '8' => 56, // (00111000) 8 Eight + '9' => 57, // (00111001) 9 Nine + ':' => 58, // (00111010) : Colon + ';' => 59, // (00111011) ; Semicolon + '<' => 60, // (00111100) < Less than + '=' => 61, // (00111101) = Equal sign + '>' => 62, // (00111110) > Greater than + '?' => 63, // (00111111) ? Question mark + '@' => 64, // (01000000) @ At sign + 'A' => 65, // (01000001) A Uppercase A + 'B' => 66, // (01000010) B Uppercase B + 'C' => 67, // (01000011) C Uppercase C + 'D' => 68, // (01000100) D Uppercase D + 'E' => 69, // (01000101) E Uppercase E + 'F' => 70, // (01000110) F Uppercase F + 'G' => 71, // (01000111) G Uppercase G + 'H' => 72, // (01001000) H Uppercase H + 'I' => 73, // (01001001) I Uppercase I + 'J' => 74, // (01001010) J Uppercase J + 'K' => 75, // (01001011) K Uppercase K + 'L' => 76, // (01001100) L Uppercase L + 'M' => 77, // (01001101) M Uppercase M + 'N' => 78, // (01001110) N Uppercase N + 'O' => 79, // (01001111) O Uppercase O + 'P' => 80, // (01010000) P Uppercase P + 'Q' => 81, // (01010001) Q Uppercase Q + 'R' => 82, // (01010010) R Uppercase R + 'S' => 83, // (01010011) S Uppercase S + 'T' => 84, // (01010100) T Uppercase T + 'U' => 85, // (01010101) U Uppercase U + 'V' => 86, // (01010110) V Uppercase V + 'W' => 87, // (01010111) W Uppercase W + 'X' => 88, // (01011000) X Uppercase X + 'Y' => 89, // (01011001) Y Uppercase Y + 'Z' => 90, // (01011010) Z Uppercase Z + '[' => 91, // (01011011) [ Left square bracket + '\\' => 92, // (01011100) \ backslash + ']' => 93, // (01011101) ] Right square bracket + '^' => 94, // (01011110) ^ Caret / circumflex + '_' => 95, // (01011111) _ Underscore + '`' => 96, // (01100000) ` Grave / accent + 'a' => 97, // (01100001) a Lowercase a + 'b' => 98, // (01100010) b Lowercase b + 'c' => 99, // (01100011) c Lowercase c + 'd' => 100, // (01100100) d Lowercase d + 'e' => 101, // (01100101) e Lowercase e + 'f' => 102, // (01100110) f Lowercase + 'g' => 103, // (01100111) g Lowercase g + 'h' => 104, // (01101000) h Lowercase h + 'i' => 105, // (01101001) i Lowercase i + 'j' => 106, // (01101010) j Lowercase j + 'k' => 107, // (01101011) k Lowercase k + 'l' => 108, // (01101100) l Lowercase l + 'm' => 109, // (01101101) m Lowercase m + 'n' => 110, // (01101110) n Lowercase n + 'o' => 111, // (01101111) o Lowercase o + 'p' => 112, // (01110000) p Lowercase p + 'q' => 113, // (01110001) q Lowercase q + 'r' => 114, // (01110010) r Lowercase r + 's' => 115, // (01110011) s Lowercase s + 't' => 116, // (01110100) t Lowercase t + 'u' => 117, // (01110101) u Lowercase u + 'v' => 118, // (01110110) v Lowercase v + 'w' => 119, // (01110111) w Lowercase w + 'x' => 120, // (01111000) x Lowercase x + 'y' => 121, // (01111001) y Lowercase y + 'z' => 122, // (01111010) z Lowercase z + '{' => 123, // (01111011) { Left curly bracket + '|' => 124, // (01111100) | Vertical bar + '}' => 125, // (01111101) } Right curly bracket + '~' => 126, // (01111110) ~ Tilde + "\x7f" => 127, // (01111111) DEL Delete + ]; + + /** + * @param string $str the string + */ + public function __construct($str) + { + $this->str = $str; + $this->byteIdx = 0; + $this->charIdx = 0; + $this->byteLen = mb_strlen($str, '8bit'); + if (! mb_check_encoding($str, 'UTF-8')) { + $this->charLen = 0; + } else { + $this->charLen = mb_strlen($str, 'UTF-8'); + } + } + + /** + * Checks if the given offset exists. + * + * @param int $offset the offset to be checked + * + * @return bool + */ + #[\ReturnTypeWillChange] + public function offsetExists($offset) + { + return ($offset >= 0) && ($offset < $this->charLen); + } + + /** + * Gets the character at given offset. + * + * @param int $offset the offset to be returned + * + * @return string|null + */ + #[\ReturnTypeWillChange] + public function offsetGet($offset) + { + if (($offset < 0) || ($offset >= $this->charLen)) { + return null; + } + + $delta = $offset - $this->charIdx; + + if ($delta > 0) { + // Fast forwarding. + while ($delta-- > 0) { + $this->byteIdx += static::getCharLength($this->str[$this->byteIdx]); + ++$this->charIdx; + } + } elseif ($delta < 0) { + // Rewinding. + while ($delta++ < 0) { + do { + $byte = ord($this->str[--$this->byteIdx]); + } while (($byte >= 128) && ($byte < 192)); + + --$this->charIdx; + } + } + + $bytesCount = static::getCharLength($this->str[$this->byteIdx]); + + $ret = ''; + for ($i = 0; $bytesCount-- > 0; ++$i) { + $ret .= $this->str[$this->byteIdx + $i]; + } + + return $ret; + } + + /** + * Sets the value of a character. + * + * @param int $offset the offset to be set + * @param string $value the value to be set + * + * @throws Exception not implemented. + */ + #[\ReturnTypeWillChange] + public function offsetSet($offset, $value) + { + throw new Exception('Not implemented.'); + } + + /** + * Unsets an index. + * + * @param int $offset the value to be unset + * + * @throws Exception not implemented. + */ + #[\ReturnTypeWillChange] + public function offsetUnset($offset) + { + throw new Exception('Not implemented.'); + } + + /** + * Gets the length of an UTF-8 character. + * + * According to RFC 3629, a UTF-8 character can have at most 4 bytes. + * However, this implementation supports UTF-8 characters containing up to 6 + * bytes. + * + * @see https://tools.ietf.org/html/rfc3629 + * + * @param string $byte the byte to be analyzed + * + * @return int + */ + public static function getCharLength($byte) + { + // Use the default ASCII map as queries are mostly ASCII chars + // ord($byte) has a performance cost + + if (! isset(static::$asciiMap[$byte])) { + // Complete the cache with missing items + static::$asciiMap[$byte] = ord($byte); + } + + $byte = static::$asciiMap[$byte]; + + if ($byte < 128) { + return 1; + } + + if ($byte < 224) { + return 2; + } + + if ($byte < 240) { + return 3; + } + + if ($byte < 248) { + return 4; + } + + if ($byte < 252) { + return 5; // unofficial + } + + return 6; // unofficial + } + + /** + * Returns the length in characters of the string. + * + * @return int + */ + public function length() + { + return $this->charLen; + } + + /** + * Returns the contained string. + * + * @return string + */ + public function __toString() + { + return $this->str; + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Utils/BufferedQuery.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Utils/BufferedQuery.php new file mode 100644 index 0000000000..cdfeb45f36 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Utils/BufferedQuery.php @@ -0,0 +1,426 @@ +options = array_merge( + [ + /* + * The starting delimiter. + * + * @var string + */ + 'delimiter' => ';', + + /* + * Whether `DELIMITER` statements should be parsed. + * + * @var bool + */ + 'parse_delimiter' => false, + + /* + * Whether a delimiter should be added at the end of the + * statement. + * + * @var bool + */ + 'add_delimiter' => false, + ], + $options + ); + + $this->query = $query; + $this->setDelimiter($this->options['delimiter']); + } + + /** + * Sets the delimiter. + * + * Used to update the length of it too. + * + * @param string $delimiter + */ + public function setDelimiter($delimiter) + { + $this->delimiter = $delimiter; + $this->delimiterLen = strlen($delimiter); + } + + /** + * Extracts a statement from the buffer. + * + * @param bool $end whether the end of the buffer was reached + * + * @return string|false + */ + public function extract($end = false) + { + /** + * The last parsed position. + * + * This is statically defined because it is not used outside anywhere + * outside this method and there is probably a (minor) performance + * improvement to it. + * + * @var int + */ + static $i = 0; + + if (empty($this->query)) { + return false; + } + + /** + * The length of the buffer. + * + * @var int + */ + $len = strlen($this->query); + + /** + * The last index of the string that is going to be parsed. + * + * There must be a few characters left in the buffer so the parser can + * avoid confusing some symbols that may have multiple meanings. + * + * For example, if the buffer ends in `-` that may be an operator or the + * beginning of a comment. + * + * Another example if the buffer ends in `DELIMITE`. The parser is going + * to require a few more characters because that may be a part of the + * `DELIMITER` keyword or just a column named `DELIMITE`. + * + * Those extra characters are required only if there is more data + * expected (the end of the buffer was not reached). + * + * @var int + */ + $loopLen = $end ? $len : $len - 16; + + for (; $i < $loopLen; ++$i) { + /* + * Handling backslash. + * + * Even if the next character is a special character that should be + * treated differently, because of the preceding backslash, it will + * be ignored. + */ + if ((($this->status & self::STATUS_COMMENT) === 0) && ($this->query[$i] === '\\')) { + $this->current .= $this->query[$i] . ($i + 1 < $len ? $this->query[++$i] : ''); + continue; + } + + /* + * Handling special parses statuses. + */ + if ($this->status === self::STATUS_STRING_SINGLE_QUOTES) { + // Single-quoted strings like 'foo'. + if ($this->query[$i] === '\'') { + $this->status = 0; + } + + $this->current .= $this->query[$i]; + continue; + } elseif ($this->status === self::STATUS_STRING_DOUBLE_QUOTES) { + // Double-quoted strings like "bar". + if ($this->query[$i] === '"') { + $this->status = 0; + } + + $this->current .= $this->query[$i]; + continue; + } elseif ($this->status === self::STATUS_STRING_BACKTICK) { + if ($this->query[$i] === '`') { + $this->status = 0; + } + + $this->current .= $this->query[$i]; + continue; + } elseif (($this->status === self::STATUS_COMMENT_BASH) || ($this->status === self::STATUS_COMMENT_SQL)) { + // Bash-like (#) or SQL-like (-- ) comments end in new line. + if ($this->query[$i] === "\n") { + $this->status = 0; + } + + $this->current .= $this->query[$i]; + continue; + } elseif ($this->status === self::STATUS_COMMENT_C) { + // C-like comments end in */. + if (($this->query[$i - 1] === '*') && ($this->query[$i] === '/')) { + $this->status = 0; + } + + $this->current .= $this->query[$i]; + continue; + } + + /* + * Checking if a string started. + */ + if ($this->query[$i] === '\'') { + $this->status = self::STATUS_STRING_SINGLE_QUOTES; + $this->current .= $this->query[$i]; + continue; + } + + if ($this->query[$i] === '"') { + $this->status = self::STATUS_STRING_DOUBLE_QUOTES; + $this->current .= $this->query[$i]; + continue; + } + + if ($this->query[$i] === '`') { + $this->status = self::STATUS_STRING_BACKTICK; + $this->current .= $this->query[$i]; + continue; + } + + /* + * Checking if a comment started. + */ + if ($this->query[$i] === '#') { + $this->status = self::STATUS_COMMENT_BASH; + $this->current .= $this->query[$i]; + continue; + } + + if ($i + 2 < $len) { + if ( + ($this->query[$i] === '-') + && ($this->query[$i + 1] === '-') + && Context::isWhitespace($this->query[$i + 2]) + ) { + $this->status = self::STATUS_COMMENT_SQL; + $this->current .= $this->query[$i]; + continue; + } + + if (($this->query[$i] === '/') && ($this->query[$i + 1] === '*') && ($this->query[$i + 2] !== '!')) { + $this->status = self::STATUS_COMMENT_C; + $this->current .= $this->query[$i]; + continue; + } + } + + /* + * Handling `DELIMITER` statement. + * + * The code below basically checks for + * `strtoupper(substr($this->query, $i, 9)) === 'DELIMITER'` + * + * This optimization makes the code about 3 times faster. + * + * `DELIMITER` is not being considered a keyword. The only context + * it has a special meaning is when it is the beginning of a + * statement. This is the reason for the last condition. + */ + if ( + ($i + 9 < $len) + && (($this->query[$i] === 'D') || ($this->query[$i] === 'd')) + && (($this->query[$i + 1] === 'E') || ($this->query[$i + 1] === 'e')) + && (($this->query[$i + 2] === 'L') || ($this->query[$i + 2] === 'l')) + && (($this->query[$i + 3] === 'I') || ($this->query[$i + 3] === 'i')) + && (($this->query[$i + 4] === 'M') || ($this->query[$i + 4] === 'm')) + && (($this->query[$i + 5] === 'I') || ($this->query[$i + 5] === 'i')) + && (($this->query[$i + 6] === 'T') || ($this->query[$i + 6] === 't')) + && (($this->query[$i + 7] === 'E') || ($this->query[$i + 7] === 'e')) + && (($this->query[$i + 8] === 'R') || ($this->query[$i + 8] === 'r')) + && Context::isWhitespace($this->query[$i + 9]) + ) { + // Saving the current index to be able to revert any parsing + // done in this block. + $iBak = $i; + $i += 9; // Skipping `DELIMITER`. + + // Skipping whitespaces. + while (($i < $len) && Context::isWhitespace($this->query[$i])) { + ++$i; + } + + // Parsing the delimiter. + $delimiter = ''; + while (($i < $len) && (! Context::isWhitespace($this->query[$i]))) { + $delimiter .= $this->query[$i++]; + } + + // Checking if the delimiter definition ended. + if ( + ($delimiter !== '') + && (($i < $len) && Context::isWhitespace($this->query[$i]) + || (($i === $len) && $end)) + ) { + // Saving the delimiter. + $this->setDelimiter($delimiter); + + // Whether this statement should be returned or not. + $ret = ''; + if (! empty($this->options['parse_delimiter'])) { + // Appending the `DELIMITER` statement that was just + // found to the current statement. + $ret = trim( + $this->current . ' ' . substr($this->query, $iBak, $i - $iBak) + ); + } + + // Removing the statement that was just extracted from the + // query. + $this->query = substr($this->query, $i); + $i = 0; + + // Resetting the current statement. + $this->current = ''; + + return $ret; + } + + // Incomplete statement. Reverting + $i = $iBak; + + return false; + } + + /* + * Checking if the current statement finished. + * + * The first letter of the delimiter is being checked as an + * optimization. This code is almost as fast as the one above. + * + * There is no point in checking if two strings match if not even + * the first letter matches. + */ + if ( + ($this->query[$i] === $this->delimiter[0]) + && (($this->delimiterLen === 1) + || (substr($this->query, $i, $this->delimiterLen) === $this->delimiter)) + ) { + // Saving the statement that just ended. + $ret = $this->current; + + // If needed, adds a delimiter at the end of the statement. + if (! empty($this->options['add_delimiter'])) { + $ret .= $this->delimiter; + } + + // Removing the statement that was just extracted from the + // query. + $this->query = substr($this->query, $i + $this->delimiterLen); + $i = 0; + + // Resetting the current statement. + $this->current = ''; + + // Returning the statement. + return trim($ret); + } + + /* + * Appending current character to current statement. + */ + $this->current .= $this->query[$i]; + } + + if ($end && ($i === $len)) { + // If the end of the buffer was reached, the buffer is emptied and + // the current statement that was extracted is returned. + $ret = $this->current; + + // Emptying the buffer. + $this->query = ''; + $i = 0; + + // Resetting the current statement. + $this->current = ''; + + // Returning the statement. + return trim($ret); + } + + return ''; + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Utils/CLI.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Utils/CLI.php new file mode 100644 index 0000000000..7446563483 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Utils/CLI.php @@ -0,0 +1,319 @@ +getopt('hq:f:a', $longopts); + if ($params === false) { + return false; + } + + $this->mergeLongOpts($params, $longopts); + if (! isset($params['f'])) { + $params['f'] = 'cli'; + } + + if (! in_array($params['f'], ['html', 'cli', 'text'])) { + echo "ERROR: Invalid value for format!\n"; + + return false; + } + + return $params; + } + + /** + * @return int + */ + public function runHighlight() + { + $params = $this->parseHighlight(); + if ($params === false) { + return 1; + } + + if (isset($params['h'])) { + $this->usageHighlight(); + + return 0; + } + + if (! isset($params['q'])) { + $stdIn = $this->readStdin(); + + if ($stdIn) { + $params['q'] = $stdIn; + } + } + + if (isset($params['a'])) { + Context::setMode('ANSI_QUOTES'); + } + + if (isset($params['q'])) { + echo Formatter::format( + $params['q'], + ['type' => $params['f']] + ); + echo "\n"; + + return 0; + } + + echo "ERROR: Missing parameters!\n"; + $this->usageHighlight(); + + return 1; + } + + /** + * @return void + */ + public function usageLint() + { + echo "Usage: lint-query --query SQL [--ansi]\n"; + echo " cat file.sql | lint-query\n"; + } + + /** + * @return mixed + */ + public function parseLint() + { + $longopts = [ + 'help', + 'query:', + 'context:', + 'ansi', + ]; + $params = $this->getopt('hq:c:a', $longopts); + $this->mergeLongOpts($params, $longopts); + + return $params; + } + + /** + * @return int + */ + public function runLint() + { + $params = $this->parseLint(); + if ($params === false) { + return 1; + } + + if (isset($params['h'])) { + $this->usageLint(); + + return 0; + } + + if (isset($params['c'])) { + Context::load($params['c']); + } + + if (! isset($params['q'])) { + $stdIn = $this->readStdin(); + + if ($stdIn) { + $params['q'] = $stdIn; + } + } + + if (isset($params['a'])) { + Context::setMode('ANSI_QUOTES'); + } + + if (isset($params['q'])) { + $lexer = new Lexer($params['q'], false); + $parser = new Parser($lexer->list); + $errors = Error::get([$lexer, $parser]); + if (count($errors) === 0) { + return 0; + } + + $output = Error::format($errors); + echo implode("\n", $output); + echo "\n"; + + return 10; + } + + echo "ERROR: Missing parameters!\n"; + $this->usageLint(); + + return 1; + } + + /** + * @return void + */ + public function usageTokenize() + { + echo "Usage: tokenize-query --query SQL [--ansi]\n"; + echo " cat file.sql | tokenize-query\n"; + } + + /** + * @return mixed + */ + public function parseTokenize() + { + $longopts = [ + 'help', + 'query:', + 'ansi', + ]; + $params = $this->getopt('hq:a', $longopts); + $this->mergeLongOpts($params, $longopts); + + return $params; + } + + /** + * @return int + */ + public function runTokenize() + { + $params = $this->parseTokenize(); + if ($params === false) { + return 1; + } + + if (isset($params['h'])) { + $this->usageTokenize(); + + return 0; + } + + if (! isset($params['q'])) { + $stdIn = $this->readStdin(); + + if ($stdIn) { + $params['q'] = $stdIn; + } + } + + if (isset($params['a'])) { + Context::setMode('ANSI_QUOTES'); + } + + if (isset($params['q'])) { + $lexer = new Lexer($params['q'], false); + foreach ($lexer->list->tokens as $idx => $token) { + echo '[TOKEN ', $idx, "]\n"; + echo 'Type = ', $token->type, "\n"; + echo 'Flags = ', $token->flags, "\n"; + echo 'Value = '; + var_export($token->value); + echo "\n"; + echo 'Token = '; + var_export($token->token); + echo "\n"; + echo "\n"; + } + + return 0; + } + + echo "ERROR: Missing parameters!\n"; + $this->usageTokenize(); + + return 1; + } + + /** + * @return string|false + */ + public function readStdin() + { + $read = [STDIN]; + $write = []; + $except = []; + + // Assume there's nothing to be read from STDIN. + $stdin = null; + + // Try to read from STDIN. Wait 0.2 second before timing out. + $result = stream_select($read, $write, $except, 0, 2000); + + if ($result > 0) { + $stdin = stream_get_contents(STDIN); + } + + return $stdin; + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Utils/Error.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Utils/Error.php new file mode 100644 index 0000000000..382d77ddec --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Utils/Error.php @@ -0,0 +1,100 @@ +errors as $err) { + $ret[] = [ + $err->getMessage(), + $err->getCode(), + $err->ch, + $err->pos, + ]; + } + } elseif ($obj instanceof Parser) { + /** @var ParserException $err */ + foreach ($obj->errors as $err) { + $ret[] = [ + $err->getMessage(), + $err->getCode(), + $err->token->token, + $err->token->position, + ]; + } + } + } + + return $ret; + } + + /** + * Formats the specified errors. + * + * @param array $errors the errors to be formatted + * @param string $format The format of an error. + * '$1$d' is replaced by the position of this error. + * '$2$s' is replaced by the error message. + * '$3$d' is replaced by the error code. + * '$4$s' is replaced by the string that caused the + * issue. + * '$5$d' is replaced by the position of the string. + * + * @return array + */ + public static function format( + $errors, + $format = '#%1$d: %2$s (near "%4$s" at position %5$d)' + ) { + $ret = []; + + $i = 0; + foreach ($errors as $key => $err) { + $ret[$key] = sprintf( + $format, + ++$i, + $err[0], + $err[1], + htmlspecialchars((string) $err[2]), + $err[3] + ); + } + + return $ret; + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Utils/Formatter.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Utils/Formatter.php new file mode 100644 index 0000000000..350f10e68f --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Utils/Formatter.php @@ -0,0 +1,779 @@ + true, + 'INSERT' => true, + ]; + + /** + * Clauses that must be inlined. + * + * These clauses usually are short and it's nicer to have them inline. + * + * @var array + */ + public static $INLINE_CLAUSES = [ + 'CREATE' => true, + 'INTO' => true, + 'LIMIT' => true, + 'PARTITION BY' => true, + 'PARTITION' => true, + 'PROCEDURE' => true, + 'SUBPARTITION BY' => true, + 'VALUES' => true, + ]; + + /** + * @param array $options the formatting options + */ + public function __construct(array $options = []) + { + $this->options = $this->getMergedOptions($options); + } + + /** + * The specified formatting options are merged with the default values. + * + * @param array $options + * + * @return array + */ + private function getMergedOptions(array $options) + { + $options = array_merge( + $this->getDefaultOptions(), + $options + ); + + if (isset($options['formats'])) { + $options['formats'] = self::mergeFormats($this->getDefaultFormats(), $options['formats']); + } else { + $options['formats'] = $this->getDefaultFormats(); + } + + if ($options['line_ending'] === null) { + $options['line_ending'] = $options['type'] === 'html' ? '
' : "\n"; + } + + if ($options['indentation'] === null) { + $options['indentation'] = $options['type'] === 'html' ? '    ' : ' '; + } + + // `parts_newline` requires `clause_newline` + $options['parts_newline'] &= $options['clause_newline']; + + return $options; + } + + /** + * The default formatting options. + * + * @return array + */ + protected function getDefaultOptions() + { + return [ + /* + * The format of the result. + * + * @var string The type ('text', 'cli' or 'html') + */ + 'type' => PHP_SAPI === 'cli' ? 'cli' : 'text', + + /* + * The line ending used. + * By default, for text this is "\n" and for HTML this is "
". + * + * @var string + */ + 'line_ending' => null, + + /* + * The string used for indentation. + * + * @var string + */ + 'indentation' => null, + + /* + * Whether comments should be removed or not. + * + * @var bool + */ + 'remove_comments' => false, + + /* + * Whether each clause should be on a new line. + * + * @var bool + */ + 'clause_newline' => true, + + /* + * Whether each part should be on a new line. + * Parts are delimited by brackets and commas. + * + * @var bool + */ + 'parts_newline' => true, + + /* + * Whether each part of each clause should be indented. + * + * @var bool + */ + 'indent_parts' => true, + ]; + } + + /** + * The styles used for HTML formatting. + * [$type, $flags, $span, $callback]. + * + * @return array + */ + protected function getDefaultFormats() + { + return [ + [ + 'type' => Token::TYPE_KEYWORD, + 'flags' => Token::FLAG_KEYWORD_RESERVED, + 'html' => 'class="sql-reserved"', + 'cli' => "\x1b[35m", + 'function' => 'strtoupper', + ], + [ + 'type' => Token::TYPE_KEYWORD, + 'flags' => 0, + 'html' => 'class="sql-keyword"', + 'cli' => "\x1b[95m", + 'function' => 'strtoupper', + ], + [ + 'type' => Token::TYPE_COMMENT, + 'flags' => 0, + 'html' => 'class="sql-comment"', + 'cli' => "\x1b[37m", + 'function' => '', + ], + [ + 'type' => Token::TYPE_BOOL, + 'flags' => 0, + 'html' => 'class="sql-atom"', + 'cli' => "\x1b[36m", + 'function' => 'strtoupper', + ], + [ + 'type' => Token::TYPE_NUMBER, + 'flags' => 0, + 'html' => 'class="sql-number"', + 'cli' => "\x1b[92m", + 'function' => 'strtolower', + ], + [ + 'type' => Token::TYPE_STRING, + 'flags' => 0, + 'html' => 'class="sql-string"', + 'cli' => "\x1b[91m", + 'function' => '', + ], + [ + 'type' => Token::TYPE_SYMBOL, + 'flags' => Token::FLAG_SYMBOL_PARAMETER, + 'html' => 'class="sql-parameter"', + 'cli' => "\x1b[31m", + 'function' => '', + ], + [ + 'type' => Token::TYPE_SYMBOL, + 'flags' => 0, + 'html' => 'class="sql-variable"', + 'cli' => "\x1b[36m", + 'function' => '', + ], + ]; + } + + private static function mergeFormats(array $formats, array $newFormats): array + { + $added = []; + $integers = [ + 'flags', + 'type', + ]; + $strings = [ + 'html', + 'cli', + 'function', + ]; + + /* Sanitize the array so that we do not have to care later */ + foreach ($newFormats as $j => $new) { + foreach ($integers as $name) { + if (isset($new[$name])) { + continue; + } + + $newFormats[$j][$name] = 0; + } + + foreach ($strings as $name) { + if (isset($new[$name])) { + continue; + } + + $newFormats[$j][$name] = ''; + } + } + + /* Process changes to existing formats */ + foreach ($formats as $i => $original) { + foreach ($newFormats as $j => $new) { + if ($new['type'] !== $original['type'] || $original['flags'] !== $new['flags']) { + continue; + } + + $formats[$i] = $new; + $added[] = $j; + } + } + + /* Add not already handled formats */ + foreach ($newFormats as $j => $new) { + if (in_array($j, $added)) { + continue; + } + + $formats[] = $new; + } + + return $formats; + } + + /** + * Formats the given list of tokens. + * + * @param TokensList $list the list of tokens + * + * @return string + */ + public function formatList($list) + { + /** + * The query to be returned. + * + * @var string + */ + $ret = ''; + + /** + * The indentation level. + * + * @var int + */ + $indent = 0; + + /** + * Whether the line ended. + * + * @var bool + */ + $lineEnded = false; + + /** + * Whether current group is short (no linebreaks). + * + * @var bool + */ + $shortGroup = false; + + /** + * The name of the last clause. + * + * @var string + */ + $lastClause = ''; + + /** + * A stack that keeps track of the indentation level every time a new + * block is found. + * + * @var array + */ + $blocksIndentation = []; + + /** + * A stack that keeps track of the line endings every time a new block + * is found. + * + * @var array + */ + $blocksLineEndings = []; + + /** + * Whether clause's options were formatted. + * + * @var bool + */ + $formattedOptions = false; + + /** + * Previously parsed token. + * + * @var Token|null + */ + $prev = null; + + // In order to be able to format the queries correctly, the next token + // must be taken into consideration. The loop below uses two pointers, + // `$prev` and `$curr` which store two consecutive tokens. + // Actually, at every iteration the previous token is being used. + for ($list->idx = 0; $list->idx < $list->count; ++$list->idx) { + /** + * Token parsed at this moment. + * + * @var Token + */ + $curr = $list->tokens[$list->idx]; + if ($list->idx + 1 < $list->count) { + $next = $list->tokens[$list->idx + 1]; + } else { + $next = null; + } + + if ($curr->type === Token::TYPE_WHITESPACE) { + // Keep linebreaks before and after comments + if ( + strpos($curr->token, "\n") !== false && ( + ($prev !== null && $prev->type === Token::TYPE_COMMENT) || + ($next !== null && $next->type === Token::TYPE_COMMENT) + ) + ) { + $lineEnded = true; + } + + // Whitespaces are skipped because the formatter adds its own. + continue; + } + + if ($curr->type === Token::TYPE_COMMENT && $this->options['remove_comments']) { + // Skip Comments if option `remove_comments` is enabled + continue; + } + + // Checking if pointers were initialized. + if ($prev !== null) { + // Checking if a new clause started. + if (static::isClause($prev) !== false) { + $lastClause = $prev->value; + $formattedOptions = false; + } + + // The options of a clause should stay on the same line and everything that follows. + if ( + $this->options['parts_newline'] + && ! $formattedOptions + && empty(self::$INLINE_CLAUSES[$lastClause]) + && ( + $curr->type !== Token::TYPE_KEYWORD + || ( + $curr->type === Token::TYPE_KEYWORD + && $curr->flags & Token::FLAG_KEYWORD_FUNCTION + ) + ) + ) { + $formattedOptions = true; + $lineEnded = true; + ++$indent; + } + + // Checking if this clause ended. + $isClause = static::isClause($curr); + + if ($isClause) { + if ( + ($isClause === 2 || $this->options['clause_newline']) + && empty(self::$SHORT_CLAUSES[$lastClause]) + ) { + $lineEnded = true; + if ($this->options['parts_newline'] && $indent > 0) { + --$indent; + } + } + } + + // Inline JOINs + if ( + ($prev->type === Token::TYPE_KEYWORD && isset(JoinKeyword::$JOINS[$prev->value])) + || (in_array($curr->value, ['ON', 'USING'], true) + && isset(JoinKeyword::$JOINS[$list->tokens[$list->idx - 2]->value])) + || isset($list->tokens[$list->idx - 4], JoinKeyword::$JOINS[$list->tokens[$list->idx - 4]->value]) + || isset($list->tokens[$list->idx - 6], JoinKeyword::$JOINS[$list->tokens[$list->idx - 6]->value]) + ) { + $lineEnded = false; + } + + // Indenting BEGIN ... END blocks. + if ($prev->type === Token::TYPE_KEYWORD && $prev->keyword === 'BEGIN') { + $lineEnded = true; + $blocksIndentation[] = $indent; + ++$indent; + } elseif ($curr->type === Token::TYPE_KEYWORD && $curr->keyword === 'END') { + $lineEnded = true; + $indent = array_pop($blocksIndentation); + } + + // Formatting fragments delimited by comma. + if ($prev->type === Token::TYPE_OPERATOR && $prev->value === ',') { + // Fragments delimited by a comma are broken into multiple + // pieces only if the clause is not inlined or this fragment + // is between brackets that are on new line. + if ( + end($blocksLineEndings) === true + || ( + empty(self::$INLINE_CLAUSES[$lastClause]) + && ! $shortGroup + && $this->options['parts_newline'] + ) + ) { + $lineEnded = true; + } + } + + // Handling brackets. + // Brackets are indented only if the length of the fragment between + // them is longer than 30 characters. + if ($prev->type === Token::TYPE_OPERATOR && $prev->value === '(') { + $blocksIndentation[] = $indent; + $shortGroup = true; + if (static::getGroupLength($list) > 30) { + ++$indent; + $lineEnded = true; + $shortGroup = false; + } + + $blocksLineEndings[] = $lineEnded; + } elseif ($curr->type === Token::TYPE_OPERATOR && $curr->value === ')') { + $indent = array_pop($blocksIndentation); + $lineEnded |= array_pop($blocksLineEndings); + $shortGroup = false; + } + + // Adding the token. + $ret .= $this->toString($prev); + + // Finishing the line. + if ($lineEnded) { + $ret .= $this->options['line_ending'] + . str_repeat($this->options['indentation'], (int) $indent); + + $lineEnded = false; + } else { + // If the line ended there is no point in adding whitespaces. + // Also, some tokens do not have spaces before or after them. + if ( + // A space after delimiters that are longer than 2 characters. + $prev->keyword === 'DELIMITER' + || ! ( + ($prev->type === Token::TYPE_OPERATOR && ($prev->value === '.' || $prev->value === '(')) + // No space after . ( + || ($curr->type === Token::TYPE_OPERATOR + && ($curr->value === '.' || $curr->value === ',' + || $curr->value === '(' || $curr->value === ')')) + // No space before . , ( ) + || $curr->type === Token::TYPE_DELIMITER && mb_strlen((string) $curr->value, 'UTF-8') < 2 + ) + ) { + $ret .= ' '; + } + } + } + + // Iteration finished, consider current token as previous. + $prev = $curr; + } + + if ($this->options['type'] === 'cli') { + return $ret . "\x1b[0m"; + } + + return $ret; + } + + public function escapeConsole(string $string): string + { + return str_replace( + [ + "\x00", + "\x01", + "\x02", + "\x03", + "\x04", + "\x05", + "\x06", + "\x07", + "\x08", + "\x09", + "\x0A", + "\x0B", + "\x0C", + "\x0D", + "\x0E", + "\x0F", + "\x10", + "\x11", + "\x12", + "\x13", + "\x14", + "\x15", + "\x16", + "\x17", + "\x18", + "\x19", + "\x1A", + "\x1B", + "\x1C", + "\x1D", + "\x1E", + "\x1F", + ], + [ + '\x00', + '\x01', + '\x02', + '\x03', + '\x04', + '\x05', + '\x06', + '\x07', + '\x08', + '\x09', + '\x0A', + '\x0B', + '\x0C', + '\x0D', + '\x0E', + '\x0F', + '\x10', + '\x11', + '\x12', + '\x13', + '\x14', + '\x15', + '\x16', + '\x17', + '\x18', + '\x19', + '\x1A', + '\x1B', + '\x1C', + '\x1D', + '\x1E', + '\x1F', + ], + $string + ); + } + + /** + * Tries to print the query and returns the result. + * + * @param Token $token the token to be printed + * + * @return string + */ + public function toString($token) + { + $text = $token->token; + static $prev; + + foreach ($this->options['formats'] as $format) { + if ($token->type !== $format['type'] || ! (($token->flags & $format['flags']) === $format['flags'])) { + continue; + } + + // Running transformation function. + if (! empty($format['function'])) { + $func = $format['function']; + $text = $func($text); + } + + // Formatting HTML. + if ($this->options['type'] === 'html') { + return '' . htmlspecialchars($text, ENT_NOQUOTES) . ''; + } + + if ($this->options['type'] === 'cli') { + if ($prev !== $format['cli']) { + $prev = $format['cli']; + + return $format['cli'] . $this->escapeConsole($text); + } + + return $this->escapeConsole($text); + } + + break; + } + + if ($this->options['type'] === 'cli') { + if ($prev !== "\x1b[39m") { + $prev = "\x1b[39m"; + + return "\x1b[39m" . $this->escapeConsole($text); + } + + return $this->escapeConsole($text); + } + + if ($this->options['type'] === 'html') { + return htmlspecialchars($text, ENT_NOQUOTES); + } + + return $text; + } + + /** + * Formats a query. + * + * @param string $query The query to be formatted + * @param array $options the formatting options + * + * @return string the formatted string + */ + public static function format($query, array $options = []) + { + $lexer = new Lexer($query); + $formatter = new self($options); + + return $formatter->formatList($lexer->list); + } + + /** + * Computes the length of a group. + * + * A group is delimited by a pair of brackets. + * + * @param TokensList $list the list of tokens + * + * @return int + */ + public static function getGroupLength($list) + { + /** + * The number of opening brackets found. + * This counter starts at one because by the time this function called, + * the list already advanced one position and the opening bracket was + * already parsed. + * + * @var int + */ + $count = 1; + + /** + * The length of this group. + * + * @var int + */ + $length = 0; + + for ($idx = $list->idx; $idx < $list->count; ++$idx) { + // Counting the brackets. + if ($list->tokens[$idx]->type === Token::TYPE_OPERATOR) { + if ($list->tokens[$idx]->value === '(') { + ++$count; + } elseif ($list->tokens[$idx]->value === ')') { + --$count; + if ($count === 0) { + break; + } + } + } + + // Keeping track of this group's length. + $length += mb_strlen((string) $list->tokens[$idx]->value, 'UTF-8'); + } + + return $length; + } + + /** + * Checks if a token is a statement or a clause inside a statement. + * + * @param Token $token the token to be checked + * + * @return int|bool + */ + public static function isClause($token) + { + if ( + ($token->type === Token::TYPE_KEYWORD && isset(Parser::$STATEMENT_PARSERS[$token->keyword])) + || ($token->type === Token::TYPE_NONE && strtoupper($token->token) === 'DELIMITER') + ) { + return 2; + } + + if ($token->type === Token::TYPE_KEYWORD && isset(Parser::$KEYWORD_PARSERS[$token->keyword])) { + return 1; + } + + return false; + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Utils/Misc.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Utils/Misc.php new file mode 100644 index 0000000000..fcdccfef27 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Utils/Misc.php @@ -0,0 +1,101 @@ +expr) || empty($statement->from)) { + return []; + } + + $retval = []; + + $tables = []; + + /** + * Expressions that may contain aliases. + * These are extracted from `FROM` and `JOIN` keywords. + * + * @var Expression[] + */ + $expressions = $statement->from; + + // Adding expressions from JOIN. + if (! empty($statement->join)) { + foreach ($statement->join as $join) { + $expressions[] = $join->expr; + } + } + + foreach ($expressions as $expr) { + if (! isset($expr->table) || ($expr->table === '')) { + continue; + } + + $thisDb = isset($expr->database) && ($expr->database !== '') ? + $expr->database : $database; + + if (! isset($retval[$thisDb])) { + $retval[$thisDb] = [ + 'alias' => null, + 'tables' => [], + ]; + } + + if (! isset($retval[$thisDb]['tables'][$expr->table])) { + $retval[$thisDb]['tables'][$expr->table] = [ + 'alias' => isset($expr->alias) && ($expr->alias !== '') ? + $expr->alias : null, + 'columns' => [], + ]; + } + + if (! isset($tables[$thisDb])) { + $tables[$thisDb] = []; + } + + $tables[$thisDb][$expr->alias] = $expr->table; + } + + foreach ($statement->expr as $expr) { + if (! isset($expr->column, $expr->alias) || ($expr->column === '') || ($expr->alias === '')) { + continue; + } + + $thisDb = isset($expr->database) && ($expr->database !== '') ? + $expr->database : $database; + + if (isset($expr->table) && ($expr->table !== '')) { + $thisTable = $tables[$thisDb][$expr->table] ?? $expr->table; + $retval[$thisDb]['tables'][$thisTable]['columns'][$expr->column] = $expr->alias; + } else { + foreach ($retval[$thisDb]['tables'] as &$table) { + $table['columns'][$expr->column] = $expr->alias; + } + } + } + + return $retval; + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Utils/Query.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Utils/Query.php new file mode 100644 index 0000000000..ada61a553e --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Utils/Query.php @@ -0,0 +1,885 @@ + */ + public static $ALLFLAGS = [ + /* + * select ... DISTINCT ... + */ + 'distinct' => false, + + /* + * drop ... DATABASE ... + */ + 'drop_database' => false, + + /* + * ... GROUP BY ... + */ + 'group' => false, + + /* + * ... HAVING ... + */ + 'having' => false, + + /* + * INSERT ... + * or + * REPLACE ... + * or + * DELETE ... + */ + 'is_affected' => false, + + /* + * select ... PROCEDURE ANALYSE( ... ) ... + */ + 'is_analyse' => false, + + /* + * select COUNT( ... ) ... + */ + 'is_count' => false, + + /* + * DELETE ... + */ + 'is_delete' => false, // @deprecated; use `querytype` + + /* + * EXPLAIN ... + */ + 'is_explain' => false, // @deprecated; use `querytype` + + /* + * select ... INTO OUTFILE ... + */ + 'is_export' => false, + + /* + * select FUNC( ... ) ... + */ + 'is_func' => false, + + /* + * select ... GROUP BY ... + * or + * select ... HAVING ... + */ + 'is_group' => false, + + /* + * INSERT ... + * or + * REPLACE ... + * or + * LOAD DATA ... + */ + 'is_insert' => false, + + /* + * ANALYZE ... + * or + * CHECK ... + * or + * CHECKSUM ... + * or + * OPTIMIZE ... + * or + * REPAIR ... + */ + 'is_maint' => false, + + /* + * CALL ... + */ + 'is_procedure' => false, + + /* + * REPLACE ... + */ + 'is_replace' => false, // @deprecated; use `querytype` + + /* + * SELECT ... + */ + 'is_select' => false, // @deprecated; use `querytype` + + /* + * SHOW ... + */ + 'is_show' => false, // @deprecated; use `querytype` + + /* + * Contains a subquery. + */ + 'is_subquery' => false, + + /* + * ... JOIN ... + */ + 'join' => false, + + /* + * ... LIMIT ... + */ + 'limit' => false, + + /* + * TODO + */ + 'offset' => false, + + /* + * ... ORDER ... + */ + 'order' => false, + + /* + * The type of the query (which is usually the first keyword of + * the statement). + */ + 'querytype' => false, + + /* + * Whether a page reload is required. + */ + 'reload' => false, + + /* + * SELECT ... FROM ... + */ + 'select_from' => false, + + /* + * ... UNION ... + */ + 'union' => false, + ]; + + /** + * Gets an array with flags select statement has. + * + * @param SelectStatement $statement the statement to be processed + * @param array $flags flags set so far + * + * @return array + */ + private static function getFlagsSelect($statement, $flags) + { + $flags['querytype'] = 'SELECT'; + $flags['is_select'] = true; + + if (! empty($statement->from)) { + $flags['select_from'] = true; + } + + if ($statement->options->has('DISTINCT')) { + $flags['distinct'] = true; + } + + if (! empty($statement->group) || ! empty($statement->having)) { + $flags['is_group'] = true; + } + + if (! empty($statement->into) && ($statement->into->type === 'OUTFILE')) { + $flags['is_export'] = true; + } + + $expressions = $statement->expr; + if (! empty($statement->join)) { + foreach ($statement->join as $join) { + $expressions[] = $join->expr; + } + } + + foreach ($expressions as $expr) { + if (! empty($expr->function)) { + if ($expr->function === 'COUNT') { + $flags['is_count'] = true; + } elseif (in_array($expr->function, static::$FUNCTIONS)) { + $flags['is_func'] = true; + } + } + + if (empty($expr->subquery)) { + continue; + } + + $flags['is_subquery'] = true; + } + + if (! empty($statement->procedure) && ($statement->procedure->name === 'ANALYSE')) { + $flags['is_analyse'] = true; + } + + if (! empty($statement->group)) { + $flags['group'] = true; + } + + if (! empty($statement->having)) { + $flags['having'] = true; + } + + if (! empty($statement->union)) { + $flags['union'] = true; + } + + if (! empty($statement->join)) { + $flags['join'] = true; + } + + return $flags; + } + + /** + * Gets an array with flags this statement has. + * + * @param Statement|null $statement the statement to be processed + * @param bool $all if `false`, false values will not be included + * + * @return array + */ + public static function getFlags($statement, $all = false) + { + $flags = ['querytype' => false]; + if ($all) { + $flags = self::$ALLFLAGS; + } + + if ($statement instanceof AlterStatement) { + $flags['querytype'] = 'ALTER'; + $flags['reload'] = true; + } elseif ($statement instanceof CreateStatement) { + $flags['querytype'] = 'CREATE'; + $flags['reload'] = true; + } elseif ($statement instanceof AnalyzeStatement) { + $flags['querytype'] = 'ANALYZE'; + $flags['is_maint'] = true; + } elseif ($statement instanceof CheckStatement) { + $flags['querytype'] = 'CHECK'; + $flags['is_maint'] = true; + } elseif ($statement instanceof ChecksumStatement) { + $flags['querytype'] = 'CHECKSUM'; + $flags['is_maint'] = true; + } elseif ($statement instanceof OptimizeStatement) { + $flags['querytype'] = 'OPTIMIZE'; + $flags['is_maint'] = true; + } elseif ($statement instanceof RepairStatement) { + $flags['querytype'] = 'REPAIR'; + $flags['is_maint'] = true; + } elseif ($statement instanceof CallStatement) { + $flags['querytype'] = 'CALL'; + $flags['is_procedure'] = true; + } elseif ($statement instanceof DeleteStatement) { + $flags['querytype'] = 'DELETE'; + $flags['is_delete'] = true; + $flags['is_affected'] = true; + } elseif ($statement instanceof DropStatement) { + $flags['querytype'] = 'DROP'; + $flags['reload'] = true; + + if ($statement->options->has('DATABASE') || $statement->options->has('SCHEMA')) { + $flags['drop_database'] = true; + } + } elseif ($statement instanceof ExplainStatement) { + $flags['querytype'] = 'EXPLAIN'; + $flags['is_explain'] = true; + } elseif ($statement instanceof InsertStatement) { + $flags['querytype'] = 'INSERT'; + $flags['is_affected'] = true; + $flags['is_insert'] = true; + } elseif ($statement instanceof LoadStatement) { + $flags['querytype'] = 'LOAD'; + $flags['is_affected'] = true; + $flags['is_insert'] = true; + } elseif ($statement instanceof ReplaceStatement) { + $flags['querytype'] = 'REPLACE'; + $flags['is_affected'] = true; + $flags['is_replace'] = true; + $flags['is_insert'] = true; + } elseif ($statement instanceof SelectStatement) { + $flags = self::getFlagsSelect($statement, $flags); + } elseif ($statement instanceof ShowStatement) { + $flags['querytype'] = 'SHOW'; + $flags['is_show'] = true; + } elseif ($statement instanceof UpdateStatement) { + $flags['querytype'] = 'UPDATE'; + $flags['is_affected'] = true; + } elseif ($statement instanceof SetStatement) { + $flags['querytype'] = 'SET'; + } + + if ( + ($statement instanceof SelectStatement) + || ($statement instanceof UpdateStatement) + || ($statement instanceof DeleteStatement) + ) { + if (! empty($statement->limit)) { + $flags['limit'] = true; + } + + if (! empty($statement->order)) { + $flags['order'] = true; + } + } + + return $flags; + } + + /** + * Parses a query and gets all information about it. + * + * @param string $query the query to be parsed + * + * @return array The array returned is the one returned by + * `static::getFlags()`, with the following keys added: + * - parser - the parser used to analyze the query; + * - statement - the first statement resulted from parsing; + * - select_tables - the real name of the tables selected; + * if there are no table names in the `SELECT` + * expressions, the table names are fetched from the + * `FROM` expressions + * - select_expr - selected expressions + */ + public static function getAll($query) + { + $parser = new Parser($query); + + if (empty($parser->statements[0])) { + return static::getFlags(null, true); + } + + $statement = $parser->statements[0]; + + $ret = static::getFlags($statement, true); + + $ret['parser'] = $parser; + $ret['statement'] = $statement; + + if ($statement instanceof SelectStatement) { + $ret['select_tables'] = []; + $ret['select_expr'] = []; + + // Finding tables' aliases and their associated real names. + $tableAliases = []; + foreach ($statement->from as $expr) { + if (! isset($expr->table, $expr->alias) || ($expr->table === '') || ($expr->alias === '')) { + continue; + } + + $tableAliases[$expr->alias] = [ + $expr->table, + $expr->database ?? null, + ]; + } + + // Trying to find selected tables only from the select expression. + // Sometimes, this is not possible because the tables aren't defined + // explicitly (e.g. SELECT * FROM film, SELECT film_id FROM film). + foreach ($statement->expr as $expr) { + if (isset($expr->table) && ($expr->table !== '')) { + if (isset($tableAliases[$expr->table])) { + $arr = $tableAliases[$expr->table]; + } else { + $arr = [ + $expr->table, + isset($expr->database) && ($expr->database !== '') ? + $expr->database : null, + ]; + } + + if (! in_array($arr, $ret['select_tables'])) { + $ret['select_tables'][] = $arr; + } + } else { + $ret['select_expr'][] = $expr->expr; + } + } + + // If no tables names were found in the SELECT clause or if there + // are expressions like * or COUNT(*), etc. tables names should be + // extracted from the FROM clause. + if (empty($ret['select_tables'])) { + foreach ($statement->from as $expr) { + if (! isset($expr->table) || ($expr->table === '')) { + continue; + } + + $arr = [ + $expr->table, + isset($expr->database) && ($expr->database !== '') ? + $expr->database : null, + ]; + if (in_array($arr, $ret['select_tables'])) { + continue; + } + + $ret['select_tables'][] = $arr; + } + } + } + + return $ret; + } + + /** + * Gets a list of all tables used in this statement. + * + * @param Statement $statement statement to be scanned + * + * @return array + */ + public static function getTables($statement) + { + $expressions = []; + + if (($statement instanceof InsertStatement) || ($statement instanceof ReplaceStatement)) { + $expressions = [$statement->into->dest]; + } elseif ($statement instanceof UpdateStatement) { + $expressions = $statement->tables; + } elseif (($statement instanceof SelectStatement) || ($statement instanceof DeleteStatement)) { + $expressions = $statement->from; + } elseif (($statement instanceof AlterStatement) || ($statement instanceof TruncateStatement)) { + $expressions = [$statement->table]; + } elseif ($statement instanceof DropStatement) { + if (! $statement->options->has('TABLE')) { + // No tables are dropped. + return []; + } + + $expressions = $statement->fields; + } elseif ($statement instanceof RenameStatement) { + foreach ($statement->renames as $rename) { + $expressions[] = $rename->old; + } + } + + $ret = []; + foreach ($expressions as $expr) { + if (empty($expr->table)) { + continue; + } + + $expr->expr = null; // Force rebuild. + $expr->alias = null; // Aliases are not required. + $ret[] = Expression::build($expr); + } + + return $ret; + } + + /** + * Gets a specific clause. + * + * @param Statement $statement the parsed query that has to be modified + * @param TokensList $list the list of tokens + * @param string $clause the clause to be returned + * @param int|string $type The type of the search. + * If int, + * -1 for everything that was before + * 0 only for the clause + * 1 for everything after + * If string, the name of the first clause that + * should not be included. + * @param bool $skipFirst whether to skip the first keyword in clause + * + * @return string + */ + public static function getClause($statement, $list, $clause, $type = 0, $skipFirst = true) + { + /** + * The index of the current clause. + * + * @var int + */ + $currIdx = 0; + + /** + * The count of brackets. + * We keep track of them so we won't insert the clause in a subquery. + * + * @var int + */ + $brackets = 0; + + /** + * The string to be returned. + * + * @var string + */ + $ret = ''; + + /** + * The clauses of this type of statement and their index. + * + * @var array + */ + $clauses = array_flip(array_keys($statement->getClauses())); + + /** + * Lexer used for lexing the clause. + * + * @var Lexer + */ + $lexer = new Lexer($clause); + + /** + * The type of this clause. + * + * @var string + */ + $clauseType = $lexer->list->getNextOfType(Token::TYPE_KEYWORD)->keyword; + + /** + * The index of this clause. + * + * @var int + */ + $clauseIdx = $clauses[$clauseType] ?? -1; + + $firstClauseIdx = $clauseIdx; + $lastClauseIdx = $clauseIdx; + + // Determining the behavior of this function. + if ($type === -1) { + $firstClauseIdx = -1; // Something small enough. + $lastClauseIdx = $clauseIdx - 1; + } elseif ($type === 1) { + $firstClauseIdx = $clauseIdx + 1; + $lastClauseIdx = 10000; // Something big enough. + } elseif (is_string($type) && isset($clauses[$type])) { + if ($clauses[$type] > $clauseIdx) { + $firstClauseIdx = $clauseIdx + 1; + $lastClauseIdx = $clauses[$type] - 1; + } else { + $firstClauseIdx = $clauses[$type] + 1; + $lastClauseIdx = $clauseIdx - 1; + } + } + + // This option is unavailable for multiple clauses. + if ($type !== 0) { + $skipFirst = false; + } + + for ($i = $statement->first; $i <= $statement->last; ++$i) { + $token = $list->tokens[$i]; + + if ($token->type === Token::TYPE_COMMENT) { + continue; + } + + if ($token->type === Token::TYPE_OPERATOR) { + if ($token->value === '(') { + ++$brackets; + } elseif ($token->value === ')') { + --$brackets; + } + } + + if ($brackets === 0) { + // Checking if the section was changed. + if ( + ($token->type === Token::TYPE_KEYWORD) + && isset($clauses[$token->keyword]) + && ($clauses[$token->keyword] >= $currIdx) + ) { + $currIdx = $clauses[$token->keyword]; + if ($skipFirst && ($currIdx === $clauseIdx)) { + // This token is skipped (not added to the old + // clause) because it will be replaced. + continue; + } + } + } + + if (($firstClauseIdx > $currIdx) || ($currIdx > $lastClauseIdx)) { + continue; + } + + $ret .= $token->token; + } + + return trim($ret); + } + + /** + * Builds a query by rebuilding the statement from the tokens list supplied + * and replaces a clause. + * + * It is a very basic version of a query builder. + * + * @param Statement $statement the parsed query that has to be modified + * @param TokensList $list the list of tokens + * @param string $old The type of the clause that should be + * replaced. This can be an entire clause. + * @param string $new The new clause. If this parameter is omitted + * it is considered to be equal with `$old`. + * @param bool $onlyType whether only the type of the clause should + * be replaced or the entire clause + * + * @return string + */ + public static function replaceClause($statement, $list, $old, $new = null, $onlyType = false) + { + // TODO: Update the tokens list and the statement. + + if ($new === null) { + $new = $old; + } + + if ($onlyType) { + return static::getClause($statement, $list, $old, -1, false) . ' ' . + $new . ' ' . static::getClause($statement, $list, $old, 0) . ' ' . + static::getClause($statement, $list, $old, 1, false); + } + + return static::getClause($statement, $list, $old, -1, false) . ' ' . + $new . ' ' . static::getClause($statement, $list, $old, 1, false); + } + + /** + * Builds a query by rebuilding the statement from the tokens list supplied + * and replaces multiple clauses. + * + * @param Statement $statement the parsed query that has to be modified + * @param TokensList $list the list of tokens + * @param array $ops Clauses to be replaced. Contains multiple + * arrays having two values: [$old, $new]. + * Clauses must be sorted. + * + * @return string + */ + public static function replaceClauses($statement, $list, array $ops) + { + $count = count($ops); + + // Nothing to do. + if ($count === 0) { + return ''; + } + + /** + * Value to be returned. + * + * @var string + */ + $ret = ''; + + // If there is only one clause, `replaceClause()` should be used. + if ($count === 1) { + return static::replaceClause($statement, $list, $ops[0][0], $ops[0][1]); + } + + // Adding everything before first replacement. + $ret .= static::getClause($statement, $list, $ops[0][0], -1) . ' '; + + // Doing replacements. + foreach ($ops as $i => $clause) { + $ret .= $clause[1] . ' '; + + // Adding everything between this and next replacement. + if ($i + 1 === $count) { + continue; + } + + $ret .= static::getClause($statement, $list, $clause[0], $ops[$i + 1][0]) . ' '; + } + + // Adding everything after the last replacement. + return $ret . static::getClause($statement, $list, $ops[$count - 1][0], 1); + } + + /** + * Gets the first full statement in the query. + * + * @param string $query the query to be analyzed + * @param string $delimiter the delimiter to be used + * + * @return array array containing the first full query, the + * remaining part of the query and the last + * delimiter + */ + public static function getFirstStatement($query, $delimiter = null) + { + $lexer = new Lexer($query, false, $delimiter); + $list = $lexer->list; + + /** + * Whether a full statement was found. + * + * @var bool + */ + $fullStatement = false; + + /** + * The first full statement. + * + * @var string + */ + $statement = ''; + + for ($list->idx = 0; $list->idx < $list->count; ++$list->idx) { + $token = $list->tokens[$list->idx]; + + if ($token->type === Token::TYPE_COMMENT) { + continue; + } + + $statement .= $token->token; + + if (($token->type === Token::TYPE_DELIMITER) && ! empty($token->token)) { + $delimiter = $token->token; + $fullStatement = true; + break; + } + } + + // No statement was found so we return the entire query as being the + // remaining part. + if (! $fullStatement) { + return [ + null, + $query, + $delimiter, + ]; + } + + // At least one query was found so we have to build the rest of the + // remaining query. + $query = ''; + for (++$list->idx; $list->idx < $list->count; ++$list->idx) { + $query .= $list->tokens[$list->idx]->token; + } + + return [ + trim($statement), + $query, + $delimiter, + ]; + } + + /** + * Gets a starting offset of a specific clause. + * + * @param Statement $statement the parsed query that has to be modified + * @param TokensList $list the list of tokens + * @param string $clause the clause to be returned + * + * @return int + */ + public static function getClauseStartOffset($statement, $list, $clause) + { + /** + * The count of brackets. + * We keep track of them so we won't insert the clause in a subquery. + * + * @var int + */ + $brackets = 0; + + /** + * The clauses of this type of statement and their index. + * + * @var array + */ + $clauses = array_flip(array_keys($statement->getClauses())); + + for ($i = $statement->first; $i <= $statement->last; ++$i) { + $token = $list->tokens[$i]; + + if ($token->type === Token::TYPE_COMMENT) { + continue; + } + + if ($token->type === Token::TYPE_OPERATOR) { + if ($token->value === '(') { + ++$brackets; + } elseif ($token->value === ')') { + --$brackets; + } + } + + if ($brackets !== 0) { + continue; + } + + if ( + ($token->type === Token::TYPE_KEYWORD) + && isset($clauses[$token->keyword]) + && ($clause === $token->keyword) + ) { + return $i; + } + + if ($token->keyword === 'UNION') { + return -1; + } + } + + return -1; + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Utils/Routine.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Utils/Routine.php new file mode 100644 index 0000000000..2d08c36def --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Utils/Routine.php @@ -0,0 +1,144 @@ +list); + + if ($type === null) { + return [ + '', + '', + '', + '', + '', + ]; + } + + $options = []; + foreach ($type->options->options as $opt) { + $options[] = is_string($opt) ? $opt : $opt['value']; + } + + return [ + '', + '', + $type->name, + implode(',', $type->parameters), + implode(' ', $options), + ]; + } + + /** + * Parses a parameter of a routine. + * + * @param string $param parameter's definition + * + * @return array + */ + public static function getParameter($param) + { + $lexer = new Lexer('(' . $param . ')'); + + // A dummy parser is used for error reporting. + $param = ParameterDefinition::parse(new Parser(), $lexer->list); + + if (empty($param[0])) { + return [ + '', + '', + '', + '', + '', + ]; + } + + $param = $param[0]; + + $options = []; + foreach ($param->type->options->options as $opt) { + $options[] = is_string($opt) ? $opt : $opt['value']; + } + + return [ + empty($param->inOut) ? '' : $param->inOut, + $param->name, + $param->type->name, + implode(',', $param->type->parameters), + implode(' ', $options), + ]; + } + + /** + * Gets the parameters of a routine from the parse tree. + * + * @param CreateStatement $statement the statement to be processed + * + * @return array + */ + public static function getParameters($statement) + { + $retval = [ + 'num' => 0, + 'dir' => [], + 'name' => [], + 'type' => [], + 'length' => [], + 'length_arr' => [], + 'opts' => [], + ]; + + if (! empty($statement->parameters)) { + $idx = 0; + foreach ($statement->parameters as $param) { + $retval['dir'][$idx] = $param->inOut; + $retval['name'][$idx] = $param->name; + $retval['type'][$idx] = $param->type->name; + $retval['length'][$idx] = implode(',', $param->type->parameters); + $retval['length_arr'][$idx] = $param->type->parameters; + $retval['opts'][$idx] = []; + foreach ($param->type->options->options as $opt) { + $retval['opts'][$idx][] = is_string($opt) ? + $opt : $opt['value']; + } + + $retval['opts'][$idx] = implode(' ', $retval['opts'][$idx]); + ++$idx; + } + + $retval['num'] = $idx; + } + + return $retval; + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Utils/Table.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Utils/Table.php new file mode 100644 index 0000000000..4c56f4d1f6 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Utils/Table.php @@ -0,0 +1,141 @@ +fields) || (! is_array($statement->fields)) || (! $statement->options->has('TABLE'))) { + return []; + } + + $ret = []; + + foreach ($statement->fields as $field) { + if (empty($field->key) || ($field->key->type !== 'FOREIGN KEY')) { + continue; + } + + $columns = []; + foreach ($field->key->columns as $column) { + if (! isset($column['name'])) { + continue; + } + + $columns[] = $column['name']; + } + + $tmp = [ + 'constraint' => $field->name, + 'index_list' => $columns, + ]; + + if (! empty($field->references)) { + $tmp['ref_db_name'] = $field->references->table->database; + $tmp['ref_table_name'] = $field->references->table->table; + $tmp['ref_index_list'] = $field->references->columns; + + $opt = $field->references->options->has('ON UPDATE'); + + if ($opt) { + $tmp['on_update'] = str_replace(' ', '_', $opt); + } + + $opt = $field->references->options->has('ON DELETE'); + + if ($opt) { + $tmp['on_delete'] = str_replace(' ', '_', $opt); + } + } + + $ret[] = $tmp; + } + + return $ret; + } + + /** + * Gets fields of the table. + * + * @param CreateStatement $statement the statement to be processed + * + * @return array + */ + public static function getFields($statement) + { + if (empty($statement->fields) || (! is_array($statement->fields)) || (! $statement->options->has('TABLE'))) { + return []; + } + + $ret = []; + + foreach ($statement->fields as $field) { + // Skipping keys. + if (empty($field->type)) { + continue; + } + + $ret[$field->name] = [ + 'type' => $field->type->name, + 'timestamp_not_null' => false, + ]; + + if (! $field->options) { + continue; + } + + if ($field->type->name === 'TIMESTAMP') { + if ($field->options->has('NOT NULL')) { + $ret[$field->name]['timestamp_not_null'] = true; + } + } + + $option = $field->options->has('DEFAULT'); + + if ($option) { + $ret[$field->name]['default_value'] = $option; + if ($option === 'CURRENT_TIMESTAMP') { + $ret[$field->name]['default_current_timestamp'] = true; + } + } + + $option = $field->options->has('ON UPDATE'); + + if ($option === 'CURRENT_TIMESTAMP') { + $ret[$field->name]['on_update_current_timestamp'] = true; + } + + $option = $field->options->has('AS'); + + if (! $option) { + continue; + } + + $ret[$field->name]['generated'] = true; + $ret[$field->name]['expr'] = $option; + } + + return $ret; + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Utils/Tokens.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Utils/Tokens.php new file mode 100644 index 0000000000..b245c17d06 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/src/Utils/Tokens.php @@ -0,0 +1,163 @@ +token)) { + return false; + } + + // Value. + if (isset($pattern['value']) && ($pattern['value'] !== $token->value)) { + return false; + } + + if (isset($pattern['value_str']) && strcasecmp($pattern['value_str'], (string) $token->value)) { + return false; + } + + // Type. + if (isset($pattern['type']) && ($pattern['type'] !== $token->type)) { + return false; + } + + // Flags. + return ! isset($pattern['flags']) + || (! (($pattern['flags'] & $token->flags) === 0)); + } + + /** + * @param TokensList|string|UtfString $list + * @param array $find + * @param array $replace + * + * @return TokensList + */ + public static function replaceTokens($list, array $find, array $replace) + { + /** + * Whether the first parameter is a list. + * + * @var bool + */ + $isList = $list instanceof TokensList; + + // Parsing the tokens. + if (! $isList) { + $list = Lexer::getTokens($list); + } + + /** + * The list to be returned. + * + * @var array + */ + $newList = []; + + /** + * The length of the find pattern is calculated only once. + * + * @var int + */ + $findCount = count($find); + + /** + * The starting index of the pattern. + * + * @var int + */ + $i = 0; + + while ($i < $list->count) { + // A sequence may not start with a comment. + if ($list->tokens[$i]->type === Token::TYPE_COMMENT) { + $newList[] = $list->tokens[$i]; + ++$i; + continue; + } + + /** + * The index used to parse `$list->tokens`. + * + * This index might be running faster than `$k` because some tokens + * are skipped. + * + * @var int + */ + $j = $i; + + /** + * The index used to parse `$find`. + * + * This index might be running slower than `$j` because some tokens + * are skipped. + * + * @var int + */ + $k = 0; + + // Checking if the next tokens match the pattern described. + while (($j < $list->count) && ($k < $findCount)) { + // Comments are being skipped. + if ($list->tokens[$j]->type === Token::TYPE_COMMENT) { + ++$j; + } + + if (! static::match($list->tokens[$j], $find[$k])) { + // This token does not match the pattern. + break; + } + + // Going to next token and segment of find pattern. + ++$j; + ++$k; + } + + // Checking if the sequence was found. + if ($k === $findCount) { + // Inserting new tokens. + foreach ($replace as $token) { + $newList[] = $token; + } + + // Skipping next `$findCount` tokens. + $i = $j; + } else { + // Adding the same token. + $newList[] = $list->tokens[$i]; + ++$i; + } + } + + return $isList ? + new TokensList($newList) : TokensList::build($newList); + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Builder/AlterStatementTest.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Builder/AlterStatementTest.php new file mode 100644 index 0000000000..cc38b0e28c --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Builder/AlterStatementTest.php @@ -0,0 +1,23 @@ +statements[0]; + + $this->assertEquals($query, $stmt->build()); + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Builder/CallStatementTest.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Builder/CallStatementTest.php new file mode 100644 index 0000000000..76376144fe --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Builder/CallStatementTest.php @@ -0,0 +1,21 @@ +statements[0]; + + $this->assertEquals($query, $stmt->build()); + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Builder/CreateStatementTest.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Builder/CreateStatementTest.php new file mode 100644 index 0000000000..84c5601e6c --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Builder/CreateStatementTest.php @@ -0,0 +1,756 @@ +statements[0]; + $this->assertEquals( + 'CREATE USER "jeffrey"@"localhost" IDENTIFIED BY "mypass"', + $stmt->build() + ); + } + + public function testBuilderDatabase(): void + { + // CREATE DATABASE ... + $parser = new Parser( + 'CREATE DATABASE `mydb` ' . + 'DEFAULT CHARACTER SET = utf8 DEFAULT COLLATE = utf8_general_ci' + ); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'CREATE DATABASE `mydb` ' . + 'DEFAULT CHARACTER SET=utf8 DEFAULT COLLATE=utf8_general_ci', + $stmt->build() + ); + + // CREATE SCHEMA ... + $parser = new Parser('CREATE SCHEMA `mydb` DEFAULT CHARACTER SET = utf8 DEFAULT COLLATE = utf8_general_ci'); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'CREATE SCHEMA `mydb` ' . + 'DEFAULT CHARACTER SET=utf8 DEFAULT COLLATE=utf8_general_ci', + $stmt->build() + ); + } + + public function testBuilderDefaultInt(): void + { + $parser = new Parser( + 'CREATE TABLE IF NOT EXISTS t1 (' . + " c1 int(11) NOT NULL DEFAULT '0' COMMENT 'xxx'" . + ') ENGINE=MyISAM' + ); + $stmt = $parser->statements[0]; + + $this->assertEquals( + "CREATE TABLE IF NOT EXISTS t1 (\n" . + " `c1` int(11) NOT NULL DEFAULT '0' COMMENT 'xxx'\n" . + ') ENGINE=MyISAM', + $stmt->build() + ); + } + + public function testBuilderCollate(): void + { + $parser = new Parser( + 'CREATE TABLE IF NOT EXISTS t1 (' . + " c1 varchar(11) NOT NULL DEFAULT '0' COLLATE 'utf8_czech_ci' COMMENT 'xxx'" . + ') ENGINE=MyISAM' + ); + $stmt = $parser->statements[0]; + + $this->assertEquals( + "CREATE TABLE IF NOT EXISTS t1 (\n" . + " `c1` varchar(11) NOT NULL DEFAULT '0' COLLATE 'utf8_czech_ci' COMMENT 'xxx'\n" . + ') ENGINE=MyISAM', + $stmt->build() + ); + } + + public function testBuilderDefaultComment(): void + { + $parser = new Parser( + 'CREATE TABLE `wp_audio` (' . + " `somedata` int(11) DEFAULT NULL COMMENT 'ma data', " . + " `someinfo` int(11) DEFAULT NULL COMMENT 'ma info' " . + ' )' + ); + $stmt = $parser->statements[0]; + + $this->assertEquals( + "CREATE TABLE `wp_audio` (\n" . + " `somedata` int(11) DEFAULT NULL COMMENT 'ma data',\n" . + " `someinfo` int(11) DEFAULT NULL COMMENT 'ma info'\n" . + ') ', + $stmt->build() + ); + } + + public function testBuilderTable(): void + { + /* Assertion 1 */ + $stmt = new CreateStatement(); + + $stmt->name = new Expression('', 'test', ''); + $stmt->options = new OptionsArray(['TABLE']); + $stmt->fields = [ + new CreateDefinition( + 'id', + new OptionsArray(['NOT NULL', 'AUTO_INCREMENT']), + new DataType('INT', [11], new OptionsArray(['UNSIGNED'])) + ), + new CreateDefinition( + '', + null, + new Key('', [['name' => 'id']], 'PRIMARY KEY') + ), + ]; + + $this->assertEquals( + "CREATE TABLE `test` (\n" . + " `id` int(11) UNSIGNED NOT NULL AUTO_INCREMENT,\n" . + " PRIMARY KEY (`id`)\n" . + ') ', + $stmt->build() + ); + + /* Assertion 2 */ + $query = + "CREATE TABLE `jos_core_acl_aro` (\n" . + " `id` int(11) NOT NULL,\n" . + " `section_value` varchar(240) NOT NULL DEFAULT '0',\n" . + " `value` varchar(240) NOT NULL DEFAULT '',\n" . + " `order_value` int(11) NOT NULL DEFAULT '0',\n" . + " `name` varchar(255) NOT NULL DEFAULT '',\n" . + " `hidden` int(11) NOT NULL DEFAULT '0',\n" . + " PRIMARY KEY (`id`),\n" . + " UNIQUE KEY `jos_section_value_value_aro` (`section_value`(100),`value`(15)) USING BTREE,\n" . + " KEY `jos_gacl_hidden_aro` (`hidden`)\n" . + ') ENGINE=InnoDB DEFAULT CHARSET=latin1'; + $parser = new Parser($query); + $this->assertEquals($query, $parser->statements[0]->build()); + + /* Assertion 3 */ + $query = 'CREATE TABLE `table_copy` LIKE `old_table`'; + $parser = new Parser($query); + $this->assertEquals($query, $parser->statements[0]->build()); + + /* Assertion 4 */ + $query = + "CREATE TABLE `aa` (\n" . + " `id` int(11) NOT NULL,\n" . + " `rTime` timestamp(3) NOT NULL DEFAULT '0000-00-00 00:00:00.000' ON UPDATE CURRENT_TIMESTAMP(3),\n" . + " PRIMARY KEY (`id`)\n" . + ') ENGINE=InnoDB DEFAULT CHARSET=latin1'; + $parser = new Parser($query); + $this->assertEquals($query, $parser->statements[0]->build()); + } + + public function testBuilderPartitions(): void + { + /* Assertion 1 */ + $query = 'CREATE TABLE ts (' . "\n" + . ' `id` int,' . "\n" + . ' `purchased` date' . "\n" + . ') ' . "\n" + . 'PARTITION BY RANGE(YEAR(purchased))' . "\n" + . 'PARTITIONS 3' . "\n" + . 'SUBPARTITION BY HASH(TO_DAYS(purchased))' . "\n" + . 'SUBPARTITIONS 2' . "\n" + . '(' . "\n" + . 'PARTITION p0 VALUES LESS THAN (1990) (' . "\n" + . 'SUBPARTITION s0,' . "\n" + . 'SUBPARTITION s1' . "\n" + . '),' . "\n" + . 'PARTITION p1 VALUES LESS THAN (2000) (' . "\n" + . 'SUBPARTITION s2,' . "\n" + . 'SUBPARTITION s3' . "\n" + . '),' . "\n" + . 'PARTITION p2 VALUES LESS THAN MAXVALUE (' . "\n" + . 'SUBPARTITION s4,' . "\n" + . 'SUBPARTITION s5' . "\n" + . ')' . "\n" + . ')'; + $parser = new Parser($query); + $this->assertEquals($query, $parser->statements[0]->build()); + + /* Assertion 2 */ + $query = 'CREATE TABLE `pma_test` (' . "\n" + . ' `test_id` int(32) NOT NULL,' . "\n" + . ' `time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP' . "\n" + . ') ENGINE=InnoDB DEFAULT CHARSET=utf8' . "\n" + . 'PARTITION BY RANGE (test_id)' . "\n" + . '(' . "\n" + . 'PARTITION p0 VALUES LESS THAN (250000) ENGINE=InnoDB,' . "\n" + . 'PARTITION p1 VALUES LESS THAN (500000) ENGINE=InnoDB,' . "\n" + . 'PARTITION p2 VALUES LESS THAN (750000) ENGINE=InnoDB,' . "\n" + . 'PARTITION p3 VALUES LESS THAN (1000000) ENGINE=InnoDB,' . "\n" + . 'PARTITION p4 VALUES LESS THAN (1250000) ENGINE=InnoDB,' . "\n" + . 'PARTITION p5 VALUES LESS THAN (1500000) ENGINE=InnoDB,' . "\n" + . 'PARTITION p6 VALUES LESS THAN MAXVALUE ENGINE=InnoDB' . "\n" + . ')'; + $parser = new Parser($query); + $this->assertEquals($query, $parser->statements[0]->build()); + } + + public function partitionQueriesProvider(): array + { + return [ + [ + 'subparts' => << <<statements[0]; + + $this->assertEquals($query, $stmt->build()); + } + + public function testBuilderView(): void + { + $parser = new Parser( + 'CREATE VIEW myView (vid, vfirstname) AS ' . + 'SELECT id, first_name FROM employee WHERE id = 1' + ); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'CREATE VIEW myView (vid, vfirstname) AS ' . + 'SELECT id, first_name FROM employee WHERE id = 1 ', + $stmt->build() + ); + + $parser = new Parser( + 'CREATE OR REPLACE VIEW myView (vid, vfirstname) AS ' . + 'SELECT id, first_name FROM employee WHERE id = 1' + ); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'CREATE OR REPLACE VIEW myView (vid, vfirstname) AS ' . + 'SELECT id, first_name FROM employee WHERE id = 1 ', + $stmt->build() + ); + + // Assert the builder can build wrong syntax select expressions + $parser = new Parser( + 'CREATE OR REPLACE VIEW myView (vid, vfirstname) AS ' . + 'SELECT id, first_name, FROMzz employee WHERE id = 1' + ); + $stmt = $parser->statements[0]; + $this->assertEquals( + 'CREATE OR REPLACE VIEW myView (vid, vfirstname) AS ' . + 'SELECT id, first_name, FROMzz employee WHERE id = 1 ', + $stmt->build() + ); + + $parser = new Parser( + 'CREATE OR REPLACE VIEW myView (vid, vfirstname) AS ' . + 'SELECT id, first_name, FROMzz employee WHERE id = 1 ' . + 'UNION ' . + 'SELECT id, first_name, FROMzz employee WHERE id = 2 ' + ); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'CREATE OR REPLACE VIEW myView (vid, vfirstname) AS ' . + 'SELECT id, first_name, FROMzz employee WHERE id = 1 ' . + 'UNION ' . + 'SELECT id, first_name, FROMzz employee WHERE id = 2 ', + $stmt->build() + ); + } + + public function testBuilderViewComplex(): void + { + $parser = new Parser( + 'CREATE VIEW withclause AS' . "\n" + . "\n" + . 'WITH cte AS (' . "\n" + . 'SELECT p.name, p.shape' . "\n" + . 'FROM gis_all as p' . "\n" + . ')' . "\n" + . "\n" + . 'SELECT cte.*' . "\n" + . 'FROM cte' . "\n" + . 'CROSS JOIN gis_all;' + ); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'CREATE VIEW withclause AS ' . "\n" + . "\n" + . 'WITH cte AS (' . "\n" + . 'SELECT p.name, p.shape' . "\n" + . 'FROM gis_all as p' . "\n" + . ')' . "\n" + . "\n" + . 'SELECT cte.*' . "\n" + . 'FROM cte' . "\n" + . 'CROSS JOIN gis_all ', + $stmt->build() + ); + $parser = new Parser( + 'CREATE VIEW withclause2 AS' . "\n" + . "\n" + . 'WITH cte AS (' . "\n" + . "\t" . 'SELECT p.name, p.shape' . "\n" + . "\t" . 'FROM gis_all as p' . "\n" + . '), cte2 AS (' . "\n" + . "\t" . 'SELECT p.name as n2, p.shape as sh2' . "\n" + . "\t" . 'FROM gis_all as p' . "\n" + . ')' . "\n" + . "\n" + . 'SELECT cte.*,cte2.*' . "\n" + . 'FROM cte,cte2' . "\n" + . 'CROSS JOIN gis_all;' + ); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'CREATE VIEW withclause2 AS ' . "\n" + . "\n" + . 'WITH cte AS (' . "\n" + . "\t" . 'SELECT p.name, p.shape' . "\n" + . "\t" . 'FROM gis_all as p' . "\n" + . '), cte2 AS (' . "\n" + . "\t" . 'SELECT p.name as n2, p.shape as sh2' . "\n" + . "\t" . 'FROM gis_all as p' . "\n" + . ')' . "\n" + . "\n" + . 'SELECT cte.*,cte2.*' . "\n" + . 'FROM cte,cte2' . "\n" + . 'CROSS JOIN gis_all ', + $stmt->build() + ); + } + + public function testBuilderCreateProcedure(): void + { + $parser = new Parser( + 'CREATE DEFINER=`root`@`%`' + . ' PROCEDURE `test2`(IN `_var` INT) NOT DETERMINISTIC NO SQL' + . ' SQL SECURITY INVOKER NO SQL SQL SECURITY INVOKER SELECT _var' + ); + + /** @var CreateStatement $stmt */ + $stmt = $parser->statements[0]; + + $this->assertSame( + 'CREATE DEFINER=`root`@`%`' + . ' PROCEDURE `test2` (IN `_var` INT) NOT DETERMINISTIC NO SQL' + . ' SQL SECURITY INVOKER NO SQL SQL SECURITY INVOKER SELECT _var', + $stmt->build() + ); + + $this->assertFalse($stmt->entityOptions->isEmpty()); + $this->assertFalse($stmt->options->isEmpty()); + $this->assertSame( + 'DEFINER=`root`@`%` PROCEDURE', + $stmt->options->__toString() + ); + + $this->assertSame( + '`test2`', + $stmt->name->__toString() + ); + + $this->assertSame( + '(IN `_var` INT)', + ParameterDefinition::build($stmt->parameters) + ); + + $this->assertSame( + 'NOT DETERMINISTIC NO SQL SQL SECURITY INVOKER NO SQL SQL SECURITY INVOKER', + $stmt->entityOptions->__toString() + ); + + $this->assertSame( + 'SELECT _var', + TokensList::build($stmt->body) + ); + } + + public function testBuilderCreateFunction(): void + { + $parser = new Parser( + 'CREATE DEFINER=`root`@`localhost`' + . ' FUNCTION `inventory_in_stock`(`p_inventory_id` INT) RETURNS tinyint(1)' + . ' READS SQL DATA' + . ' COMMENT \'My best function written by a friend\'\'s friend\'' + . ' BEGIN' . "\n" + . ' DECLARE v_rentals INT;' . "\n" + . ' DECLARE v_out INT;' . "\n" + . "\n" + . ' ' . "\n" + . ' ' . "\n" + . "\n" + . ' SELECT COUNT(*) INTO v_rentals' . "\n" + . ' FROM rental' . "\n" + . ' WHERE inventory_id = p_inventory_id;' . "\n" + . "\n" + . ' IF v_rentals = 0 THEN' . "\n" + . ' RETURN TRUE;' . "\n" + . ' END IF;' . "\n" + . "\n" + . ' SELECT COUNT(rental_id) INTO v_out' . "\n" + . ' FROM inventory LEFT JOIN rental USING(inventory_id)' . "\n" + . ' WHERE inventory.inventory_id = p_inventory_id' . "\n" + . ' AND rental.return_date IS NULL;' . "\n" + . "\n" + . ' IF v_out > 0 THEN' . "\n" + . ' RETURN FALSE;' . "\n" + . ' ELSE' . "\n" + . ' RETURN TRUE;' . "\n" + . ' END IF;' . "\n" + . 'END' + ); + + /** @var CreateStatement $stmt */ + $stmt = $parser->statements[0]; + + $this->assertSame( + 'CREATE DEFINER=`root`@`localhost`' + . ' FUNCTION `inventory_in_stock` (`p_inventory_id` INT) RETURNS TINYINT(1)' + . ' READS SQL DATA' + . ' COMMENT \'My best function written by a friend\'\'s friend\'' + . ' BEGIN' . "\n" + . ' DECLARE v_rentals INT;' . "\n" + . ' DECLARE v_out INT;' . "\n" + . "\n" + . ' ' . "\n" + . ' ' . "\n" + . "\n" + . ' SELECT COUNT(*) INTO v_rentals' . "\n" + . ' FROM rental' . "\n" + . ' WHERE inventory_id = p_inventory_id;' . "\n" + . "\n" + . ' IF v_rentals = 0 THEN' . "\n" + . ' RETURN TRUE;' . "\n" + . ' END IF;' . "\n" + . "\n" + . ' SELECT COUNT(rental_id) INTO v_out' . "\n" + . ' FROM inventory LEFT JOIN rental USING(inventory_id)' . "\n" + . ' WHERE inventory.inventory_id = p_inventory_id' . "\n" + . ' AND rental.return_date IS NULL;' . "\n" + . "\n" + . ' IF v_out > 0 THEN' . "\n" + . ' RETURN FALSE;' . "\n" + . ' ELSE' . "\n" + . ' RETURN TRUE;' . "\n" + . ' END IF;' . "\n" + . 'END', + $stmt->build() + ); + + $this->assertFalse($stmt->entityOptions->isEmpty()); + $this->assertFalse($stmt->options->isEmpty()); + + $this->assertSame( + 'DEFINER=`root`@`localhost` FUNCTION', + $stmt->options->__toString() + ); + + $this->assertSame( + '`inventory_in_stock`', + $stmt->name->__toString() + ); + + $this->assertSame( + '(`p_inventory_id` INT)', + ParameterDefinition::build($stmt->parameters) + ); + + $this->assertSame( + 'READS SQL DATA COMMENT \'My best function written by a friend\'\'s friend\'', + $stmt->entityOptions->__toString() + ); + + $this->assertSame( + 'BEGIN' . "\n" + . ' DECLARE v_rentals INT;' . "\n" + . ' DECLARE v_out INT;' . "\n" + . "\n" + . ' ' . "\n" + . ' ' . "\n" + . "\n" + . ' SELECT COUNT(*) INTO v_rentals' . "\n" + . ' FROM rental' . "\n" + . ' WHERE inventory_id = p_inventory_id;' . "\n" + . "\n" + . ' IF v_rentals = 0 THEN' . "\n" + . ' RETURN TRUE;' . "\n" + . ' END IF;' . "\n" + . "\n" + . ' SELECT COUNT(rental_id) INTO v_out' . "\n" + . ' FROM inventory LEFT JOIN rental USING(inventory_id)' . "\n" + . ' WHERE inventory.inventory_id = p_inventory_id' . "\n" + . ' AND rental.return_date IS NULL;' . "\n" + . "\n" + . ' IF v_out > 0 THEN' . "\n" + . ' RETURN FALSE;' . "\n" + . ' ELSE' . "\n" + . ' RETURN TRUE;' . "\n" + . ' END IF;' . "\n" + . 'END', + TokensList::build($stmt->body) + ); + } + + public function testBuilderTrigger(): void + { + $stmt = new CreateStatement(); + + $stmt->options = new OptionsArray(['TRIGGER']); + $stmt->name = new Expression('ins_sum'); + $stmt->entityOptions = new OptionsArray(['BEFORE', 'INSERT']); + $stmt->table = new Expression('account'); + $stmt->body = 'SET @sum = @sum + NEW.amount'; + + $this->assertEquals( + 'CREATE TRIGGER ins_sum BEFORE INSERT ON account ' . + 'FOR EACH ROW SET @sum = @sum + NEW.amount', + $stmt->build() + ); + } + + public function testBuilderRoutine(): void + { + $parser = new Parser( + 'CREATE FUNCTION test (IN `i` INT) RETURNS VARCHAR ' . + 'BEGIN ' . + 'DECLARE name VARCHAR DEFAULT ""; ' . + 'SELECT name INTO name FROM employees WHERE id = i; ' . + 'RETURN name; ' . + 'END' + ); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'CREATE FUNCTION test (IN `i` INT) RETURNS VARCHAR ' . + ' BEGIN ' . + 'DECLARE name VARCHAR DEFAULT ""; ' . + 'SELECT name INTO name FROM employees WHERE id = i; ' . + 'RETURN name; ' . + 'END', + $stmt->build() + ); + } + + public function testBuildSelect(): void + { + $parser = new Parser('CREATE TABLE new_tbl SELECT * FROM orig_tbl'); + $this->assertEquals( + 'CREATE TABLE new_tbl SELECT * FROM orig_tbl', + $parser->statements[0]->build() + ); + } + + public function testBuildCreateTableSortedIndex(): void + { + $parser = new Parser( + <<<'SQL' +CREATE TABLE `entries` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `fk_ug_id` int(11) DEFAULT NULL, + `amount` decimal(10,2) DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `entries__ug` (`fk_ug_id` DESC), + KEY `entries__ug2` (`fk_ug_id` ASC), + KEY `33` (`id` ASC, `fk_ug_id` DESC) +) /*!50100 TABLESPACE `innodb_system` */ ENGINE=InnoDB AUTO_INCREMENT=4465 DEFAULT CHARSET=utf8 +SQL + ); + + /** @var CreateStatement $stmt */ + $stmt = $parser->statements[0]; + + $tableBody = <<<'SQL' +( + `id` int(11) NOT NULL AUTO_INCREMENT, + `fk_ug_id` int(11) DEFAULT NULL, + `amount` decimal(10,2) DEFAULT NULL, + PRIMARY KEY (`id`), + KEY `entries__ug` (`fk_ug_id` DESC), + KEY `entries__ug2` (`fk_ug_id` ASC), + KEY `33` (`id` ASC,`fk_ug_id` DESC) +) +SQL; + + $this->assertEquals( + $tableBody, + CreateDefinition::build($stmt->fields) + ); + + $this->assertEquals( + 'CREATE TABLE `entries` ' + . $tableBody + . ' ENGINE=InnoDB AUTO_INCREMENT=4465 DEFAULT CHARSET=utf8 TABLESPACE `innodb_system`', + $stmt->build() + ); + } + + public function testBuildCreateTableComplexIndexes(): void + { + // phpcs:disable Generic.Files.LineLength.TooLong + $parser = new Parser( + <<<'SQL' +CREATE TABLE `page_rebuild_control` ( + `proc_row_number` int DEFAULT NULL, + `place_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `place_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `place_type` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `waterway_id` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `cache_updated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `place_active` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `alias_type` int NOT NULL DEFAULT '0', + `status` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `time_taken` float DEFAULT NULL, + PRIMARY KEY (`place_id`,`place_type`) USING BTREE, + KEY `place_type_idx` (`place_type`(10)), + KEY `cached_time_idx` (`cache_updated`), + KEY `active_idx` (`place_active`), + KEY `status_idx` (`status`), + KEY `waterway_idx` (`waterway_id`), + KEY `time_taken_idx` (`time_taken`), + KEY `updated_tz_ind3` ( + -- my expression + (convert_tz(`cache_updated`,_utf8mb4'GMT',_utf8mb4'GB')) + ) COMMENT 'foo\'s', + KEY `updated_tz_ind_two_indexes_commented` ( + -- first expression + ( + convert_tz(`cache_updated`,_utf8mb4'GMT',_utf8mb4'GB') + ) + , + -- second expression + ( + convert_tz(`cache_updated`,_utf8mb4'GMT',_utf8mb4'FR') + ) + ) + -- and now some options + COMMENT 'haha, this is a complex and indented case', + KEY `alias_type_idx` (`alias_type`), + KEY `updated_tz_ind2` ((convert_tz(`cache_updated`,_utf8mb4'GMT',_utf8mb4'GB'))) COMMENT 'foo\'s', + KEY `updated_tz_ind_two_indexes` ((convert_tz(`cache_updated`,_utf8mb4'GMT',_utf8mb4'GB')), (convert_tz(`cache_updated`,_utf8mb4'GMT',_utf8mb4'FR'))) COMMENT 'bar\'s', + KEY `updated_tz_ind` ((convert_tz(`cache_updated`,_utf8mb4'GMT',_utf8mb4'GB'))) + ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; +SQL + ); + // phpcs:enable + + /** @var CreateStatement $stmt */ + $stmt = $parser->statements[0]; + + // phpcs:disable Generic.Files.LineLength.TooLong + $tableBody = <<<'SQL' +( + `proc_row_number` int DEFAULT NULL, + `place_id` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `place_name` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `place_type` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `waterway_id` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `cache_updated` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP, + `place_active` varchar(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci NOT NULL, + `alias_type` int NOT NULL DEFAULT '0', + `status` varchar(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL, + `time_taken` float DEFAULT NULL, + PRIMARY KEY (`place_id`,`place_type`) USING BTREE, + KEY `place_type_idx` (`place_type`(10)), + KEY `cached_time_idx` (`cache_updated`), + KEY `active_idx` (`place_active`), + KEY `status_idx` (`status`), + KEY `waterway_idx` (`waterway_id`), + KEY `time_taken_idx` (`time_taken`), + KEY `updated_tz_ind3` ((convert_tz(`cache_updated`,_utf8mb4'GMT',_utf8mb4'GB'))) COMMENT 'foo\'s', + KEY `updated_tz_ind_two_indexes_commented` (( + convert_tz(`cache_updated`,_utf8mb4'GMT',_utf8mb4'GB') + ), ( + convert_tz(`cache_updated`,_utf8mb4'GMT',_utf8mb4'FR') + )) COMMENT 'haha, this is a complex and indented case', + KEY `alias_type_idx` (`alias_type`), + KEY `updated_tz_ind2` ((convert_tz(`cache_updated`,_utf8mb4'GMT',_utf8mb4'GB'))) COMMENT 'foo\'s', + KEY `updated_tz_ind_two_indexes` ((convert_tz(`cache_updated`,_utf8mb4'GMT',_utf8mb4'GB')), (convert_tz(`cache_updated`,_utf8mb4'GMT',_utf8mb4'FR'))) COMMENT 'bar\'s', + KEY `updated_tz_ind` ((convert_tz(`cache_updated`,_utf8mb4'GMT',_utf8mb4'GB'))) +) +SQL; + // phpcs:enable + + $this->assertEquals( + $tableBody, + CreateDefinition::build($stmt->fields) + ); + + $this->assertEquals( + 'CREATE TABLE `page_rebuild_control` ' + . $tableBody + . ' ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci', + $stmt->build() + ); + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Builder/DeleteStatementTest.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Builder/DeleteStatementTest.php new file mode 100644 index 0000000000..60f1e7287a --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Builder/DeleteStatementTest.php @@ -0,0 +1,99 @@ +statements[0]; + + $this->assertEquals($query, $stmt->build()); + + /* Assertion 2 */ + $query = 'DELETE IGNORE FROM t1 WHERE 1=1'; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals($query, $stmt->build()); + + /* Assertion 3 */ + $query = 'DELETE IGNORE FROM t1 WHERE 1=1 ORDER BY id ASC'; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals($query, $stmt->build()); + + /* Assertion 4 */ + $query = 'DELETE IGNORE FROM t1 WHERE 1=1 ORDER BY id ASC LIMIT 0, 25'; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals($query, $stmt->build()); + + /* Assertion 5 */ + $query = 'DELETE IGNORE FROM t1'; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals($query, $stmt->build()); + + /* Assertion 6 */ + $query = 'DELETE LOW_PRIORITY FROM `test`.users ' + . 'WHERE `id`<3 AND (username="Dan" OR username="Paul") ORDER BY id ASC'; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals($query, $stmt->build()); + } + + public function testBuilderMultiTable(): void + { + /* Assertion 1 */ + $query = 'DELETE QUICK table1, table2.* FROM table1 AS `t1`, table2 AS `t2`'; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals($query, $stmt->build()); + + /* Assertion 2 */ + $query = 'DELETE QUICK table1, table2.* FROM table1 AS `t1`, table2 AS `t2` WHERE 1=1'; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals($query, $stmt->build()); + + /* Assertion 3 */ + $query = 'DELETE QUICK FROM table1, table2.* USING table1 AS `t1`, table2 AS `t2` WHERE 1=1'; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals($query, $stmt->build()); + + /* Assertion 4 */ + $query = 'DELETE LOW_PRIORITY t1, t2 FROM t1 INNER JOIN t2 ' + . 'INNER JOIN t3 WHERE t1.id=t2.id AND t2.id=t3.id'; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals($query, $stmt->build()); + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Builder/ExplainStatementTest.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Builder/ExplainStatementTest.php new file mode 100644 index 0000000000..976ec9cce9 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Builder/ExplainStatementTest.php @@ -0,0 +1,24 @@ +statements[0]; + + $this->assertEquals( + ' EXPLAIN SELECT * FROM test', + $stmt->build() + ); + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Builder/InsertStatementTest.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Builder/InsertStatementTest.php new file mode 100644 index 0000000000..d177a00147 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Builder/InsertStatementTest.php @@ -0,0 +1,67 @@ +statements[0]; + $this->assertEquals( + 'INSERT INTO tbl(`col1`, `col2`, `col3`) VALUES (1, "str", 3.14)', + $stmt->build() + ); + + /* Assertion 2 */ + /* Reserved keywords (with backqoutes as field name) */ + $parser = new Parser('INSERT INTO tbl(`order`) VALUES (1)'); + $stmt = $parser->statements[0]; + $this->assertEquals( + 'INSERT INTO tbl(`order`) VALUES (1)', + $stmt->build() + ); + + /* Assertion 3 */ + /* INSERT ... SET ... */ + $parser = new Parser('INSERT INTO tbl SET FOO = 1'); + $stmt = $parser->statements[0]; + $this->assertEquals( + 'INSERT INTO tbl SET FOO = 1', + $stmt->build() + ); + + /* Assertion 4 */ + /* INSERT ... SELECT ... */ + $parser = new Parser('INSERT INTO tbl SELECT * FROM bar'); + $stmt = $parser->statements[0]; + $this->assertEquals( + 'INSERT INTO tbl SELECT * FROM bar', + $stmt->build() + ); + + /* Assertion 5 */ + /* INSERT ... ON DUPLICATE KEY UPDATE ... */ + $parser = new Parser('INSERT INTO tbl SELECT * FROM bar ON DUPLICATE KEY UPDATE baz = 1'); + $stmt = $parser->statements[0]; + $this->assertEquals( + 'INSERT INTO tbl SELECT * FROM bar ON DUPLICATE KEY UPDATE baz = 1', + $stmt->build() + ); + + /* Assertion 6 */ + /* INSERT [OPTIONS] INTO ... */ + $parser = new Parser('INSERT DELAYED IGNORE INTO tbl SELECT * FROM bar'); + $stmt = $parser->statements[0]; + $this->assertEquals( + 'INSERT DELAYED IGNORE INTO tbl SELECT * FROM bar', + $stmt->build() + ); + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Builder/LoadStatementTest.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Builder/LoadStatementTest.php new file mode 100644 index 0000000000..bc3d1c9220 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Builder/LoadStatementTest.php @@ -0,0 +1,108 @@ +statements[0]; + + $this->assertEquals( + 'LOAD DATA CONCURRENT INFILE ' + . '\'employee1.txt\' INTO TABLE employee', + $stmt->build() + ); + + /* Assertion 2 */ + $query = 'LOAD DATA INFILE \'/tmp/test.txt\' ' + . 'INTO TABLE test FIELDS TERMINATED BY ' + . '\',\' IGNORE 1 LINES'; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'LOAD DATA INFILE \'/tmp/test.txt\' ' + . 'INTO TABLE test FIELDS TERMINATED BY ' + . '\',\' IGNORE 1 LINES', + $stmt->build() + ); + + /* Assertion 3 */ + $query = 'LOAD DATA INFILE \'employee3.txt\' ' + . 'INTO TABLE employee FIELDS TERMINATED BY ' + . '\',\' ENCLOSED BY \'"\''; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'LOAD DATA INFILE \'employee3.txt\' ' + . 'INTO TABLE employee FIELDS TERMINATED BY ' + . '\',\' ENCLOSED BY \'"\'', + $stmt->build() + ); + + /* Assertion 4 */ + $query = 'LOAD DATA INFILE \'/tmp/test.txt\' IGNORE ' + . 'INTO TABLE test ' + . 'CHARACTER SET \'utf8\' ' + . 'COLUMNS TERMINATED BY \',\' ' + . 'LINES TERMINATED BY \';\' ' + . 'IGNORE 1 LINES (col1, col2) SET @a = 1'; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'LOAD DATA INFILE \'/tmp/test.txt\' IGNORE ' + . 'INTO TABLE test ' + . 'CHARACTER SET \'utf8\' ' + . 'COLUMNS TERMINATED BY \',\' ' + . 'LINES TERMINATED BY \';\' ' + . 'IGNORE 1 LINES (col1, col2) SET @a = 1', + $stmt->build() + ); + + /* Assertion 5 */ + $query = 'LOAD DATA INFILE \'/tmp/test.txt\' REPLACE ' + . 'INTO TABLE test COLUMNS TERMINATED BY \',\' IGNORE 1 ROWS'; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'LOAD DATA INFILE \'/tmp/test.txt\' REPLACE ' + . 'INTO TABLE test COLUMNS TERMINATED BY \',\' IGNORE 1 ROWS', + $stmt->build() + ); + + /* Assertion 6 */ + $query = 'LOAD DATA INFILE \'/tmp/test.txt\' IGNORE ' + . 'INTO TABLE test PARTITION (p0, p1, p2) CHARACTER SET \'utf8\' ' + . 'COLUMNS TERMINATED BY \',\' LINES TERMINATED BY \';\' ' + . 'IGNORE 1 LINES (col1, col2) SET @a = 1'; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'LOAD DATA INFILE \'/tmp/test.txt\' IGNORE ' + . 'INTO TABLE test PARTITION (p0, p1, p2) CHARACTER SET \'utf8\' ' + . 'COLUMNS TERMINATED BY \',\' LINES TERMINATED BY \';\' ' + . 'IGNORE 1 LINES (col1, col2) SET @a = 1', + $stmt->build() + ); + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Builder/LockStatementTest.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Builder/LockStatementTest.php new file mode 100644 index 0000000000..e20caad760 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Builder/LockStatementTest.php @@ -0,0 +1,70 @@ +statements[0]; + + $this->assertEquals($query, $stmt->build()); + + /* Assertion 2 */ + $query = 'LOCK TABLES table1 AS `t1` READ'; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals($query, $stmt->build()); + + /* Assertion 3 */ + $query = 'LOCK TABLES table1 AS `t1` LOW_PRIORITY WRITE'; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals($query, $stmt->build()); + + /* Assertion 4 */ + $query = 'LOCK TABLES table1 AS `t1` WRITE'; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals($query, $stmt->build()); + + /* Assertion 5 */ + $query = 'LOCK TABLES table1 AS `t1` READ LOCAL, table2 AS `t2` WRITE'; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals($query, $stmt->build()); + + /* Assertion 6 */ + $query = 'LOCK TABLES table1 READ LOCAL, table2 AS `t2` WRITE'; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals($query, $stmt->build()); + + /* Assertion 7 */ + $query = 'UNLOCK TABLES'; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals($query, $stmt->build()); + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Builder/PurgeStatementTest.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Builder/PurgeStatementTest.php new file mode 100644 index 0000000000..68b582ce4a --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Builder/PurgeStatementTest.php @@ -0,0 +1,24 @@ +statements[0]; + $this->assertEquals($query, $stmt->build()); + + $query = 'PURGE BINARY LOGS BEFORE \'2008-04-02 22:46:26\''; + $parser = new Parser($query); + $stmt = $parser->statements[0]; + $this->assertEquals($query, $stmt->build()); + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Builder/RenameStatementTest.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Builder/RenameStatementTest.php new file mode 100644 index 0000000000..5d495cb70d --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Builder/RenameStatementTest.php @@ -0,0 +1,38 @@ +statements[0]; + $this->assertEquals( + $query, + $stmt->build() + ); + + $query = 'RENAME TABLE current_db.tbl_name TO other_db.tbl_name'; + $parser = new Parser($query); + $stmt = $parser->statements[0]; + $this->assertEquals( + $query, + $stmt->build() + ); + + $query = 'RENAME TABLE old_table1 TO new_table1, old_table2 TO new_table2, old_table3 TO new_table3'; + $parser = new Parser($query); + $stmt = $parser->statements[0]; + $this->assertEquals( + $query, + $stmt->build() + ); + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Builder/ReplaceStatementTest.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Builder/ReplaceStatementTest.php new file mode 100644 index 0000000000..e5f2475172 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Builder/ReplaceStatementTest.php @@ -0,0 +1,51 @@ +statements[0]; + $this->assertEquals( + 'REPLACE INTO tbl(`col1`, `col2`, `col3`) VALUES (1, "str", 3.14)', + $stmt->build() + ); + } + + public function testBuilderSet(): void + { + $parser = new Parser('REPLACE INTO tbl(col1, col2, col3) SET col1=1, col2="str", col3=3.14'); + $stmt = $parser->statements[0]; + $this->assertEquals( + 'REPLACE INTO tbl(`col1`, `col2`, `col3`) SET col1 = 1, col2 = "str", col3 = 3.14', + $stmt->build() + ); + } + + public function testBuilderSelect(): void + { + $parser = new Parser('REPLACE INTO tbl(col1, col2, col3) SELECT col1, col2, col3 FROM tbl2'); + $stmt = $parser->statements[0]; + $this->assertEquals( + 'REPLACE INTO tbl(`col1`, `col2`, `col3`) SELECT col1, col2, col3 FROM tbl2', + $stmt->build() + ); + } + + public function testBuilderSelectDelayed(): void + { + $parser = new Parser('REPLACE DELAYED INTO tbl(col1, col2, col3) SELECT col1, col2, col3 FROM tbl2'); + $stmt = $parser->statements[0]; + $this->assertEquals( + 'REPLACE DELAYED INTO tbl(`col1`, `col2`, `col3`) SELECT col1, col2, col3 FROM tbl2', + $stmt->build() + ); + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Builder/SelectStatementTest.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Builder/SelectStatementTest.php new file mode 100644 index 0000000000..3679d81603 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Builder/SelectStatementTest.php @@ -0,0 +1,267 @@ +statements[0]; + + $this->assertEquals( + 'SELECT * FROM t1 LEFT JOIN (t2, t3, t4) ' + . 'ON (t2.a=t1.a AND t3.b=t1.b AND t4.c=t1.c)', + $stmt->build() + ); + } + + public function testBuilderUnion(): void + { + $parser = new Parser('SELECT 1 UNION SELECT 2'); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'SELECT 1 UNION SELECT 2', + $stmt->build() + ); + } + + public function testBuilderAlias(): void + { + $parser = new Parser( + 'SELECT sgu.id, sgu.email_address FROM `sf_guard_user` sgu ' + . 'RIGHT JOIN `student_course_booking` scb ON sgu.id = scb.user_id ' + . 'WHERE `has_found_course` = \'1\' GROUP BY sgu.id ' + . 'ORDER BY scb.id DESC LIMIT 0,300' + ); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'SELECT sgu.id, sgu.email_address FROM `sf_guard_user` AS `sgu` ' + . 'RIGHT JOIN `student_course_booking` AS `scb` ON sgu.id = scb.user_id ' + . 'WHERE `has_found_course` = \'1\' GROUP BY sgu.id ' + . 'ORDER BY scb.id DESC LIMIT 0, 300', + $stmt->build() + ); + } + + public function testBuilderAliasOrder(): void + { + $parser = new Parser( + 'SELECT sgu.id, sgu.email_address FROM `sf_guard_user` sgu ' + . 'RIGHT JOIN `student_course_booking` scb ON sgu.id = scb.user_id ' + . 'WHERE `has_found_course` = \'1\' GROUP BY sgu.id ' + . 'ORDER BY scb.id LIMIT 0,300' + ); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'SELECT sgu.id, sgu.email_address FROM `sf_guard_user` AS `sgu` ' + . 'RIGHT JOIN `student_course_booking` AS `scb` ON sgu.id = scb.user_id ' + . 'WHERE `has_found_course` = \'1\' GROUP BY sgu.id ' + . 'ORDER BY scb.id ASC LIMIT 0, 300', + $stmt->build() + ); + } + + public function testBuilderAliasOrderMultiple(): void + { + $parser = new Parser( + 'SELECT sgu.id, sgu.email_address FROM `sf_guard_user` sgu ' + . 'RIGHT JOIN `student_course_booking` scb ON sgu.id = scb.user_id ' + . 'WHERE `has_found_course` = \'1\' GROUP BY sgu.id ' + . 'ORDER BY scb.id DESC, scb.order LIMIT 0,300' + ); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'SELECT sgu.id, sgu.email_address FROM `sf_guard_user` AS `sgu` ' + . 'RIGHT JOIN `student_course_booking` AS `scb` ON sgu.id = scb.user_id ' + . 'WHERE `has_found_course` = \'1\' GROUP BY sgu.id ' + . 'ORDER BY scb.id DESC, scb.order ASC LIMIT 0, 300', + $stmt->build() + ); + } + + public function testBuilderAliasOrderMultipleFunctions(): void + { + $parser = new Parser( + 'SELECT sgu.id, sgu.email_address FROM `sf_guard_user` sgu ' + . 'RIGHT JOIN `student_course_booking` scb ON sgu.id = scb.user_id ' + . 'WHERE `has_found_course` = \'1\' GROUP BY sgu.id ' + . 'ORDER BY scb.id DESC, YEAR(scb.dob) LIMIT 0,300' + ); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'SELECT sgu.id, sgu.email_address FROM `sf_guard_user` AS `sgu` ' + . 'RIGHT JOIN `student_course_booking` AS `scb` ON sgu.id = scb.user_id ' + . 'WHERE `has_found_course` = \'1\' GROUP BY sgu.id ' + . 'ORDER BY scb.id DESC, YEAR(scb.dob) ASC LIMIT 0, 300', + $stmt->build() + ); + } + + public function testBuilderAliasGroupByMultipleFunctions(): void + { + $parser = new Parser( + 'SELECT sgu.id, sgu.email_address FROM `sf_guard_user` sgu ' + . 'RIGHT JOIN `student_course_booking` scb ON sgu.id = scb.user_id ' + . 'WHERE `has_found_course` = \'1\' ' + . 'GROUP BY scb.id, YEAR(scb.dob) LIMIT 0,300' + ); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'SELECT sgu.id, sgu.email_address FROM `sf_guard_user` AS `sgu` ' + . 'RIGHT JOIN `student_course_booking` AS `scb` ON sgu.id = scb.user_id ' + . 'WHERE `has_found_course` = \'1\' ' + . 'GROUP BY scb.id, YEAR(scb.dob) LIMIT 0, 300', + $stmt->build() + ); + } + + public function testBuilderAliasGroupByMultipleFunctionsOrderRemoved(): void + { + $parser = new Parser( + 'SELECT sgu.id, sgu.email_address FROM `sf_guard_user` sgu ' + . 'RIGHT JOIN `student_course_booking` scb ON sgu.id = scb.user_id ' + . 'WHERE `has_found_course` = \'1\' ' + . 'GROUP BY scb.id ASC, YEAR(scb.dob) DESC LIMIT 0,300' + ); + $stmt = $parser->statements[0]; + + // The order is not kept, is this an expected behavior ? + // Ref: 4af06d24b041e499fb0e75ab3a98caf9a91700ef + // Issue: #154 + $this->assertEquals( + 'SELECT sgu.id, sgu.email_address FROM `sf_guard_user` AS `sgu` ' + . 'RIGHT JOIN `student_course_booking` AS `scb` ON sgu.id = scb.user_id ' + . 'WHERE `has_found_course` = \'1\' ' + . 'GROUP BY scb.id, YEAR(scb.dob) LIMIT 0, 300', + $stmt->build() + ); + } + + public function testBuilderAliasOrderCase(): void + { + $parser = new Parser( + 'SELECT * FROM `world_borders` ORDER BY CASE ' + . 'WHEN REGION = 2 THEN 99 ' + . 'WHEN REGION > 3 THEN REGION+1 ' + . 'ELSE 100 END LIMIT 0,300' + ); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'SELECT * FROM `world_borders` ORDER BY CASE ' + . 'WHEN REGION = 2 THEN 99 ' + . 'WHEN REGION > 3 THEN REGION+1 ' + . 'ELSE 100 END ASC LIMIT 0, 300', + $stmt->build() + ); + } + + public function testBuilderAliasGroupByCase(): void + { + $parser = new Parser( + 'SELECT * FROM `world_borders` GROUP BY CASE ' + . 'WHEN REGION = 2 THEN 99 ' + . 'WHEN REGION > 3 THEN REGION+1 ' + . 'ELSE 100 END LIMIT 0,300' + ); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'SELECT * FROM `world_borders` GROUP BY CASE ' + . 'WHEN REGION = 2 THEN 99 ' + . 'WHEN REGION > 3 THEN REGION+1 ' + . 'ELSE 100 END LIMIT 0, 300', + $stmt->build() + ); + } + + public function testBuilderEndOptions(): void + { + /* Assertion 1 */ + $query = 'SELECT pid, name2 FROM tablename WHERE pid = 20 FOR UPDATE'; + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals( + $query, + $stmt->build() + ); + + /* Assertion 2 */ + $query = 'SELECT pid, name2 FROM tablename WHERE pid = 20 LOCK IN SHARE MODE'; + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals( + $query, + $stmt->build() + ); + } + + public function testBuilderIntoOptions(): void + { + /* Assertion 1 */ + $query = 'SELECT a, b, a+b INTO OUTFILE "/tmp/result.txt"' + . ' COLUMNS TERMINATED BY \',\' OPTIONALLY ENCLOSED BY \'"\'' + . ' LINES TERMINATED BY \'\n\'' + . ' FROM test_table'; + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals( + $query, + $stmt->build() + ); + } + + public function testBuilderGroupBy(): void + { + $query = 'SELECT COUNT(CustomerID), Country FROM Customers GROUP BY Country'; + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals( + $query, + $stmt->build() + ); + } + + public function testBuilderIndexHint(): void + { + $query = 'SELECT * FROM address FORCE INDEX (idx_fk_city_id) IGNORE KEY FOR GROUP BY (a, b,c) WHERE city_id<0'; + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals( + $query, + $stmt->build() + ); + } + + public function testBuilderSurroundedByParanthesisWithLimit(): void + { + $query = '(SELECT first_name FROM `actor` LIMIT 1, 2)'; + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'SELECT first_name FROM `actor` LIMIT 1, 2', + $stmt->build() + ); + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Builder/SetStatementTest.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Builder/SetStatementTest.php new file mode 100644 index 0000000000..5f97c8bcac --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Builder/SetStatementTest.php @@ -0,0 +1,179 @@ +statements[0]; + + $this->assertEquals( + $query, + $stmt->build() + ); + + /* Assertion 2 */ + $query = 'SET CHARSET \'utf8\''; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals( + $query, + $stmt->build() + ); + + /* Assertion 3 */ + $query = 'SET NAMES \'utf8\''; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals( + $query, + $stmt->build() + ); + + /* Assertion 4 */ + $query = 'SET NAMES \'utf8\' COLLATE \'utf8_general_ci\''; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'SET NAMES \'utf8\' COLLATE \'utf8_general_ci\'', + $stmt->build() + ); + + /* Assertion 5 */ + $query = 'SET NAMES \'utf8\' DEFAULT'; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'SET NAMES \'utf8\' DEFAULT', + $stmt->build() + ); + + /* Assertion 6 */ + $query = 'SET sql_mode = \'TRADITIONAL\''; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'SET sql_mode = \'TRADITIONAL\'', + $stmt->build() + ); + + /* Assertion 7 */ + $query = 'SET SESSION sql_mode = \'TRADITIONAL\''; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'SET SESSION sql_mode = \'TRADITIONAL\'', + $stmt->build() + ); + + /* Assertion 8 */ + $query = 'SET GLOBAL sql_mode = \'TRADITIONAL\''; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'SET GLOBAL sql_mode = \'TRADITIONAL\'', + $stmt->build() + ); + + /* Assertion 9 */ + $query = 'SET @@SESSION sql_mode = \'TRADITIONAL\''; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'SET SESSION sql_mode = \'TRADITIONAL\'', + $stmt->build() + ); + + /* Assertion 10 */ + $query = 'SET @@GLOBAL sql_mode = \'TRADITIONAL\''; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'SET GLOBAL sql_mode = \'TRADITIONAL\'', + $stmt->build() + ); + + /* Assertion 11 */ + $query = 'SET @@sql_mode = \'TRADITIONAL\''; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'SET @@sql_mode = \'TRADITIONAL\'', + $stmt->build() + ); + + /* Assertion 12 */ + $query = 'SET PERSIST sql_mode = \'TRADITIONAL\''; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'SET PERSIST sql_mode = \'TRADITIONAL\'', + $stmt->build() + ); + + /* Assertion 13 */ + $query = 'SET PERSIST_ONLY sql_mode = \'TRADITIONAL\''; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'SET PERSIST_ONLY sql_mode = \'TRADITIONAL\'', + $stmt->build() + ); + + /* Assertion 14 */ + $query = 'SET @@PERSIST sql_mode = \'TRADITIONAL\''; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'SET PERSIST sql_mode = \'TRADITIONAL\'', + $stmt->build() + ); + + /* Assertion 15 */ + $query = 'SET @@PERSIST_ONLY sql_mode = \'TRADITIONAL\''; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals( + 'SET PERSIST_ONLY sql_mode = \'TRADITIONAL\'', + $stmt->build() + ); + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Builder/StatementTest.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Builder/StatementTest.php new file mode 100644 index 0000000000..ea483ccdaf --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Builder/StatementTest.php @@ -0,0 +1,42 @@ +options = new OptionsArray(['DISTINCT']); + + $stmt->expr[] = new Expression('sakila', 'film', 'film_id', 'fid'); + $stmt->expr[] = new Expression('COUNT(film_id)'); + + $stmt->from[] = new Expression('', 'film', ''); + $stmt->from[] = new Expression('', 'actor', ''); + + $stmt->where[] = new Condition('film_id > 10'); + $stmt->where[] = new Condition('OR'); + $stmt->where[] = new Condition('actor.age > 25'); + + $stmt->limit = new Limit(1, 10); + + $this->assertEquals( + 'SELECT DISTINCT `sakila`.`film`.`film_id` AS `fid`, COUNT(film_id) ' . + 'FROM `film`, `actor` ' . + 'WHERE film_id > 10 OR actor.age > 25 ' . + 'LIMIT 10, 1', + (string) $stmt + ); + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Builder/TransactionStatementTest.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Builder/TransactionStatementTest.php new file mode 100644 index 0000000000..4da0dd1445 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Builder/TransactionStatementTest.php @@ -0,0 +1,30 @@ +statements[0]; + + $this->assertEquals( + 'START TRANSACTION;' . + 'SELECT @A:=SUM(salary) FROM table1 WHERE type=1;' . + 'UPDATE table2 SET summary = @A WHERE type=1;' . + 'COMMIT', + $stmt->build() + ); + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Builder/TruncateStatementTest.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Builder/TruncateStatementTest.php new file mode 100644 index 0000000000..f848d82be6 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Builder/TruncateStatementTest.php @@ -0,0 +1,41 @@ +statements[0]; + + $this->assertEquals($query, $stmt->build()); + } + + public function testBuilderDbtable(): void + { + $query = 'TRUNCATE TABLE mydb.mytable;'; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals($query, $stmt->build()); + } + + public function testBuilderDbtableBackQuotes(): void + { + $query = 'TRUNCATE TABLE `mydb`.`mytable`;'; + + $parser = new Parser($query); + $stmt = $parser->statements[0]; + + $this->assertEquals($query, $stmt->build()); + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Components/Array2dTest.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Components/Array2dTest.php new file mode 100644 index 0000000000..3b284eba14 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Components/Array2dTest.php @@ -0,0 +1,94 @@ +getTokensList('(1, 2) +')); + $this->assertEquals( + [ + 1, + 2, + ], + $arrays[0]->values + ); + } + + public function testBuild(): void + { + $arrays = Array2d::parse(new Parser(), $this->getTokensList('(1, 2), (3, 4), (5, 6)')); + $this->assertEquals( + '(1, 2), (3, 4), (5, 6)', + Array2d::build($arrays) + ); + } + + public function testParseErr1(): void + { + $parser = new Parser(); + Array2d::parse($parser, $this->getTokensList('(1, 2 +')); + + $this->markTestIncomplete('This test has not been implemented yet.'); + } + + public function testParseErr2(): void + { + $parser = new Parser(); + Array2d::parse($parser, $this->getTokensList('(1, 2 TABLE')); + + $this->markTestIncomplete('This test has not been implemented yet.'); + } + + public function testParseErr3(): void + { + $parser = new Parser(); + Array2d::parse($parser, $this->getTokensList(')')); + $this->assertCount(1, $parser->errors); + $this->assertEquals( + 'An opening bracket followed by a set of values was expected.', + $parser->errors[0]->getMessage() + ); + } + + public function testParseErr4(): void + { + $parser = new Parser(); + Array2d::parse($parser, $this->getTokensList('TABLE')); + $this->assertCount(1, $parser->errors); + $this->assertEquals( + 'An opening bracket followed by a set of values was expected.', + $parser->errors[0]->getMessage() + ); + } + + public function testParseErr5(): void + { + $parser = new Parser(); + Array2d::parse($parser, $this->getTokensList('(1, 2),')); + $this->assertCount(1, $parser->errors); + $this->assertEquals( + 'An opening bracket followed by a set of values was expected.', + $parser->errors[0]->getMessage() + ); + } + + public function testParseErr6(): void + { + $parser = new Parser(); + Array2d::parse($parser, $this->getTokensList('(1, 2),(3)')); + $this->assertCount(1, $parser->errors); + $this->assertEquals( + '2 values were expected, but found 1.', + $parser->errors[0]->getMessage() + ); + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Components/ArrayObjTest.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Components/ArrayObjTest.php new file mode 100644 index 0000000000..854ba27209 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Components/ArrayObjTest.php @@ -0,0 +1,59 @@ +assertEquals('(a, b)', ArrayObj::build($component)); + } + + public function testBuildValues(): void + { + $component = new ArrayObj([], ['a', 'b']); + $this->assertEquals('(a, b)', ArrayObj::build($component)); + } + + public function testParseType(): void + { + $components = ArrayObj::parse( + new Parser(), + $this->getTokensList('(1 + 2, 3 + 4)'), + [ + 'type' => Expression::class, + 'typeOptions' => ['breakOnParentheses' => true], + ] + ); + $this->assertInstanceOf(Expression::class, $components[0]); + $this->assertInstanceOf(Expression::class, $components[1]); + $this->assertEquals($components[0]->expr, '1 + 2'); + $this->assertEquals($components[1]->expr, '3 + 4'); + } + + /** + * @param mixed $test + * + * @dataProvider parseProvider + */ + public function testParse($test): void + { + $this->runParserTest($test); + } + + public function parseProvider(): array + { + return [ + ['parser/parseArrayErr1'], + ['parser/parseArrayErr3'], + ]; + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Components/CaseExpressionTest.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Components/CaseExpressionTest.php new file mode 100644 index 0000000000..c5bcbe063f --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Components/CaseExpressionTest.php @@ -0,0 +1,128 @@ +getTokensList($caseExprQuery) + ); + $this->assertEquals( + CaseExpression::build($component), + 'CASE 1 WHEN 1 THEN "Some" ELSE "Other" END' + ); + } + + public function testParseBuild2(): void + { + $caseExprQuery = 'case when 1=1 then "India" else "Other" end'; + $component = CaseExpression::parse( + new Parser(), + $this->getTokensList($caseExprQuery) + ); + $this->assertEquals( + CaseExpression::build($component), + 'CASE WHEN 1=1 THEN "India" ELSE "Other" END' + ); + } + + public function testParseBuild3(): void + { + $caseExprQuery = 'case 1 when 1 then "Some" ' + . 'when 2 then "SomeOther" else "Other" end'; + $component = CaseExpression::parse( + new Parser(), + $this->getTokensList($caseExprQuery) + ); + $this->assertEquals( + CaseExpression::build($component), + 'CASE 1 WHEN 1 THEN "Some" WHEN 2 THEN "SomeOther" ELSE "Other" END' + ); + } + + public function testParseBuild4(): void + { + $caseExprQuery = 'case 1 when 1 then "Some" ' + . 'when 2 then "SomeOther" end'; + $component = CaseExpression::parse( + new Parser(), + $this->getTokensList($caseExprQuery) + ); + $this->assertEquals( + CaseExpression::build($component), + 'CASE 1 WHEN 1 THEN "Some" WHEN 2 THEN "SomeOther" END' + ); + } + + public function testParseBuild5(): void + { + $caseExprQuery = 'case when 1=1 then "Some" ' + . 'when 1=2 then "SomeOther" else "Other" end'; + $component = CaseExpression::parse( + new Parser(), + $this->getTokensList($caseExprQuery) + ); + $this->assertEquals( + CaseExpression::build($component), + 'CASE WHEN 1=1 THEN "Some" WHEN 1=2 THEN "SomeOther" ELSE "Other" END' + ); + } + + public function testParseBuild6(): void + { + $caseExprQuery = 'case when 1=1 then "Some" ' + . 'when 1=2 then "SomeOther" end'; + $component = CaseExpression::parse( + new Parser(), + $this->getTokensList($caseExprQuery) + ); + $this->assertEquals( + CaseExpression::build($component), + 'CASE WHEN 1=1 THEN "Some" WHEN 1=2 THEN "SomeOther" END' + ); + } + + public function testParseBuild7(): void + { + $caseExprQuery = 'case when 1=1 then "Some" ' + . 'when 1=2 then "SomeOther" end AS foo'; + $component = CaseExpression::parse( + new Parser(), + $this->getTokensList($caseExprQuery) + ); + $this->assertEquals( + CaseExpression::build($component), + 'CASE WHEN 1=1 THEN "Some" WHEN 1=2 THEN "SomeOther" END AS `foo`' + ); + } + + public function testParseBuild8(): void + { + $caseExprQuery = 'case when 1=1 then "Some" ' + . 'when 1=2 then "SomeOther" end foo'; + $component = CaseExpression::parse( + new Parser(), + $this->getTokensList($caseExprQuery) + ); + $this->assertEquals( + CaseExpression::build($component), + 'CASE WHEN 1=1 THEN "Some" WHEN 1=2 THEN "SomeOther" END AS `foo`' + ); + } + + public function testBuildWithIncompleteCaseExpression(): void + { + $incompleteCaseExpressionComponent = new CaseExpression(); + $this->assertEquals('CASE END', CaseExpression::build($incompleteCaseExpressionComponent)); + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Components/ComponentTest.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Components/ComponentTest.php new file mode 100644 index 0000000000..1c9462ebc6 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Components/ComponentTest.php @@ -0,0 +1,32 @@ +expectExceptionMessage('Not implemented yet.'); + $this->expectException(Throwable::class); + Component::parse(new Parser(), new TokensList()); + } + + public function testBuild(): void + { + $this->expectExceptionMessage('Not implemented yet.'); + $this->expectException(Throwable::class); + Component::build(null); + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Components/ConditionTest.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Components/ConditionTest.php new file mode 100644 index 0000000000..909e4d1cf8 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Components/ConditionTest.php @@ -0,0 +1,29 @@ +getTokensList('/* id = */ id = 10')); + $this->assertEquals($component[0]->expr, 'id = 10'); + } + + public function testParseBetween(): void + { + $component = Condition::parse( + new Parser(), + $this->getTokensList('(id BETWEEN 10 AND 20) OR (id BETWEEN 30 AND 40)') + ); + $this->assertEquals($component[0]->expr, '(id BETWEEN 10 AND 20)'); + $this->assertEquals($component[1]->expr, 'OR'); + $this->assertEquals($component[2]->expr, '(id BETWEEN 30 AND 40)'); + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Components/CreateDefinitionTest.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Components/CreateDefinitionTest.php new file mode 100644 index 0000000000..6025c99b15 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Components/CreateDefinitionTest.php @@ -0,0 +1,154 @@ +getTokensList('(str TEXT, FULLTEXT INDEX indx (str))') + ); + $this->assertEquals('str', $component[0]->name); + $this->assertEquals('FULLTEXT INDEX', $component[1]->key->type); + $this->assertEquals('indx', $component[1]->key->name); + $this->assertEquals('FULLTEXT INDEX `indx` (`str`)', (string) $component[1]); + } + + public function testParse2(): void + { + $component = CreateDefinition::parse( + new Parser(), + $this->getTokensList('(str TEXT NOT NULL INVISIBLE)') + ); + $this->assertEquals('str', $component[0]->name); + $this->assertEquals('TEXT', $component[0]->type->name); + $this->assertTrue($component[0]->options->has('INVISIBLE')); + $this->assertTrue($component[0]->options->has('NOT NULL')); + } + + public function testParseErr1(): void + { + $parser = new Parser(); + $component = CreateDefinition::parse( + $parser, + $this->getTokensList('(str TEXT, FULLTEXT INDEX indx (str)') + ); + $this->assertCount(2, $component); + + $this->assertEquals( + 'A closing bracket was expected.', + $parser->errors[0]->getMessage() + ); + } + + public function testParseErr2(): void + { + $parser = new Parser(); + CreateDefinition::parse( + $parser, + $this->getTokensList(')') + ); + + $this->assertEquals( + 'An opening bracket was expected.', + $parser->errors[0]->getMessage() + ); + } + + public function testBuild(): void + { + $parser = new Parser( + 'CREATE TABLE `payment` (' . + '-- snippet' . "\n" . + '`customer_id` smallint(5) unsigned NOT NULL,' . + 'CONSTRAINT `fk_payment_customer` FOREIGN KEY (`customer_id`) ' . + 'REFERENCES `customer` (`customer_id`) ON UPDATE CASCADE' . + ') ENGINE=InnoDB"' + ); + $this->assertInstanceOf(CreateStatement::class, $parser->statements[0]); + $this->assertEquals( + 'CONSTRAINT `fk_payment_customer` FOREIGN KEY (`customer_id`) ' . + 'REFERENCES `customer` (`customer_id`) ON UPDATE CASCADE', + CreateDefinition::build($parser->statements[0]->fields[1]) + ); + } + + public function testBuild2(): void + { + $parser = new Parser( + 'CREATE TABLE `payment` (' . + '-- snippet' . "\n" . + '`customer_id` smallint(5) unsigned NOT NULL,' . + '`customer_data` longtext CHARACTER SET utf8mb4 CHARSET utf8mb4_bin NOT NULL ' . + 'CHECK (json_valid(customer_data)),CONSTRAINT `fk_payment_customer` FOREIGN KEY ' . + '(`customer_id`) REFERENCES `customer` (`customer_id`) ON UPDATE CASCADE' . + ') ENGINE=InnoDB"' + ); + $this->assertInstanceOf(CreateStatement::class, $parser->statements[0]); + $this->assertEquals( + 'CONSTRAINT `fk_payment_customer` FOREIGN KEY (`customer_id`) ' . + 'REFERENCES `customer` (`customer_id`) ON UPDATE CASCADE', + CreateDefinition::build($parser->statements[0]->fields[2]) + ); + } + + public function testBuild3(): void + { + $parser = new Parser( + 'DROP TABLE IF EXISTS `searches`;' + . 'CREATE TABLE `searches` (' + . ' `id` int(10) unsigned NOT NULL AUTO_INCREMENT,' + . ' `name` varchar(255) COLLATE utf8_unicode_ci NOT NULL,' + . ' `public_name` varchar(120) COLLATE utf8_unicode_ci NOT NULL,' + . ' `group_id` smallint(5) unsigned NOT NULL DEFAULT \'0\',' + . ' `shortdesc` tinytext COLLATE utf8_unicode_ci,' + . ' `show_separators` tinyint(1) NOT NULL DEFAULT \'0\',' + . ' `show_separators_two` tinyint(1) NOT NULL DEFAULT FALSE,' + . ' `deleted` tinyint(1) NOT NULL DEFAULT \'0\',' + . ' PRIMARY KEY (`id`)' + . ') ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci ;' + . '' + . 'ALTER TABLE `searches` ADD `admins_only` BOOLEAN NOT NULL DEFAULT FALSE AFTER `show_separators`;' + ); + $this->assertInstanceOf(CreateStatement::class, $parser->statements[1]); + $this->assertEquals( + '`public_name` varchar(120) COLLATE utf8_unicode_ci NOT NULL', + CreateDefinition::build($parser->statements[1]->fields[2]) + ); + $this->assertEquals( + '`show_separators` tinyint(1) NOT NULL DEFAULT \'0\'', + CreateDefinition::build($parser->statements[1]->fields[5]) + ); + $this->assertEquals( + '`show_separators_two` tinyint(1) NOT NULL DEFAULT FALSE', + CreateDefinition::build($parser->statements[1]->fields[6]) + ); + } + + public function testBuildWithInvisibleKeyword(): void + { + $parser = new Parser( + 'CREATE TABLE `payment` (' . + '-- snippet' . "\n" . + '`customer_id` smallint(5) unsigned NOT NULL INVISIBLE,' . + '`customer_data` longtext CHARACTER SET utf8mb4 CHARSET utf8mb4_bin NOT NULL ' . + 'CHECK (json_valid(customer_data)),CONSTRAINT `fk_payment_customer` FOREIGN KEY ' . + '(`customer_id`) REFERENCES `customer` (`customer_id`) ON UPDATE CASCADE' . + ') ENGINE=InnoDB"' + ); + $this->assertInstanceOf(CreateStatement::class, $parser->statements[0]); + $this->assertEquals( + '`customer_id` smallint(5) UNSIGNED NOT NULL INVISIBLE', + CreateDefinition::build($parser->statements[0]->fields[0]) + ); + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Components/ExpressionArrayTest.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Components/ExpressionArrayTest.php new file mode 100644 index 0000000000..2bf44d04b7 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Components/ExpressionArrayTest.php @@ -0,0 +1,54 @@ +getTokensList('(expr)'), + ['breakOnParentheses' => true] + ); + $this->assertEquals([], $component); + } + + public function testParse2(): void + { + $component = ExpressionArray::parse( + new Parser(), + $this->getTokensList('(expr) +'), + ['parenthesesDelimited' => true] + ); + $this->assertCount(1, $component); + $this->assertEquals('(expr)', $component[0]->expr); + } + + public function testParseWithCommentsNoOptions(): void + { + $component = ExpressionArray::parse( + new Parser(), + $this->getTokensList('(expr) -- comment ?') + ); + $this->assertCount(1, $component); + $this->assertEquals('(expr)', $component[0]->expr); + } + + public function testParseWithCommentsAndOptions(): void + { + $component = ExpressionArray::parse( + new Parser(), + $this->getTokensList('(expr -- comment ?)'), + ['parenthesesDelimited' => true] + ); + $this->assertCount(1, $component); + $this->assertEquals('(expr', $component[0]->expr); + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Components/ExpressionTest.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Components/ExpressionTest.php new file mode 100644 index 0000000000..54ee064896 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Components/ExpressionTest.php @@ -0,0 +1,78 @@ +getTokensList('IF(film_id > 0, film_id, film_id)')); + $this->assertEquals($component->expr, 'IF(film_id > 0, film_id, film_id)'); + } + + public function testParse2(): void + { + $component = Expression::parse(new Parser(), $this->getTokensList('col`test`')); + $this->assertEquals($component->expr, 'col'); + } + + /** + * @param mixed $expr + * @param mixed $error + * + * @dataProvider parseErrProvider + */ + public function testParseErr($expr, $error): void + { + $parser = new Parser(); + Expression::parse($parser, $this->getTokensList($expr)); + $errors = $this->getErrorsAsArray($parser); + $this->assertEquals($errors[0][0], $error); + } + + public function parseErrProvider(): array + { + return [ + /* + [ + '(1))', + 'Unexpected closing bracket.', + ], + */ + [ + 'tbl..col', + 'Unexpected dot.', + ], + [ + 'id AS AS id2', + 'An alias was expected.', + ], + [ + 'id`id2`\'id3\'', + 'An alias was previously found.', + ], + [ + '(id) id2 id3', + 'An alias was previously found.', + ], + ]; + } + + public function testBuild(): void + { + $component = [ + new Expression('1 + 2', 'three'), + new Expression('1 + 3', 'four'), + ]; + $this->assertEquals( + Expression::build($component), + '1 + 2 AS `three`, 1 + 3 AS `four`' + ); + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Components/FunctionCallTest.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Components/FunctionCallTest.php new file mode 100644 index 0000000000..3623412a64 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Components/FunctionCallTest.php @@ -0,0 +1,24 @@ +assertEquals('func(a, b)', FunctionCall::build($component)); + } + + public function testBuildArrayObj(): void + { + $component = new FunctionCall('func', new ArrayObj(['a', 'b'])); + $this->assertEquals('func(a, b)', FunctionCall::build($component)); + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Components/GroupKeywordTest.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Components/GroupKeywordTest.php new file mode 100644 index 0000000000..30d433745d --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Components/GroupKeywordTest.php @@ -0,0 +1,26 @@ +assertEquals( + GroupKeyword::build( + [ + new GroupKeyword(new Expression('a')), + new GroupKeyword(new Expression('b')), + new GroupKeyword(new Expression('c')), + ] + ), + 'a, b, c' + ); + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Components/IntoKeywordTest.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Components/IntoKeywordTest.php new file mode 100644 index 0000000000..4dea44cdb4 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Components/IntoKeywordTest.php @@ -0,0 +1,43 @@ +getTokensList('OUTFILE "/tmp/outfile.txt"')); + $this->assertEquals($component->type, 'OUTFILE'); + $this->assertEquals($component->dest, '/tmp/outfile.txt'); + } + + public function testBuild(): void + { + $component = IntoKeyword::parse(new Parser(), $this->getTokensList('tbl(`col1`, `col2`)')); + $this->assertEquals('tbl(`col1`, `col2`)', IntoKeyword::build($component)); + } + + public function testBuildValues(): void + { + $component = IntoKeyword::parse(new Parser(), $this->getTokensList('@a1, @a2, @a3')); + $this->assertEquals('@a1, @a2, @a3', IntoKeyword::build($component)); + } + + public function testBuildOutfile(): void + { + $component = IntoKeyword::parse(new Parser(), $this->getTokensList('OUTFILE "/tmp/outfile.txt"')); + $this->assertEquals('OUTFILE "/tmp/outfile.txt"', IntoKeyword::build($component)); + } + + public function testParseErr1(): void + { + $component = IntoKeyword::parse(new Parser(), $this->getTokensList('OUTFILE;')); + $this->assertEquals($component->type, 'OUTFILE'); + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Components/JoinKeywordTest.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Components/JoinKeywordTest.php new file mode 100644 index 0000000000..a99b09331f --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Components/JoinKeywordTest.php @@ -0,0 +1,46 @@ +getTokensList('JOIN a')); + $this->assertCount(1, $component); + $this->assertEquals('a', $component[0]->expr->expr); + $this->assertNull($component[0]->on); + $this->assertNull($component[0]->using); + } + + public function testParseIncompleteUsing(): void + { + $component = JoinKeyword::parse(new Parser(), $this->getTokensList('JOIN table2 USING (id)')); + $this->assertCount(1, $component); + $this->assertEquals('table2', $component[0]->expr->expr); + $this->assertNull($component[0]->on); + $this->assertEquals(['id'], $component[0]->using->values); + } + + public function testBuild(): void + { + $component = JoinKeyword::parse( + new Parser(), + $this->getTokensList( + 'LEFT JOIN (t2 CROSS JOIN t3 CROSS JOIN t4) ' . + 'ON (t2.a=t1.a AND t3.b=t1.b AND t4.c=t1.c)' + ) + ); + $this->assertEquals( + 'LEFT JOIN (t2 CROSS JOIN t3 CROSS JOIN t4) ' . + 'ON (t2.a=t1.a AND t3.b=t1.b AND t4.c=t1.c)', + JoinKeyword::build($component) + ); + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Components/KeyTest.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Components/KeyTest.php new file mode 100644 index 0000000000..421a05d594 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Components/KeyTest.php @@ -0,0 +1,374 @@ +getTokensList('') + ); + $this->assertNull($component->type); + $this->assertNull($component->options); + $this->assertNull($component->name); + $this->assertNull($component->expr); + $this->assertSame([], $component->columns); + $this->assertSame( + '()', + Key::build($component) + ); + } + + public function testParseKeyWithoutOptions(): void + { + $component = Key::parse( + new Parser(), + $this->getTokensList('KEY `alias_type_idx` (`alias_type`),') + ); + $this->assertEquals('KEY', $component->type); + $this->assertEquals('alias_type_idx', $component->name); + $this->assertEquals(new OptionsArray(), $component->options); + $this->assertNull($component->expr); + $this->assertSame([['name' => 'alias_type']], $component->columns); + $this->assertSame( + 'KEY `alias_type_idx` (`alias_type`)', + Key::build($component) + ); + } + + public function testParseKeyWithLengthWithoutOptions(): void + { + $component = Key::parse( + new Parser(), + $this->getTokensList('KEY `alias_type_idx` (`alias_type`(10)),') + ); + $this->assertEquals('KEY', $component->type); + $this->assertEquals('alias_type_idx', $component->name); + $this->assertEquals(new OptionsArray(), $component->options); + $this->assertNull($component->expr); + $this->assertSame([['name' => 'alias_type', 'length' => 10]], $component->columns); + $this->assertSame( + 'KEY `alias_type_idx` (`alias_type`(10))', + Key::build($component) + ); + } + + public function testParseKeyWithLengthWithoutOptionsWithOrder(): void + { + $component = Key::parse( + new Parser(), + $this->getTokensList('KEY `alias_type_idx` (`alias_type`(10) ASC),') + ); + $this->assertEquals('KEY', $component->type); + $this->assertEquals('alias_type_idx', $component->name); + $this->assertEquals(new OptionsArray(), $component->options); + $this->assertNull($component->expr); + $this->assertSame([['name' => 'alias_type', 'length' => 10, 'order' => 'ASC']], $component->columns); + $this->assertSame( + 'KEY `alias_type_idx` (`alias_type`(10) ASC)', + Key::build($component) + ); + } + + public function testParseKeyWithoutOptionsWithOrderLowercase(): void + { + $component = Key::parse( + new Parser(), + $this->getTokensList('KEY `alias_type_idx` (`alias_type` desc),') + ); + $this->assertEquals('KEY', $component->type); + $this->assertEquals('alias_type_idx', $component->name); + $this->assertEquals(new OptionsArray(), $component->options); + $this->assertNull($component->expr); + $this->assertSame([['name' => 'alias_type', 'order' => 'DESC']], $component->columns); + $this->assertSame( + 'KEY `alias_type_idx` (`alias_type` DESC)', + Key::build($component) + ); + } + + public function testParseKeyWithoutOptionsWithOrder(): void + { + $component = Key::parse( + new Parser(), + $this->getTokensList('KEY `alias_type_idx` (`alias_type` DESC),') + ); + $this->assertEquals('KEY', $component->type); + $this->assertEquals('alias_type_idx', $component->name); + $this->assertEquals(new OptionsArray(), $component->options); + $this->assertNull($component->expr); + $this->assertSame([['name' => 'alias_type', 'order' => 'DESC']], $component->columns); + $this->assertSame( + 'KEY `alias_type_idx` (`alias_type` DESC)', + Key::build($component) + ); + } + + public function testParseKeyWithLengthWithOptions(): void + { + $component = Key::parse( + new Parser(), + $this->getTokensList('KEY `alias_type_idx` (`alias_type`(10)) COMMENT \'my comment\',') + ); + $this->assertEquals('KEY', $component->type); + $this->assertEquals('alias_type_idx', $component->name); + $this->assertEquals(new OptionsArray( + [ + 4 => [ + 'name' => 'COMMENT', + 'equals' => false, + 'expr' => '\'my comment\'', + 'value' => 'my comment', + ], + ] + ), $component->options); + $this->assertNull($component->expr); + $this->assertSame([['name' => 'alias_type', 'length' => 10]], $component->columns); + $this->assertSame( + 'KEY `alias_type_idx` (`alias_type`(10)) COMMENT \'my comment\'', + Key::build($component) + ); + } + + public function testParseKeyWithLengthWithAllOptions(): void + { + $component = Key::parse( + new Parser(), + $this->getTokensList( + // This is not a vary plausible example but it runs + // Only ENGINE_ATTRIBUTE gives a not supported error but is still a valid syntax + 'KEY `alias_type_idx` (`alias_type`(10))' + . ' COMMENT \'my comment\' VISIBLE KEY_BLOCK_SIZE=1' + . ' INVISIBLE ENGINE_ATTRIBUTE \'foo\' SECONDARY_ENGINE_ATTRIBUTE=\'bar\' USING BTREE,' + ) + ); + $this->assertEquals('KEY', $component->type); + $this->assertEquals('alias_type_idx', $component->name); + $this->assertEquals(new OptionsArray( + [ + 1 => [ + 'name' => 'KEY_BLOCK_SIZE', + 'equals' => true, + 'expr' => '1', + 'value' => '1', + ], + 2 => [ + 'name' => 'USING', + 'equals' => false, + 'expr' => 'BTREE', + 'value' => 'BTREE', + ], + 4 => [ + 'name' => 'COMMENT', + 'equals' => false, + 'expr' => '\'my comment\'', + 'value' => 'my comment', + ], + 5 => [ + 'name' => 'ENGINE_ATTRIBUTE', + 'equals' => true, + 'expr' => '\'foo\'', + 'value' => 'foo', + ], + 6 => 'VISIBLE', + 12 => 'INVISIBLE', + 13 => [ + 'name' => 'SECONDARY_ENGINE_ATTRIBUTE', + 'equals' => true, + 'expr' => '\'bar\'', + 'value' => 'bar', + ], + ] + ), $component->options); + $this->assertNull($component->expr); + $this->assertSame([['name' => 'alias_type', 'length' => 10]], $component->columns); + } + + public function testParseKeyExpressionWithoutOptions(): void + { + $component = Key::parse( + new Parser(), + $this->getTokensList( + 'KEY `updated_tz_ind2` ((convert_tz(`cache_updated`,_utf8mb4\'GMT\',_utf8mb4\'GB\'))),' + ) + ); + $this->assertEquals('KEY', $component->type); + $this->assertEquals('updated_tz_ind2', $component->name); + $this->assertEquals(new OptionsArray(), $component->options); + $expr = new Expression('(convert_tz(`cache_updated`,_utf8mb4\'GMT\',_utf8mb4\'GB\'))'); + $expr->function = 'convert_tz'; + $this->assertEquals($expr, $component->expr); + $this->assertSame([], $component->columns); + $this->assertSame( + 'KEY `updated_tz_ind2` ((convert_tz(`cache_updated`,_utf8mb4\'GMT\',_utf8mb4\'GB\'))) ', + Key::build($component) + ); + } + + public function testParseKeyExpressionWithOptions(): void + { + $component = Key::parse( + new Parser(), + $this->getTokensList( + 'KEY `updated_tz_ind2`' + . ' ((convert_tz(`cache_updated`,_utf8mb4\'GMT\',_utf8mb4\'GB\')))' + . ' COMMENT \'my comment\',' + ) + ); + $this->assertEquals('KEY', $component->type); + $this->assertEquals('updated_tz_ind2', $component->name); + $this->assertEquals(new OptionsArray( + [ + 4 => [ + 'name' => 'COMMENT', + 'equals' => false, + 'expr' => '\'my comment\'', + 'value' => 'my comment', + ], + ] + ), $component->options); + $expr = new Expression('(convert_tz(`cache_updated`,_utf8mb4\'GMT\',_utf8mb4\'GB\'))'); + $expr->function = 'convert_tz'; + $this->assertEquals($expr, $component->expr); + $this->assertSame([], $component->columns); + $this->assertSame( + 'KEY `updated_tz_ind2`' + . ' ((convert_tz(`cache_updated`,_utf8mb4\'GMT\',_utf8mb4\'GB\')))' + . ' COMMENT \'my comment\'', + Key::build($component) + ); + } + + public function testParseKeyExpressionWithOptionsError(): void + { + $parser = new Parser(); + $component = Key::parse( + $parser, + $this->getTokensList( + 'KEY `updated_tz_ind2` (()convert_tz(`cache_updated`,_utf8mb4\'GMT\',_utf8mb4\'GB\')))' + . ' COMMENT \'my comment\',' + ) + ); + $this->assertEquals('KEY', $component->type); + $this->assertEquals('updated_tz_ind2', $component->name); + $this->assertEquals(new OptionsArray( + [] + ), $component->options); + $t = new Token('convert_tz', Token::TYPE_KEYWORD, 33); + $t->position = 25; + + $this->assertEquals([ + new ParserException( + 'Unexpected token.', + $t + ), + ], $parser->errors); + $expr = new Expression('(convert_tz(`cache_updated`,_utf8mb4\'GMT\',_utf8mb4\'GB\'))'); + $expr->function = 'convert_tz'; + $this->assertEquals('()(`cache_updated`,_utf8mb4\'GMT\',_utf8mb4\'GB\')', $component->expr); + $this->assertSame([], $component->columns); + $this->assertSame( + 'KEY `updated_tz_ind2` (()(`cache_updated`,_utf8mb4\'GMT\',_utf8mb4\'GB\')) ', + Key::build($component) + ); + } + + public function testParseKeyOneExpressionWithOptions(): void + { + $parser = new Parser(); + $component = Key::parse( + $parser, + $this->getTokensList( + 'KEY `updated_tz_ind2`' + . ' (' + . '(convert_tz(`cache_updated`,_utf8mb4\'GMT\',_utf8mb4\'GB\')), ' + . '(convert_tz(`cache_updated`,_utf8mb4\'GMT\',_utf8mb4\'FR\'))' + . ')' + . ' COMMENT \'my comment\',' + ) + ); + $this->assertEquals('KEY', $component->type); + $this->assertEquals('updated_tz_ind2', $component->name); + $this->assertEquals(new OptionsArray( + [ + 4 => [ + 'name' => 'COMMENT', + 'equals' => false, + 'expr' => '\'my comment\'', + 'value' => 'my comment', + ], + ] + ), $component->options); + $this->assertSame([], $parser->errors); + $expr = new Expression( + '(convert_tz(`cache_updated`,_utf8mb4\'GMT\',_utf8mb4\'GB\')),' + . ' (convert_tz(`cache_updated`,_utf8mb4\'GMT\',_utf8mb4\'FR\'))' + ); + $expr->function = 'convert_tz'; + $this->assertEquals($expr, $component->expr); + $this->assertSame([], $component->columns); + $this->assertSame( + 'KEY `updated_tz_ind2` ((convert_tz(`cache_updated`,_utf8mb4\'GMT\',_utf8mb4\'GB\')),' + . ' (convert_tz(`cache_updated`,_utf8mb4\'GMT\',_utf8mb4\'FR\'))' + . ') COMMENT \'my comment\'', + Key::build($component) + ); + } + + public function testParseKeyMultipleExpressionsWithOptions(): void + { + $parser = new Parser(); + $component = Key::parse( + $parser, + $this->getTokensList( + 'KEY `updated_tz_ind2`' + . ' (' + . '(convert_tz(`cache_updated`,_utf8mb4\'GMT\',_utf8mb4\'GB\')), ' + . '(convert_tz(`cache_updated`,_utf8mb4\'GMT\',_utf8mb4\'FR\')), ' + . '(convert_tz(`cache_updated`,_utf8mb4\'GMT\',_utf8mb4\'RU\'))' + . ')' + . ' COMMENT \'my comment\',' + ) + ); + $this->assertEquals('KEY', $component->type); + $this->assertEquals('updated_tz_ind2', $component->name); + $this->assertEquals(new OptionsArray( + [ + 4 => [ + 'name' => 'COMMENT', + 'equals' => false, + 'expr' => '\'my comment\'', + 'value' => 'my comment', + ], + ] + ), $component->options); + $expr = new Expression( + '(convert_tz(`cache_updated`,_utf8mb4\'GMT\',_utf8mb4\'GB\')),' + . ' (convert_tz(`cache_updated`,_utf8mb4\'GMT\',_utf8mb4\'FR\')),' + . ' (convert_tz(`cache_updated`,_utf8mb4\'GMT\',_utf8mb4\'RU\'))' + ); + $expr->function = 'convert_tz'; + $this->assertEquals($expr, $component->expr); + $this->assertSame([], $component->columns); + $this->assertSame([], $parser->errors); + $this->assertSame( + 'KEY `updated_tz_ind2` ((convert_tz(`cache_updated`,_utf8mb4\'GMT\',_utf8mb4\'GB\')),' + . ' (convert_tz(`cache_updated`,_utf8mb4\'GMT\',_utf8mb4\'FR\')),' + . ' (convert_tz(`cache_updated`,_utf8mb4\'GMT\',_utf8mb4\'RU\'))' + . ') COMMENT \'my comment\'', + Key::build($component) + ); + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Components/LimitTest.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Components/LimitTest.php new file mode 100644 index 0000000000..4366d11040 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Components/LimitTest.php @@ -0,0 +1,41 @@ +assertEquals(Limit::build($component), '0, 1'); + } + + public function testBuildWithOffset(): void + { + $component = new Limit(1, 2); + $this->assertEquals(Limit::build($component), '2, 1'); + } + + /** + * @param mixed $test + * + * @dataProvider parseProvider + */ + public function testParse($test): void + { + $this->runParserTest($test); + } + + public function parseProvider(): array + { + return [ + ['parser/parseLimitErr1'], + ['parser/parseLimitErr2'], + ]; + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Components/LockExpressionTest.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Components/LockExpressionTest.php new file mode 100644 index 0000000000..73769323e4 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Components/LockExpressionTest.php @@ -0,0 +1,73 @@ +getTokensList('table1 AS t1 READ LOCAL')); + $this->assertNotNull($component->table); + $this->assertEquals($component->table->table, 'table1'); + $this->assertEquals($component->table->alias, 't1'); + $this->assertEquals($component->type, 'READ LOCAL'); + } + + public function testParse2(): void + { + $component = LockExpression::parse(new Parser(), $this->getTokensList('table1 LOW_PRIORITY WRITE')); + $this->assertNotNull($component->table); + $this->assertEquals($component->table->table, 'table1'); + $this->assertEquals($component->type, 'LOW_PRIORITY WRITE'); + } + + /** + * @param mixed $expr + * @param mixed $error + * + * @dataProvider parseErrProvider + */ + public function testParseErr($expr, $error): void + { + $parser = new Parser(); + LockExpression::parse($parser, $this->getTokensList($expr)); + $errors = $this->getErrorsAsArray($parser); + $this->assertEquals($errors[0][0], $error); + } + + public function parseErrProvider(): array + { + return [ + [ + 'table1 AS t1', + 'Unexpected end of LOCK expression.', + ], + [ + 'table1 AS t1 READ WRITE', + 'Unexpected keyword.', + ], + [ + 'table1 AS t1 READ 2', + 'Unexpected token.', + ], + ]; + } + + public function testBuild(): void + { + $component = [ + LockExpression::parse(new Parser(), $this->getTokensList('table1 AS t1 READ LOCAL')), + LockExpression::parse(new Parser(), $this->getTokensList('table2 LOW_PRIORITY WRITE')), + ]; + $this->assertEquals( + LockExpression::build($component), + 'table1 AS `t1` READ LOCAL, table2 LOW_PRIORITY WRITE' + ); + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Components/OptionsArrayTest.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Components/OptionsArrayTest.php new file mode 100644 index 0000000000..4d4d0b23e4 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Components/OptionsArrayTest.php @@ -0,0 +1,134 @@ +getTokensList('A B = /*comment*/ (test) C'), + [ + 'A' => 1, + 'B' => [ + 2, + 'var', + ], + 'C' => 3, + ] + ); + $this->assertEquals( + [ + 1 => 'A', + 2 => [ + 'name' => 'B', + 'expr' => '(test)', + 'value' => 'test', + 'equals' => true, + ], + 3 => 'C', + ], + $component->options + ); + } + + public function testParseExpr(): void + { + $component = OptionsArray::parse( + new Parser(), + $this->getTokensList('SUM = (3 + 5) RESULT = 8'), + [ + 'SUM' => [ + 1, + 'expr', + ['parenthesesDelimited' => true], + ], + 'RESULT' => [ + 2, + 'var', + ], + ] + ); + $this->assertEquals('(3 + 5)', (string) $component->has('SUM', true)); + $this->assertEquals('8', $component->has('RESULT')); + } + + public function testHas(): void + { + $component = OptionsArray::parse( + new Parser(), + $this->getTokensList('A B = /*comment*/ (test) C'), + [ + 'A' => 1, + 'B' => [ + 2, + 'var', + ], + 'C' => 3, + ] + ); + $this->assertTrue($component->has('A')); + $this->assertEquals('test', $component->has('B')); + $this->assertTrue($component->has('C')); + $this->assertFalse($component->has('D')); + } + + public function testRemove(): void + { + /* Assertion 1 */ + $component = new OptionsArray(['a', 'b', 'c']); + $this->assertTrue($component->remove('b')); + $this->assertFalse($component->remove('d')); + $this->assertEquals($component->options, [0 => 'a', 2 => 'c']); + + /* Assertion 2 */ + $component = OptionsArray::parse( + new Parser(), + $this->getTokensList('A B = /*comment*/ (test) C'), + [ + 'A' => 1, + 'B' => [ + 2, + 'var', + ], + 'C' => 3, + ] + ); + $this->assertEquals('test', $component->has('B')); + $component->remove('B'); + $this->assertFalse($component->has('B')); + } + + public function testMerge(): void + { + $component = new OptionsArray(['a']); + $component->merge(['b', 'c']); + $this->assertEquals($component->options, ['a', 'b', 'c']); + } + + public function testBuild(): void + { + $component = new OptionsArray( + [ + 'ALL', + 'SQL_CALC_FOUND_ROWS', + [ + 'name' => 'MAX_STATEMENT_TIME', + 'value' => '42', + 'equals' => true, + ], + ] + ); + $this->assertEquals( + OptionsArray::build($component), + 'ALL SQL_CALC_FOUND_ROWS MAX_STATEMENT_TIME=42' + ); + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Components/OrderKeywordTest.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Components/OrderKeywordTest.php new file mode 100644 index 0000000000..415d8ddbd3 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Components/OrderKeywordTest.php @@ -0,0 +1,25 @@ +assertEquals( + OrderKeyword::build( + [ + new OrderKeyword(new Expression('a'), 'ASC'), + new OrderKeyword(new Expression('b'), 'DESC'), + ] + ), + 'a ASC, b DESC' + ); + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Components/ParameterDefinitionTest.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Components/ParameterDefinitionTest.php new file mode 100644 index 0000000000..a10fd9fe54 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Components/ParameterDefinitionTest.php @@ -0,0 +1,32 @@ +getTokensList('(a INT, b INT') + ); + $this->assertEquals('a', $component[0]->name); + $this->assertEquals('b', $component[1]->name); + } + + public function testParseComplex(): void + { + $parser = new Parser(); + $component = ParameterDefinition::parse( + $parser, + $this->getTokensList('CREATE DEFINER=`root`@`%` PROCEDURE `foo`( $bar int )') + ); + $this->assertEquals('$bar', $component[0]->name); + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Components/PartitionDefinitionTest.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Components/PartitionDefinitionTest.php new file mode 100644 index 0000000000..9bd73e63d5 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Components/PartitionDefinitionTest.php @@ -0,0 +1,36 @@ +getTokensList('PARTITION p0 VALUES LESS THAN(1990)') + ); + $this->assertFalse($component->isSubpartition); + $this->assertEquals('p0', $component->name); + $this->assertEquals('LESS THAN', $component->type); + $this->assertEquals('(1990)', $component->expr->expr); + } + + public function testParseNameWithUnderscore(): void + { + $component = PartitionDefinition::parse( + new Parser(), + $this->getTokensList('PARTITION 2017_12 VALUES LESS THAN (\'2018-01-01 00:00:00\') ENGINE = MyISAM') + ); + $this->assertFalse($component->isSubpartition); + $this->assertEquals('2017_12', $component->name); + $this->assertEquals('LESS THAN', $component->type); + $this->assertEquals('(\'2018-01-01 00:00:00\')', $component->expr->expr); + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Components/ReferenceTest.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Components/ReferenceTest.php new file mode 100644 index 0000000000..fd8fb58dd6 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Components/ReferenceTest.php @@ -0,0 +1,26 @@ +getTokensList('tbl (id)')); + $this->assertEquals('tbl', $component->table->table); + $this->assertEquals(['id'], $component->columns); + } + + public function testBuild(): void + { + $component = new Reference(new Expression('`tbl`'), ['id']); + $this->assertEquals('`tbl` (`id`)', Reference::build($component)); + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Components/RenameOperationTest.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Components/RenameOperationTest.php new file mode 100644 index 0000000000..e4d83a031a --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Components/RenameOperationTest.php @@ -0,0 +1,18 @@ +getTokensList('a TO b, c TO d')); + $this->assertEquals(RenameOperation::build($component), 'a TO b, c TO d'); + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Lexer/ContextTest.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Lexer/ContextTest.php new file mode 100644 index 0000000000..05e97f3f83 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Lexer/ContextTest.php @@ -0,0 +1,149 @@ +assertEquals('\\PhpMyAdmin\\SqlParser\\Contexts\\ContextMySql50700', Context::$loadedContext); + $this->assertArrayHasKey('STORED', Context::$KEYWORDS); + $this->assertArrayNotHasKey('AUTHORS', Context::$KEYWORDS); + + // Restoring context. + Context::load(''); + $this->assertEquals('\\PhpMyAdmin\\SqlParser\\Contexts\\ContextMySql50700', Context::$defaultContext); + $this->assertArrayHasKey('STORED', Context::$KEYWORDS); + $this->assertArrayNotHasKey('AUTHORS', Context::$KEYWORDS); + } + + /** + * Test for loading closest SQL context + * + * @dataProvider contextLoadingProvider + */ + public function testLoadClosest(string $context, ?string $expected): void + { + $this->assertEquals($expected, Context::loadClosest($context)); + if ($expected !== null) { + $this->assertEquals('\\PhpMyAdmin\\SqlParser\\Contexts\\Context' . $expected, Context::$loadedContext); + $this->assertTrue(class_exists(Context::$loadedContext)); + } + + // Restoring context. + Context::load(''); + } + + public function contextLoadingProvider(): array + { + return [ + 'MySQL match' => [ + 'MySql50500', + 'MySql50500', + ], + 'MySQL strip' => [ + 'MySql50712', + 'MySql50700', + ], + 'MySQL fallback' => [ + 'MySql99999', + 'MySql50700', + ], + 'MariaDB match' => [ + 'MariaDb100000', + 'MariaDb100000', + ], + 'MariaDB stripg' => [ + 'MariaDb109900', + 'MariaDb100000', + ], + 'MariaDB fallback' => [ + 'MariaDb990000', + 'MariaDb100300', + ], + 'Invalid' => [ + 'Sql', + null, + ], + ]; + } + + /** + * @dataProvider contextNamesProvider + */ + public function testLoadAll(string $context): void + { + Context::load($context); + $this->assertEquals('\\PhpMyAdmin\\SqlParser\\Contexts\\Context' . $context, Context::$loadedContext); + + // Restoring context. + Context::load(''); + } + + public function contextNamesProvider(): array + { + return [ + ['MySql50000'], + ['MySql50100'], + ['MySql50500'], + ['MySql50600'], + ['MySql50700'], + ['MySql80000'], + ['MariaDb100000'], + ['MariaDb100100'], + ['MariaDb100200'], + ['MariaDb100300'], + ]; + } + + public function testLoadError(): void + { + $this->expectExceptionMessage( + 'Specified context ("\PhpMyAdmin\SqlParser\Contexts\ContextFoo") does not exist.' + ); + $this->expectException(Throwable::class); + Context::load('Foo'); + } + + public function testMode(): void + { + Context::setMode('REAL_AS_FLOAT,ANSI_QUOTES,IGNORE_SPACE'); + $this->assertEquals( + Context::SQL_MODE_REAL_AS_FLOAT | Context::SQL_MODE_ANSI_QUOTES | Context::SQL_MODE_IGNORE_SPACE, + Context::$MODE + ); + Context::setMode('TRADITIONAL'); + $this->assertEquals(Context::SQL_MODE_TRADITIONAL, Context::$MODE); + Context::setMode(); + $this->assertEquals(0, Context::$MODE); + } + + public function testEscape(): void + { + Context::setMode('NO_ENCLOSING_QUOTES'); + $this->assertEquals('test', Context::escape('test')); + + Context::setMode('ANSI_QUOTES'); + $this->assertEquals('"test"', Context::escape('test')); + + Context::setMode(); + $this->assertEquals('`test`', Context::escape('test')); + + $this->assertEquals( + [ + '`a`', + '`b`', + ], + Context::escape(['a', 'b']) + ); + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Lexer/IsMethodsTest.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Lexer/IsMethodsTest.php new file mode 100644 index 0000000000..afc8948a13 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Lexer/IsMethodsTest.php @@ -0,0 +1,138 @@ +assertEquals(1 | Token::FLAG_KEYWORD_RESERVED, Context::isKeyword('SELECT')); + $this->assertEquals(1 | Token::FLAG_KEYWORD_RESERVED, Context::isKeyword('ALL')); + $this->assertEquals(1 | Token::FLAG_KEYWORD_RESERVED, Context::isKeyword('DISTINCT')); + + $this->assertEquals( + 1 | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED | Token::FLAG_KEYWORD_KEY, + Context::isKeyword('PRIMARY KEY') + ); + $this->assertEquals( + 1 | Token::FLAG_KEYWORD_RESERVED | Token::FLAG_KEYWORD_COMPOSED, + Context::isKeyword('CHARACTER SET') + ); + + $this->assertEquals(1 | Token::FLAG_KEYWORD_RESERVED, Context::isKeyword('FROM', true)); + $this->assertNull(Context::isKeyword('MODIFY', true)); + + $this->assertNull(Context::isKeyword('foo')); + $this->assertNull(Context::isKeyword('bar baz')); + } + + public function testIsOperator(): void + { + $this->assertEquals(Token::FLAG_OPERATOR_ARITHMETIC, Context::isOperator('%')); + $this->assertEquals(Token::FLAG_OPERATOR_LOGICAL, Context::isOperator('!')); + $this->assertEquals(Token::FLAG_OPERATOR_LOGICAL, Context::isOperator('&&')); + $this->assertEquals(Token::FLAG_OPERATOR_LOGICAL, Context::isOperator('<=>')); + $this->assertEquals(Token::FLAG_OPERATOR_BITWISE, Context::isOperator('&')); + $this->assertEquals(Token::FLAG_OPERATOR_ASSIGNMENT, Context::isOperator(':=')); + $this->assertEquals(Token::FLAG_OPERATOR_SQL, Context::isOperator(',')); + + $this->assertNull(Context::isOperator('a')); + } + + public function testIsWhitespace(): void + { + $this->assertTrue(Context::isWhitespace(' ')); + $this->assertTrue(Context::isWhitespace("\r")); + $this->assertTrue(Context::isWhitespace("\n")); + $this->assertTrue(Context::isWhitespace("\t")); + + $this->assertFalse(Context::isWhitespace('a')); + $this->assertFalse(Context::isWhitespace("\b")); + $this->assertFalse(Context::isWhitespace("\u1000")); + } + + public function testIsComment(): void + { + $this->assertEquals(Token::FLAG_COMMENT_BASH, Context::isComment('#')); + $this->assertEquals(Token::FLAG_COMMENT_C, Context::isComment('/*')); + $this->assertEquals(Token::FLAG_COMMENT_C, Context::isComment('*/')); + $this->assertEquals(Token::FLAG_COMMENT_SQL, Context::isComment('-- ')); + $this->assertEquals(Token::FLAG_COMMENT_SQL, Context::isComment("--\t")); + $this->assertEquals(Token::FLAG_COMMENT_SQL, Context::isComment("--\n")); + + $this->assertEquals(Token::FLAG_COMMENT_BASH, Context::isComment('# a comment')); + $this->assertEquals(Token::FLAG_COMMENT_C, Context::isComment('/*comment */')); + $this->assertEquals(Token::FLAG_COMMENT_SQL, Context::isComment('-- my comment')); + + $this->assertNull(Context::isComment('')); + $this->assertNull(Context::isComment('--not a comment')); + } + + public function testIsBool(): void + { + $this->assertTrue(Context::isBool('true')); + $this->assertTrue(Context::isBool('false')); + + $this->assertFalse(Context::isBool('tru')); + $this->assertFalse(Context::isBool('falsee')); + } + + public function testIsNumber(): void + { + $this->assertTrue(Context::isNumber('+')); + $this->assertTrue(Context::isNumber('-')); + $this->assertTrue(Context::isNumber('.')); + $this->assertTrue(Context::isNumber('0')); + $this->assertTrue(Context::isNumber('1')); + $this->assertTrue(Context::isNumber('2')); + $this->assertTrue(Context::isNumber('3')); + $this->assertTrue(Context::isNumber('4')); + $this->assertTrue(Context::isNumber('5')); + $this->assertTrue(Context::isNumber('6')); + $this->assertTrue(Context::isNumber('7')); + $this->assertTrue(Context::isNumber('8')); + $this->assertTrue(Context::isNumber('9')); + $this->assertTrue(Context::isNumber('e')); + $this->assertTrue(Context::isNumber('E')); + } + + public function testIsString(): void + { + $this->assertEquals(Token::FLAG_STRING_SINGLE_QUOTES, Context::isString("'")); + $this->assertEquals(Token::FLAG_STRING_DOUBLE_QUOTES, Context::isString('"')); + + $this->assertEquals(Token::FLAG_STRING_SINGLE_QUOTES, Context::isString("'foo bar'")); + $this->assertEquals(Token::FLAG_STRING_DOUBLE_QUOTES, Context::isString('"foo bar"')); + + $this->assertNull(Context::isString('')); + $this->assertNull(Context::isString('foo bar')); + } + + public function testIsSymbol(): void + { + $this->assertEquals(Token::FLAG_SYMBOL_VARIABLE, Context::isSymbol('@')); + $this->assertEquals(Token::FLAG_SYMBOL_BACKTICK, Context::isSymbol('`')); + + $this->assertEquals(Token::FLAG_SYMBOL_VARIABLE, Context::isSymbol('@id')); + $this->assertEquals(Token::FLAG_SYMBOL_BACKTICK, Context::isSymbol('`id`')); + + $this->assertNull(Context::isSymbol('')); + $this->assertNull(Context::isSymbol('id')); + } + + public function testisSeparator(): void + { + $this->assertTrue(Context::isSeparator('+')); + $this->assertTrue(Context::isSeparator('.')); + + $this->assertFalse(Context::isSeparator('1')); + $this->assertFalse(Context::isSeparator('E')); + $this->assertFalse(Context::isSeparator('_')); + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Lexer/LexerTest.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Lexer/LexerTest.php new file mode 100644 index 0000000000..e5daea9c74 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Lexer/LexerTest.php @@ -0,0 +1,93 @@ +error('error #1', 'foo', 1, 2); + $lexer->error( + sprintf('%2$s #%1$d', 2, 'error'), + 'bar', + 3, + 4 + ); + + $this->assertEquals( + $lexer->errors, + [ + new LexerException('error #1', 'foo', 1, 2), + new LexerException('error #2', 'bar', 3, 4), + ] + ); + } + + public function testErrorStrict(): void + { + $this->expectExceptionCode(4); + $this->expectExceptionMessage('strict error'); + $this->expectException(LexerException::class); + $lexer = new Lexer(''); + $lexer->strict = true; + + $lexer->error('strict error', 'foo', 1, 4); + } + + /** + * @dataProvider lexProvider + */ + public function testLex(string $test): void + { + $this->runParserTest($test); + } + + public function lexProvider(): array + { + return [ + ['lexer/lex'], + ['lexer/lexUtf8'], + ['lexer/lexBool'], + ['lexer/lexComment'], + ['lexer/lexCommentEnd'], + ['lexer/lexDelimiter'], + ['lexer/lexDelimiter2'], + ['lexer/lexDelimiterErr1'], + ['lexer/lexDelimiterErr2'], + ['lexer/lexDelimiterErr3'], + ['lexer/lexDelimiterLen'], + ['lexer/lexKeyword'], + ['lexer/lexKeyword2'], + ['lexer/lexNumber'], + ['lexer/lexOperator'], + ['lexer/lexOperatorStarIsArithmetic'], + ['lexer/lexOperatorStarIsWildcard'], + ['lexer/lexString'], + ['lexer/lexStringErr1'], + ['lexer/lexSymbol'], + ['lexer/lexSymbolErr1'], + ['lexer/lexSymbolErr2'], + ['lexer/lexSymbolErr3'], + ['lexer/lexSymbolUser'], + ['lexer/lexWhitespace'], + ['lexer/lexLabel1'], + ['lexer/lexLabel2'], + ['lexer/lexNoLabel'], + ['lexer/lexWildcardThenComment'], + ]; + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Lexer/TokenTest.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Lexer/TokenTest.php new file mode 100644 index 0000000000..eb54dbedfa --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Lexer/TokenTest.php @@ -0,0 +1,92 @@ +assertEquals($tok->value, 'SELECT'); + + $tok = new Token('aS', Token::TYPE_KEYWORD, Token::FLAG_KEYWORD_RESERVED); + $this->assertEquals($tok->value, 'AS'); + } + + public function testExtractWhitespace(): void + { + $tok = new Token(" \t \r \n ", Token::TYPE_WHITESPACE); + $this->assertEquals($tok->value, ' '); + } + + public function testExtractBool(): void + { + $tok = new Token('false', Token::TYPE_BOOL); + $this->assertFalse($tok->value); + + $tok = new Token('True', Token::TYPE_BOOL); + $this->assertTrue($tok->value); + } + + public function testExtractNumber(): void + { + $tok = new Token('--42', Token::TYPE_NUMBER, Token::FLAG_NUMBER_NEGATIVE); + $this->assertEquals($tok->value, 42); + + $tok = new Token('---42', Token::TYPE_NUMBER, Token::FLAG_NUMBER_NEGATIVE); + $this->assertEquals($tok->value, -42); + + $tok = new Token('0xFE', Token::TYPE_NUMBER, Token::FLAG_NUMBER_HEX); + $this->assertEquals($tok->value, 0xFE); + + $tok = new Token('-0xEF', Token::TYPE_NUMBER, Token::FLAG_NUMBER_NEGATIVE | Token::FLAG_NUMBER_HEX); + $this->assertEquals($tok->value, -0xEF); + + $tok = new Token('3.14', Token::TYPE_NUMBER, Token::FLAG_NUMBER_FLOAT); + $this->assertEquals($tok->value, 3.14); + } + + public function testExtractString(): void + { + $tok = new Token('"foo bar "', Token::TYPE_STRING); + $this->assertEquals($tok->value, 'foo bar '); + + $tok = new Token("' bar foo '", Token::TYPE_STRING); + $this->assertEquals($tok->value, ' bar foo '); + + $tok = new Token("'\''", Token::TYPE_STRING); + $this->assertEquals($tok->value, '\''); + + $tok = new Token('"\c\d\e\f\g\h\i\j\k\l\m\p\q\s\u\v\w\x\y\z"', Token::TYPE_STRING); + $this->assertEquals($tok->value, 'cdefghijklmpqsuvwxyz'); + } + + public function testExtractSymbol(): void + { + $tok = new Token('@foo', Token::TYPE_SYMBOL, Token::FLAG_SYMBOL_VARIABLE); + $this->assertEquals($tok->value, 'foo'); + + $tok = new Token('`foo`', Token::TYPE_SYMBOL, Token::FLAG_SYMBOL_BACKTICK); + $this->assertEquals($tok->value, 'foo'); + + $tok = new Token('@`foo`', Token::TYPE_SYMBOL, Token::FLAG_SYMBOL_VARIABLE); + $this->assertEquals($tok->value, 'foo'); + + $tok = new Token(':foo', Token::TYPE_SYMBOL, Token::FLAG_SYMBOL_PARAMETER); + $this->assertEquals($tok->value, 'foo'); + + $tok = new Token('?', Token::TYPE_SYMBOL, Token::FLAG_SYMBOL_PARAMETER); + $this->assertEquals($tok->value, '?'); + } + + public function testInlineToken(): void + { + $token = new Token(" \r \n \t "); + $this->assertEquals($token->getInlineToken(), ' \r \n \t '); + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Lexer/TokensListTest.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Lexer/TokensListTest.php new file mode 100644 index 0000000000..1d627ed41b --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Lexer/TokensListTest.php @@ -0,0 +1,106 @@ +tokens = [ + new Token('SELECT', Token::TYPE_KEYWORD), + new Token(' ', Token::TYPE_WHITESPACE), + new Token('*', Token::TYPE_OPERATOR), + new Token(' ', Token::TYPE_WHITESPACE), + new Token('FROM', Token::TYPE_KEYWORD), + new Token(' ', Token::TYPE_WHITESPACE), + new Token('`test`', Token::TYPE_SYMBOL), + new Token(' ', Token::TYPE_WHITESPACE), + ]; + } + + public function testBuild(): void + { + $list = new TokensList($this->tokens); + $this->assertEquals('SELECT * FROM `test` ', TokensList::build($list)); + } + + public function testAdd(): void + { + $list = new TokensList(); + foreach ($this->tokens as $token) { + $list->add($token); + } + + $this->assertEquals(new TokensList($this->tokens), $list); + } + + public function testGetNext(): void + { + $list = new TokensList($this->tokens); + $this->assertEquals($this->tokens[0], $list->getNext()); + $this->assertEquals($this->tokens[2], $list->getNext()); + $this->assertEquals($this->tokens[4], $list->getNext()); + $this->assertEquals($this->tokens[6], $list->getNext()); + $this->assertNull($list->getNext()); + } + + public function testGetNextOfType(): void + { + $list = new TokensList($this->tokens); + $this->assertEquals($this->tokens[0], $list->getNextOfType(Token::TYPE_KEYWORD)); + $this->assertEquals($this->tokens[4], $list->getNextOfType(Token::TYPE_KEYWORD)); + $this->assertNull($list->getNextOfType(Token::TYPE_KEYWORD)); + } + + public function testGetNextOfTypeAndValue(): void + { + $list = new TokensList($this->tokens); + $this->assertEquals($this->tokens[0], $list->getNextOfTypeAndValue(Token::TYPE_KEYWORD, 'SELECT')); + $this->assertNull($list->getNextOfTypeAndValue(Token::TYPE_KEYWORD, 'SELECT')); + } + + public function testArrayAccess(): void + { + $list = new TokensList(); + + // offsetSet(NULL, $value) + foreach ($this->tokens as $token) { + $list[] = $token; + } + + // offsetSet($offset, $value) + $list[2] = $this->tokens[2]; + + // offsetGet($offset) + for ($i = 0, $count = count($this->tokens); $i < $count; ++$i) { + $this->assertEquals($this->tokens[$i], $list[$i]); + } + + // offsetExists($offset) + $this->assertArrayHasKey(2, $list); + $this->assertArrayNotHasKey(8, $list); + + // offsetUnset($offset) + unset($list[2]); + $this->assertEquals($this->tokens[3], $list[2]); + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Misc/BugsTest.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Misc/BugsTest.php new file mode 100644 index 0000000000..5b883e8092 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Misc/BugsTest.php @@ -0,0 +1,35 @@ +runParserTest($test); + } + + public function bugProvider(): array + { + return [ + ['bugs/gh9'], + ['bugs/gh14'], + ['bugs/gh16'], + ['bugs/gh317'], + ['bugs/pma11800'], + ['bugs/pma11836'], + ['bugs/pma11843'], + ['bugs/pma11867'], + ['bugs/pma11879'], + ]; + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Misc/ParameterTest.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Misc/ParameterTest.php new file mode 100644 index 0000000000..995db155e3 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Misc/ParameterTest.php @@ -0,0 +1,27 @@ +runParserTest($test); + } + + public function parameterProvider(): array + { + return [ + ['misc/parseParameter'], + ]; + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Misc/UtfStringTest.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Misc/UtfStringTest.php new file mode 100644 index 0000000000..34703d6305 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Misc/UtfStringTest.php @@ -0,0 +1,126 @@ +assertArrayHasKey(self::TEST_PHRASE_LEN - 1, $str); + $this->assertArrayNotHasKey(-1, $str); + $this->assertArrayNotHasKey(self::TEST_PHRASE_LEN, $str); + + // offsetGet + $this->assertEquals('.', $str[self::TEST_PHRASE_LEN - 1]); + $this->assertNull($str[-1]); + $this->assertNull($str[self::TEST_PHRASE_LEN]); + } + + public function testSet(): void + { + $this->expectExceptionMessage('Not implemented.'); + $this->expectException(Throwable::class); + $str = new UtfString(''); + $str[0] = 'a'; + } + + public function testUnset(): void + { + $this->expectExceptionMessage('Not implemented.'); + $this->expectException(Throwable::class); + $str = new UtfString(''); + unset($str[0]); + } + + public function testGetCharLength(): void + { + $this->assertEquals(1, UtfString::getCharLength(chr(0x00))); // 00000000 + $this->assertEquals(1, UtfString::getCharLength(chr(0x7F))); // 01111111 + + $this->assertEquals(2, UtfString::getCharLength(chr(0xC0))); // 11000000 + $this->assertEquals(2, UtfString::getCharLength(chr(0xDF))); // 11011111 + + $this->assertEquals(3, UtfString::getCharLength(chr(0xE0))); // 11100000 + $this->assertEquals(3, UtfString::getCharLength(chr(0xEF))); // 11101111 + + $this->assertEquals(4, UtfString::getCharLength(chr(0xF0))); // 11110000 + $this->assertEquals(4, UtfString::getCharLength(chr(0xF7))); // 11110111 + + $this->assertEquals(5, UtfString::getCharLength(chr(0xF8))); // 11111000 + $this->assertEquals(5, UtfString::getCharLength(chr(0xFB))); // 11111011 + + $this->assertEquals(6, UtfString::getCharLength(chr(0xFC))); // 11111100 + $this->assertEquals(6, UtfString::getCharLength(chr(0xFD))); // 11111101 + } + + public function testToString(): void + { + $str = new UtfString(self::TEST_PHRASE); + $this->assertEquals(self::TEST_PHRASE, (string) $str); + } + + /** + * Test access to string. + * + * @param mixed $text + * @param mixed $pos10 + * @param mixed $pos20 + * + * @dataProvider utf8StringsProvider + */ + public function testAccess($text, $pos10, $pos20): void + { + $str = new UtfString($text); + $this->assertEquals($pos10, $str->offsetGet(10)); + $this->assertEquals($pos20, $str->offsetGet(20)); + $this->assertEquals($pos10, $str->offsetGet(10)); + } + + public function utf8StringsProvider(): array + { + return [ + 'ascii' => [ + 'abcdefghijklmnopqrstuvwxyz', + 'k', + 'u', + ], + 'unicode' => [ + 'áéíóúýěřťǔǐǒǎšďȟǰǩľžčǚň', + 'ǐ', + 'č', + ], + 'emoji' => [ + '😂😄😃😀😊😉😍😘😚😗😂👿😮😨😱😠😡😤😖😆😋👯', + '😂', + '😋', + ], + 'iso' => [ + "P\xf8\xed\xb9ern\xec \xbelu\xbbou\xe8k\xfd k\xf3d \xfap\xecl \xef\xe1belsk\xe9 k\xf3dy", + null, + null, + ], + ]; + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Parser/AlterStatementTest.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Parser/AlterStatementTest.php new file mode 100644 index 0000000000..5d3d5bb984 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Parser/AlterStatementTest.php @@ -0,0 +1,60 @@ +runParserTest($test); + } + + public function alterProvider(): array + { + return [ + ['parser/parseAlter'], + ['parser/parseAlter2'], + ['parser/parseAlter3'], + ['parser/parseAlter4'], + ['parser/parseAlter5'], + ['parser/parseAlter6'], + ['parser/parseAlter7'], + ['parser/parseAlter8'], + ['parser/parseAlter9'], + ['parser/parseAlter10'], + ['parser/parseAlter11'], + ['parser/parseAlter12'], + ['parser/parseAlter13'], + ['parser/parseAlterErr'], + ['parser/parseAlterErr2'], + ['parser/parseAlterErr3'], + ['parser/parseAlterErr4'], + ['parser/parseAlterWithInvisible'], + ['parser/parseAlterTableCharacterSet1'], + ['parser/parseAlterTableCharacterSet2'], + ['parser/parseAlterTableCharacterSet3'], + ['parser/parseAlterTableCharacterSet4'], + ['parser/parseAlterTableCharacterSet5'], + ['parser/parseAlterTableCharacterSet6'], + ['parser/parseAlterTableCharacterSet7'], + ['parser/parseAlterUser'], + ['parser/parseAlterUser1'], + ['parser/parseAlterUser2'], + ['parser/parseAlterUser3'], + ['parser/parseAlterUser4'], + ['parser/parseAlterUser5'], + ['parser/parseAlterUser6'], + ['parser/parseAlterUser7'], + ['parser/parseAlterUser8'], + ]; + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Parser/CallStatementTest.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Parser/CallStatementTest.php new file mode 100644 index 0000000000..7570b3659e --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Parser/CallStatementTest.php @@ -0,0 +1,29 @@ +runParserTest($test); + } + + public function callProvider(): array + { + return [ + ['parser/parseCall'], + ['parser/parseCall2'], + ['parser/parseCall3'], + ]; + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Parser/CreateStatementTest.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Parser/CreateStatementTest.php new file mode 100644 index 0000000000..73b7fcf889 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Parser/CreateStatementTest.php @@ -0,0 +1,69 @@ +runParserTest($test); + } + + public function createProvider(): array + { + return [ + ['parser/parseCreateDatabase'], + ['parser/parseCreateDatabaseErr'], + ['parser/parseCreateFunction'], + ['parser/parseCreateFunctionErr1'], + ['parser/parseCreateFunctionErr2'], + ['parser/parseCreateFunctionErr3'], + ['parser/parseCreateProcedure'], + ['parser/parseCreateProcedure1'], + ['parser/parseCreateProcedure2'], + ['parser/parseCreateSchema'], + ['parser/parseCreateSchemaErr'], + ['parser/parseCreateTable'], + ['parser/parseCreateTable2'], + ['parser/parseCreateTable3'], + ['parser/parseCreateTable4'], + ['parser/parseCreateTable5'], + ['parser/parseCreateTable6'], + ['parser/parseCreateTable7'], + ['parser/parseCreateTableErr1'], + ['parser/parseCreateTableErr2'], + ['parser/parseCreateTableErr3'], + ['parser/parseCreateTableErr4'], + ['parser/parseCreateTableErr5'], + ['parser/parseCreateTableSelect'], + ['parser/parseCreateTableAsSelect'], + ['parser/parseCreateTableLike'], + ['parser/parseCreateTableSpatial'], + ['parser/parseCreateTableTimestampWithPrecision'], + ['parser/parseCreateTableEnforcedCheck'], + ['parser/parseCreateTableNotEnforcedCheck'], + ['parser/parseCreateTableWithInvisibleKey'], + ['parser/parseCreateTrigger'], + ['parser/parseCreateUser'], + ['parser/parseCreateView'], + ['parser/parseCreateView2'], + ['parser/parseCreateView3'], + ['parser/parseCreateView4'], + ['parser/parseCreateViewMultiple'], + ['parser/parseCreateViewWithoutQuotes'], + ['parser/parseCreateViewWithQuotes'], + ['parser/parseCreateViewWithWrongSyntax'], + ['parser/parseCreateViewWithUnion'], + ['parser/parseCreateViewAsWithAs'], + ]; + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Parser/DeleteStatementTest.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Parser/DeleteStatementTest.php new file mode 100644 index 0000000000..41004e5fee --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Parser/DeleteStatementTest.php @@ -0,0 +1,51 @@ +runParserTest($test); + } + + public function deleteProvider(): array + { + return [ + ['parser/parseDelete'], + ['parser/parseDelete2'], + ['parser/parseDelete3'], + ['parser/parseDelete4'], + ['parser/parseDelete5'], + ['parser/parseDelete6'], + ['parser/parseDelete7'], + ['parser/parseDelete8'], + ['parser/parseDelete9'], + ['parser/parseDelete10'], + ['parser/parseDelete11'], + ['parser/parseDelete12'], + ['parser/parseDeleteErr1'], + ['parser/parseDeleteErr2'], + ['parser/parseDeleteErr3'], + ['parser/parseDeleteErr4'], + ['parser/parseDeleteErr5'], + ['parser/parseDeleteErr6'], + ['parser/parseDeleteErr7'], + ['parser/parseDeleteErr8'], + ['parser/parseDeleteErr9'], + ['parser/parseDeleteErr10'], + ['parser/parseDeleteErr11'], + ['parser/parseDeleteErr12'], + ['parser/parseDeleteJoin'], + ]; + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Parser/DropStatementTest.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Parser/DropStatementTest.php new file mode 100644 index 0000000000..4b23fe64d3 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Parser/DropStatementTest.php @@ -0,0 +1,28 @@ +runParserTest($test); + } + + public function dropProvider(): array + { + return [ + ['parser/parseDrop'], + ['parser/parseDrop2'], + ]; + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Parser/ExplainStatementTest.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Parser/ExplainStatementTest.php new file mode 100644 index 0000000000..0e43b23476 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Parser/ExplainStatementTest.php @@ -0,0 +1,27 @@ +runParserTest($test); + } + + public function explainProvider(): array + { + return [ + ['parser/parseExplain'], + ]; + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Parser/InsertStatementTest.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Parser/InsertStatementTest.php new file mode 100644 index 0000000000..c400c11d3d --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Parser/InsertStatementTest.php @@ -0,0 +1,35 @@ +runParserTest($test); + } + + public function insertProvider(): array + { + return [ + ['parser/parseInsert'], + ['parser/parseInsertSelect'], + ['parser/parseInsertOnDuplicateKey'], + ['parser/parseInsertSetOnDuplicateKey'], + ['parser/parseInsertSelectOnDuplicateKey'], + ['parser/parseInsertOnDuplicateKeyErr'], + ['parser/parseInsertErr'], + ['parser/parseInsertErr2'], + ['parser/parseInsertIntoErr'], + ]; + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Parser/LoadStatementTest.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Parser/LoadStatementTest.php new file mode 100644 index 0000000000..cc2a6d2de6 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Parser/LoadStatementTest.php @@ -0,0 +1,47 @@ +getData('parser/parseLoad1'); + $parser = new Parser($data['query']); + $stmt = $parser->statements[0]; + $this->assertEquals(10, $stmt->options->has('CONCURRENT')); + } + + /** + * @param mixed $test + * + * @dataProvider loadProvider + */ + public function testLoad($test): void + { + $this->runParserTest($test); + } + + public function loadProvider(): array + { + return [ + ['parser/parseLoad1'], + ['parser/parseLoad2'], + ['parser/parseLoad3'], + ['parser/parseLoad4'], + ['parser/parseLoad5'], + ['parser/parseLoad6'], + ['parser/parseLoadErr1'], + ['parser/parseLoadErr2'], + ['parser/parseLoadErr3'], + ['parser/parseLoadErr4'], + ['parser/parseLoadErr5'], + ['parser/parseLoadErr6'], + ]; + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Parser/LockStatementTest.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Parser/LockStatementTest.php new file mode 100644 index 0000000000..0b2116f7a3 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Parser/LockStatementTest.php @@ -0,0 +1,43 @@ +runParserTest($test); + } + + public function lockProvider(): array + { + return [ + ['parser/parseLock1'], + ['parser/parseLock2'], + ['parser/parseLock3'], + ['parser/parseLock4'], + ['parser/parseLock5'], + ['parser/parseLockErr1'], + ['parser/parseLockErr2'], + ['parser/parseLockErr3'], + ['parser/parseLockErr4'], + ['parser/parseLockErr5'], + ['parser/parseLockErr6'], + ['parser/parseLockErr7'], + ['parser/parseLockErr8'], + ['parser/parseLockErr9'], + ['parser/parseLockErr10'], + ['parser/parseUnlock1'], + ['parser/parseUnlockErr1'], + ]; + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Parser/ParserTest.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Parser/ParserTest.php new file mode 100644 index 0000000000..8a3e21ca63 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Parser/ParserTest.php @@ -0,0 +1,84 @@ +runParserTest($test); + } + + public function parseProvider(): array + { + return [ + ['parser/parse'], + ['parser/parse2'], + ['parser/parseDelimiter'], + ]; + } + + public function testUnrecognizedStatement(): void + { + $parser = new Parser('SELECT 1; FROM'); + $this->assertEquals( + 'Unrecognized statement type.', + $parser->errors[0]->getMessage() + ); + } + + public function testUnrecognizedKeyword(): void + { + $parser = new Parser('SELECT 1 FROM foo PARTITION(bar, baz) AS'); + $this->assertEquals( + 'Unrecognized keyword.', + $parser->errors[0]->getMessage() + ); + } + + /** + * @runInSeparateProcess + * @preserveGlobalState disabled + */ + public function testError(): void + { + $parser = new Parser(new TokensList()); + + $parser->error('error #1', new Token('foo'), 1); + $parser->error(sprintf('%2$s #%1$d', 2, 'error'), new Token('bar'), 2); + + $this->assertEquals( + $parser->errors, + [ + new ParserException('error #1', new Token('foo'), 1), + new ParserException('error #2', new Token('bar'), 2), + ] + ); + } + + public function testErrorStrict(): void + { + $this->expectExceptionCode(3); + $this->expectExceptionMessage('strict error'); + $this->expectException(ParserException::class); + $parser = new Parser(new TokensList()); + $parser->strict = true; + + $parser->error('strict error', new Token('foo'), 3); + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Parser/PurgeStatementTest.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Parser/PurgeStatementTest.php new file mode 100644 index 0000000000..a8e73a9d9d --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Parser/PurgeStatementTest.php @@ -0,0 +1,33 @@ +runParserTest($test); + } + + public function purgeProvider(): array + { + return [ + ['parser/parsePurge'], + ['parser/parsePurge2'], + ['parser/parsePurge3'], + ['parser/parsePurge4'], + ['parser/parsePurgeErr'], + ['parser/parsePurgeErr2'], + ['parser/parsePurgeErr3'], + ]; + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Parser/RenameStatementTest.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Parser/RenameStatementTest.php new file mode 100644 index 0000000000..9e28cf38ae --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Parser/RenameStatementTest.php @@ -0,0 +1,33 @@ +runParserTest($test); + } + + public function renameProvider(): array + { + return [ + ['parser/parseRename'], + ['parser/parseRename2'], + ['parser/parseRenameErr1'], + ['parser/parseRenameErr2'], + ['parser/parseRenameErr3'], + ['parser/parseRenameErr4'], + ['parser/parseRenameErr5'], + ]; + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Parser/ReplaceStatementTest.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Parser/ReplaceStatementTest.php new file mode 100644 index 0000000000..233983af6e --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Parser/ReplaceStatementTest.php @@ -0,0 +1,35 @@ +runParserTest($test); + } + + public function replaceProvider(): array + { + return [ + ['parser/parseReplace'], + ['parser/parseReplace2'], + ['parser/parseReplaceValues'], + ['parser/parseReplaceSet'], + ['parser/parseReplaceSelect'], + ['parser/parseReplaceErr'], + ['parser/parseReplaceErr2'], + ['parser/parseReplaceErr3'], + ['parser/parseReplaceIntoErr'], + ]; + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Parser/RestoreStatementTest.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Parser/RestoreStatementTest.php new file mode 100644 index 0000000000..6172e60367 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Parser/RestoreStatementTest.php @@ -0,0 +1,27 @@ +runParserTest($test); + } + + public function restoreProvider(): array + { + return [ + ['parser/parseRestore'], + ]; + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Parser/SelectStatementTest.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Parser/SelectStatementTest.php new file mode 100644 index 0000000000..887477bb9c --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Parser/SelectStatementTest.php @@ -0,0 +1,97 @@ +getData('parser/parseSelect'); + $parser = new Parser($data['query']); + $stmt = $parser->statements[0]; + $this->assertEquals(10, $stmt->options->has('MAX_STATEMENT_TIME')); + } + + /** + * @param mixed $test + * + * @dataProvider selectProvider + */ + public function testSelect($test): void + { + $this->runParserTest($test); + } + + public function selectProvider(): array + { + return [ + ['parser/parseSelect2'], + ['parser/parseSelect3'], + ['parser/parseSelect4'], + ['parser/parseSelect5'], + ['parser/parseSelect6'], + ['parser/parseSelect7'], + ['parser/parseSelect8'], + ['parser/parseSelect9'], + ['parser/parseSelect10'], + ['parser/parseSelect11'], + ['parser/parseSelectErr1'], + ['parser/parseSelectErr2'], + ['parser/parseSelectNested'], + ['parser/parseSelectCase1'], + ['parser/parseSelectCase2'], + ['parser/parseSelectCase3'], + ['parser/parseSelectCase4'], + ['parser/parseSelectCase5'], + ['parser/parseSelectCaseErr1'], + ['parser/parseSelectCaseErr2'], + ['parser/parseSelectCaseErr3'], + ['parser/parseSelectCaseErr4'], + ['parser/parseSelectCaseErr5'], + ['parser/parseSelectCaseAlias1'], + ['parser/parseSelectCaseAlias2'], + ['parser/parseSelectCaseAlias3'], + ['parser/parseSelectCaseAlias4'], + ['parser/parseSelectCaseAlias5'], + ['parser/parseSelectCaseAlias6'], + ['parser/parseSelectCaseAliasErr1'], + ['parser/parseSelectCaseAliasErr2'], + ['parser/parseSelectCaseAliasErr3'], + ['parser/parseSelectCaseAliasErr4'], + ['parser/parseSelectExists'], + ['parser/parseSelectIntoOptions1'], + ['parser/parseSelectIntoOptions2'], + ['parser/parseSelectIntoOptions3'], + ['parser/parseSelectJoinCross'], + ['parser/parseSelectJoinNatural'], + ['parser/parseSelectJoinNaturalLeft'], + ['parser/parseSelectJoinNaturalRight'], + ['parser/parseSelectJoinNaturalLeftOuter'], + ['parser/parseSelectJoinNaturalRightOuter'], + ['parser/parseSelectJoinMultiple'], + ['parser/parseSelectJoinMultiple2'], + ['parser/parseSelectWrongOrder'], + ['parser/parseSelectWrongOrder2'], + ['parser/parseSelectEndOptions1'], + ['parser/parseSelectEndOptions2'], + ['parser/parseSelectEndOptionsErr'], + ['parser/parseSelectUnion'], + ['parser/parseSelectUnion2'], + ['parser/parseSelectWhere'], + ['parser/parseSelectIndexHint1'], + ['parser/parseSelectIndexHint2'], + ['parser/parseSelectIndexHintErr1'], + ['parser/parseSelectIndexHintErr2'], + ['parser/parseSelectIndexHintErr3'], + ['parser/parseSelectIndexHintErr4'], + ['parser/parseSelectWithParenthesis'], + ['parser/parseSelectOrderByComment'], + ['parser/parseSelectOverAlias_mariadb_100600'], + ]; + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Parser/SetStatementTest.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Parser/SetStatementTest.php new file mode 100644 index 0000000000..e5db12693c --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Parser/SetStatementTest.php @@ -0,0 +1,35 @@ +runParserTest($test); + } + + public function setProvider(): array + { + return [ + ['parser/parseSetCharset'], + ['parser/parseSetCharsetError'], + ['parser/parseSetCharacterSet'], + ['parser/parseSetCharacterSetError'], + ['parser/parseAlterTableSetAutoIncrementError'], + ['parser/parseSetNames'], + ['parser/parseSetNamesError'], + ['parser/parseSetError1'], + ['parser/parseInsertIntoSet'], + ]; + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Parser/TransactionStatementTest.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Parser/TransactionStatementTest.php new file mode 100644 index 0000000000..b8b88c762f --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Parser/TransactionStatementTest.php @@ -0,0 +1,30 @@ +runParserTest($test); + } + + public function transactionProvider(): array + { + return [ + ['parser/parseTransaction'], + ['parser/parseTransaction2'], + ['parser/parseTransaction3'], + ['parser/parseTransactionErr1'], + ]; + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Parser/UpdateStatementTest.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Parser/UpdateStatementTest.php new file mode 100644 index 0000000000..b9f73a499a --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Parser/UpdateStatementTest.php @@ -0,0 +1,30 @@ +runParserTest($test); + } + + public function updateProvider(): array + { + return [ + ['parser/parseUpdate'], + ['parser/parseUpdate2'], + ['parser/parseUpdate3'], + ['parser/parseUpdateErr'], + ]; + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Parser/WithStatementTest.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Parser/WithStatementTest.php new file mode 100644 index 0000000000..e6b0764c43 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Parser/WithStatementTest.php @@ -0,0 +1,115 @@ +getErrorsAsArray($lexer); + $this->assertCount(0, $lexerErrors); + $parser = new Parser($lexer->list); + $parserErrors = $this->getErrorsAsArray($parser); + $this->assertCount(0, $parserErrors); + $this->assertCount(2, $parser->statements); + + // phpcs:disable Generic.Files.LineLength.TooLong + $expected = <<assertEquals($expected, $parser->statements[0]->build()); + $this->assertEquals('SELECT * FROM categories', $parser->statements[1]->build()); + } + + public function testWithHasErrors(): void + { + $sql = <<getErrorsAsArray($lexer); + $this->assertCount(0, $lexerErrors); + $parser = new Parser($lexer->list); + $parserErrors = $this->getErrorsAsArray($parser); + $this->assertCount(2, $parserErrors); + } + + public function testWithEmbedParenthesis(): void + { + $sql = <<getErrorsAsArray($lexer); + $this->assertCount(0, $lexerErrors); + $parser = new Parser($lexer->list); + $parserErrors = $this->getErrorsAsArray($parser); + $this->assertCount(0, $parserErrors); + + // phpcs:disable Generic.Files.LineLength.TooLong + $expected = <<assertEquals($expected, $parser->statements[0]->build()); + } + + public function testWithHasUnclosedParenthesis(): void + { + $sql = <<getErrorsAsArray($lexer); + $this->assertCount(0, $lexerErrors); + $parser = new Parser($lexer->list); + $parserErrors = $this->getErrorsAsArray($parser); + $this->assertEquals($parserErrors[0][0], 'A closing bracket was expected.'); + } + + public function testBuildWrongWithKeyword(): void + { + $this->expectExceptionMessage('Can not build a component that is not a WithKeyword'); + WithKeyword::build(new stdClass()); + } + + public function testBuildBadWithKeyword(): void + { + $this->expectExceptionMessage('No statement inside WITH'); + WithKeyword::build(new WithKeyword('test')); + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/TestCase.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/TestCase.php new file mode 100644 index 0000000000..95890cf3f6 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/TestCase.php @@ -0,0 +1,148 @@ +list; + } + + /** + * Gets the errors as an array. + * + * @param Lexer|Parser $obj object containing the errors + * + * @return array + */ + public function getErrorsAsArray($obj) + { + $ret = []; + /** @var LexerException|ParserException $err */ + foreach ($obj->errors as $err) { + $ret[] = $obj instanceof Lexer + ? [ + $err->getMessage(), + $err->ch, + $err->pos, + $err->getCode(), + ] + : [ + $err->getMessage(), + $err->token, + $err->getCode(), + ]; + } + + return $ret; + } + + /** + * Gets test's input and expected output. + * + * @param string $name the name of the test + * + * @return array + */ + public function getData($name) + { + $serializer = new JsonSerializer(); + $data = $serializer->unserialize((string) file_get_contents('tests/data/' . $name . '.out')); + $data['query'] = file_get_contents('tests/data/' . $name . '.in'); + + return $data; + } + + /** + * Runs a test. + * + * @param string $name the name of the test + */ + public function runParserTest($name) + { + /** + * Test's data. + * + * @var array + */ + $data = $this->getData($name); + + if (strpos($name, '/ansi/') !== false) { + // set mode if appropriate + Context::setMode('ANSI_QUOTES'); + } + + $mariaDbPos = strpos($name, '_mariadb_'); + if ($mariaDbPos !== false) {// Keep in sync with TestGenerator.php + // set context + $mariaDbVersion = (int) substr($name, $mariaDbPos + 9, 6); + Context::load('MariaDb' . $mariaDbVersion); + } + + // Lexer. + $lexer = new Lexer($data['query']); + $lexerErrors = $this->getErrorsAsArray($lexer); + $lexer->errors = []; + + // Parser. + $parser = empty($data['parser']) ? null : new Parser($lexer->list); + $parserErrors = []; + if ($parser !== null) { + $parserErrors = $this->getErrorsAsArray($parser); + $parser->errors = []; + } + + // Testing objects. + $this->assertEquals($data['lexer'], $lexer); + $this->assertEquals($data['parser'], $parser); + + // Testing errors. + $this->assertEquals($data['errors']['parser'], $parserErrors); + $this->assertEquals($data['errors']['lexer'], $lexerErrors); + + // reset mode after test run + Context::setMode(); + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Utils/BufferedQueryTest.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Utils/BufferedQueryTest.php new file mode 100644 index 0000000000..22321cf40e --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Utils/BufferedQueryTest.php @@ -0,0 +1,356 @@ +extract(); + + if ($stmt) { + $statements[] = $stmt; + } else { + $bq->query .= $chunks[$i++]; + } + } + + // Feeding ended, extracting remaining queries. + while ($stmt = $bq->extract(true)) { + $statements[] = $stmt; + } + + $this->assertEquals($expected, $statements); + } + + public function extractProvider(): array + { + $query = + '/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;' . "\n" . + '/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;' . "\n" . + '/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;' . "\n" . + '/*!40101 SET NAMES utf8mb4 */;' . "\n" . + '' . "\n" . + 'SET SQL_MODE = \'NO_AUTO_VALUE_ON_ZERO\';' . "\n" . + 'SET time_zone = "+00:00";' . "\n" . + '' . "\n" . + '/* a comment */ DELIMITER $$' . "\n" . + '' . "\n" . + '# Bash-like comment sytanx.' . "\n" . + 'CREATE DEFINER=`root`@`localhost` PROCEDURE `film_in_stock` (IN `p_film_id` ' . + 'INT, IN `p_store_id` INT, OUT `p_film_count` INT) READS SQL DATA' . "\n" . + 'BEGIN' . "\n" . + ' SELECT inventory_id' . "\n" . + ' FROM inventory' . "\n" . + ' WHERE film_id = p_film_id' . "\n" . + ' AND store_id = p_store_id' . "\n" . + ' AND inventory_in_stock(inventory_id);' . "\n" . + '' . "\n" . + ' SELECT FOUND_ROWS() INTO p_film_count;' . "\n" . + 'END$$' . "\n" . + '' . "\n" . + 'DELIMITER ;' . "\n" . + '' . "\n" . + '-- --------------------------------------------------------' . "\n" . + '' . "\n" . + '--' . "\n" . + '-- Table structure for `actor`' . "\n" . + '--' . "\n" . + '' . "\n" . + '/* C-like comment syntax. */' . "\n" . + 'CREATE TABLE IF NOT EXISTS `actor` (' . "\n" . + '`actor_id` SMALLINT(5) UNSIGNED NOT NULL,' . "\n" . + '`first_name` VARCHAR(45) NOT NULL,' . "\n" . + '`last_name` VARCHAR(45) NOT NULL,' . "\n" . + '`last_update` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP' . "\n" . + ') ENGINE=InnoDB DEFAULT CHARSET=utf8;' . "\n" . + '' . "\n" . + '/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;' . "\n" . + '/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;' . "\n" . + '/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */'; + + return [ + [ + "SELECT '\'';\nSELECT '\'';", + 8, + [ + 'parse_delimiter' => true, + 'add_delimiter' => true, + ], + [ + "SELECT '\'';", + "SELECT '\'';", + ], + ], + + [ + 'SELECT \\', + 8, + [ + 'parse_delimiter' => false, + 'add_delimiter' => false, + ], + ['SELECT \\'], + ], + + [ + "CREATE TABLE `test` (\n" . + " `txt` varchar(10)\n" . + ");\n" . + "INSERT INTO `test` (`txt`) VALUES('abc');\n" . + "INSERT INTO `test` (`txt`) VALUES('\\\\');\n" . + "INSERT INTO `test` (`txt`) VALUES('xyz');\n", + 8, + [ + 'parse_delimiter' => true, + 'add_delimiter' => true, + ], + [ + "CREATE TABLE `test` (\n" . + " `txt` varchar(10)\n" . + ');', + "INSERT INTO `test` (`txt`) VALUES('abc');", + "INSERT INTO `test` (`txt`) VALUES('\\\\');", + "INSERT INTO `test` (`txt`) VALUES('xyz');", + ], + ], + + [ + 'SELECT """""""";' . + 'SELECT """\\\\"""', + 8, + [ + 'parse_delimiter' => true, + 'add_delimiter' => true, + ], + [ + 'SELECT """""""";', + 'SELECT """\\\\"""', + ], + ], + + [ + 'DELIMITER A_VERY_LONG_DEL' . "\n" . + 'SELECT 1 A_VERY_LONG_DEL' . "\n" . + 'DELIMITER ;', + 3, + [ + 'parse_delimiter' => true, + 'add_delimiter' => true, + ], + [ + 'DELIMITER A_VERY_LONG_DEL', + 'SELECT 1 A_VERY_LONG_DEL', + 'DELIMITER ;', + ], + ], + + [ + $query, + 32, + [ + 'parse_delimiter' => false, + 'add_delimiter' => false, + ], + [ + '/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */', + + '/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */', + + '/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */', + + '/*!40101 SET NAMES utf8mb4 */', + + 'SET SQL_MODE = \'NO_AUTO_VALUE_ON_ZERO\'', + + 'SET time_zone = "+00:00"', + + '# Bash-like comment sytanx.' . "\n" . + 'CREATE DEFINER=`root`@`localhost` PROCEDURE `film_in_stock` (IN `p_film_id` ' . + 'INT, IN `p_store_id` INT, OUT `p_film_count` INT) READS SQL DATA' . "\n" . + 'BEGIN' . "\n" . + ' SELECT inventory_id' . "\n" . + ' FROM inventory' . "\n" . + ' WHERE film_id = p_film_id' . "\n" . + ' AND store_id = p_store_id' . "\n" . + ' AND inventory_in_stock(inventory_id);' . "\n" . + '' . "\n" . + ' SELECT FOUND_ROWS() INTO p_film_count;' . "\n" . + 'END', + + '-- --------------------------------------------------------' . "\n" . + '' . "\n" . + '--' . "\n" . + '-- Table structure for `actor`' . "\n" . + '--' . "\n" . + '' . "\n" . + '/* C-like comment syntax. */' . "\n" . + 'CREATE TABLE IF NOT EXISTS `actor` (' . "\n" . + '`actor_id` SMALLINT(5) UNSIGNED NOT NULL,' . "\n" . + '`first_name` VARCHAR(45) NOT NULL,' . "\n" . + '`last_name` VARCHAR(45) NOT NULL,' . "\n" . + '`last_update` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP' . "\n" . + ') ENGINE=InnoDB DEFAULT CHARSET=utf8', + + '/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */', + + '/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */', + + '/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */', + ], + ], + + [ + $query, + 32, + [ + 'parse_delimiter' => true, + 'add_delimiter' => false, + ], + [ + '/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */', + + '/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */', + + '/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */', + + '/*!40101 SET NAMES utf8mb4 */', + + 'SET SQL_MODE = \'NO_AUTO_VALUE_ON_ZERO\'', + + 'SET time_zone = "+00:00"', + + '/* a comment */ DELIMITER $$', + + '# Bash-like comment sytanx.' . "\n" . + 'CREATE DEFINER=`root`@`localhost` PROCEDURE `film_in_stock` (IN `p_film_id` ' . + 'INT, IN `p_store_id` INT, OUT `p_film_count` INT) READS SQL DATA' . "\n" . + 'BEGIN' . "\n" . + ' SELECT inventory_id' . "\n" . + ' FROM inventory' . "\n" . + ' WHERE film_id = p_film_id' . "\n" . + ' AND store_id = p_store_id' . "\n" . + ' AND inventory_in_stock(inventory_id);' . "\n" . + '' . "\n" . + ' SELECT FOUND_ROWS() INTO p_film_count;' . "\n" . + 'END', + + 'DELIMITER ;', + + '-- --------------------------------------------------------' . "\n" . + '' . "\n" . + '--' . "\n" . + '-- Table structure for `actor`' . "\n" . + '--' . "\n" . + '' . "\n" . + '/* C-like comment syntax. */' . "\n" . + 'CREATE TABLE IF NOT EXISTS `actor` (' . "\n" . + '`actor_id` SMALLINT(5) UNSIGNED NOT NULL,' . "\n" . + '`first_name` VARCHAR(45) NOT NULL,' . "\n" . + '`last_name` VARCHAR(45) NOT NULL,' . "\n" . + '`last_update` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP' . "\n" . + ') ENGINE=InnoDB DEFAULT CHARSET=utf8', + + '/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */', + + '/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */', + + '/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */', + ], + ], + + [ + $query, + 64, + [ + 'parse_delimiter' => false, + 'add_delimiter' => true, + ], + [ + '/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;', + + '/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;', + + '/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;', + + '/*!40101 SET NAMES utf8mb4 */;', + + 'SET SQL_MODE = \'NO_AUTO_VALUE_ON_ZERO\';', + + 'SET time_zone = "+00:00";', + + '# Bash-like comment sytanx.' . "\n" . + 'CREATE DEFINER=`root`@`localhost` PROCEDURE `film_in_stock` (IN `p_film_id` ' . + 'INT, IN `p_store_id` INT, OUT `p_film_count` INT) READS SQL DATA' . "\n" . + 'BEGIN' . "\n" . + ' SELECT inventory_id' . "\n" . + ' FROM inventory' . "\n" . + ' WHERE film_id = p_film_id' . "\n" . + ' AND store_id = p_store_id' . "\n" . + ' AND inventory_in_stock(inventory_id);' . "\n" . + '' . "\n" . + ' SELECT FOUND_ROWS() INTO p_film_count;' . "\n" . + 'END$$', + + '-- --------------------------------------------------------' . "\n" . + '' . "\n" . + '--' . "\n" . + '-- Table structure for `actor`' . "\n" . + '--' . "\n" . + '' . "\n" . + '/* C-like comment syntax. */' . "\n" . + 'CREATE TABLE IF NOT EXISTS `actor` (' . "\n" . + '`actor_id` SMALLINT(5) UNSIGNED NOT NULL,' . "\n" . + '`first_name` VARCHAR(45) NOT NULL,' . "\n" . + '`last_name` VARCHAR(45) NOT NULL,' . "\n" . + '`last_update` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP' . "\n" . + ') ENGINE=InnoDB DEFAULT CHARSET=utf8;', + + '/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;', + + '/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;', + + '/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */', + ], + ], + ]; + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Utils/CLITest.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Utils/CLITest.php new file mode 100644 index 0000000000..8650c84822 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Utils/CLITest.php @@ -0,0 +1,474 @@ +createPartialMock(CLI::class, ['getopt']); + $cli->method('getopt')->willReturn($getopt); + + return $cli; + } + + /** + * @param mixed $input + * @param mixed $getopt + * + * @return CLI + */ + private function getCLIStdIn($input, $getopt) + { + $cli = $this->createPartialMock(CLI::class, ['getopt', 'readStdin']); + $cli->method('getopt')->willReturn($getopt); + $cli->method('readStdin')->willReturn($input); + + return $cli; + } + + /** + * Test that getopt call works. + * + * We do mock it for other tests to return values we want. + */ + public function testGetopt(): void + { + $cli = new CLI(); + $this->assertEquals( + $cli->getopt('', []), + [] + ); + } + + /** + * @param mixed $getopt + * @param mixed $output + * @param mixed $result + * + * @dataProvider highlightParamsProvider + */ + public function testRunHighlight($getopt, $output, $result): void + { + $cli = $this->getCLI($getopt); + $this->expectOutputString($output); + $this->assertEquals($result, $cli->runHighlight()); + } + + public function highlightParamsProvider(): array + { + return [ + [ + ['q' => 'SELECT 1'], + "\x1b[35mSELECT\n \x1b[92m1\x1b[0m\n", + 0, + ], + [ + ['query' => 'SELECT 1'], + "\x1b[35mSELECT\n \x1b[92m1\x1b[0m\n", + 0, + ], + [ + [ + 'q' => 'SELECT /* comment */ 1 /* other */', + 'f' => 'text', + ], + "SELECT\n /* comment */ 1 /* other */\n", + 0, + ], + [ + [ + 'q' => 'SELECT 1', + 'f' => 'foo', + ], + "ERROR: Invalid value for format!\n", + 1, + ], + [ + [ + 'q' => 'SELECT 1', + 'f' => 'html', + ], + 'SELECT
' . + '    1' . "\n", + 0, + ], + [ + ['h' => true], + 'Usage: highlight-query --query SQL [--format html|cli|text] [--ansi]' . "\n" . + ' cat file.sql | highlight-query' . "\n", + 0, + ], + [ + [], + 'ERROR: Missing parameters!' . "\n" . + 'Usage: highlight-query --query SQL [--format html|cli|text] [--ansi]' . "\n" . + ' cat file.sql | highlight-query' . "\n", + 1, + ], + [ + false, + '', + 1, + ], + ]; + } + + /** + * @param mixed $input + * @param mixed $getopt + * @param mixed $output + * @param mixed $result + * + * @dataProvider highlightParamsStdInProvider + */ + public function testRunHighlightStdIn($input, $getopt, $output, $result): void + { + $cli = $this->getCLIStdIn($input, $getopt); + $this->expectOutputString($output); + $this->assertEquals($result, $cli->runHighlight()); + } + + public function highlightParamsStdInProvider(): array + { + return [ + [ + 'SELECT 1', + [], + "\x1b[35mSELECT\n \x1b[92m1\x1b[0m\n", + 0, + ], + [ + 'SELECT /* comment */ 1 /* other */', + ['f' => 'text'], + "SELECT\n /* comment */ 1 /* other */\n", + 0, + ], + [ + 'SELECT 1', + ['f' => 'foo'], + "ERROR: Invalid value for format!\n", + 1, + ], + [ + 'SELECT 1', + ['f' => 'html'], + 'SELECT
' . + '    1' . "\n", + 0, + ], + [ + '', + ['h' => true], + 'Usage: highlight-query --query SQL [--format html|cli|text] [--ansi]' . "\n" . + ' cat file.sql | highlight-query' . "\n", + 0, + ], + [ + '', + [], + 'ERROR: Missing parameters!' . "\n" . + 'Usage: highlight-query --query SQL [--format html|cli|text] [--ansi]' . "\n" . + ' cat file.sql | highlight-query' . "\n", + 1, + ], + [ + '', + false, + '', + 1, + ], + ]; + } + + /** + * @param mixed $input + * @param mixed $getopt + * @param mixed $output + * @param mixed $result + * + * @dataProvider lintParamsStdInProvider + */ + public function testRunLintFromStdIn($input, $getopt, $output, $result): void + { + $cli = $this->getCLIStdIn($input, $getopt); + $this->expectOutputString($output); + $this->assertEquals($result, $cli->runLint()); + } + + public function lintParamsStdInProvider(): array + { + return [ + [ + 'SELECT 1', + [], + '', + 0, + ], + [ + 'SELECT SELECT', + [], + '#1: An expression was expected. (near "SELECT" at position 7)' . "\n" . + '#2: This type of clause was previously parsed. (near "SELECT" at position 7)' . "\n" . + '#3: An expression was expected. (near "" at position 0)' . "\n", + 10, + ], + [ + 'SELECT SELECT', + ['c' => 'MySql80000'], + '#1: An expression was expected. (near "SELECT" at position 7)' . "\n" . + '#2: This type of clause was previously parsed. (near "SELECT" at position 7)' . "\n" . + '#3: An expression was expected. (near "" at position 0)' . "\n", + 10, + ], + [ + '', + [], + 'ERROR: Missing parameters!' . "\n" . + 'Usage: lint-query --query SQL [--ansi]' . "\n" . + ' cat file.sql | lint-query' . "\n", + 1, + ], + [ + '', + ['h' => true], + 'Usage: lint-query --query SQL [--ansi]' . "\n" . + ' cat file.sql | lint-query' . "\n", + 0, + ], + [ + '', + false, + '', + 1, + ], + ]; + } + + /** + * @param mixed $getopt + * @param mixed $output + * @param mixed $result + * + * @dataProvider lintParamsProvider + */ + public function testRunLint($getopt, $output, $result): void + { + $cli = $this->getCLI($getopt); + $this->expectOutputString($output); + $this->assertEquals($result, $cli->runLint()); + } + + public function lintParamsProvider(): array + { + return [ + [ + ['q' => 'SELECT 1'], + '', + 0, + ], + [ + ['query' => 'SELECT 1'], + '', + 0, + ], + [ + ['q' => 'SELECT SELECT'], + '#1: An expression was expected. (near "SELECT" at position 7)' . "\n" . + '#2: This type of clause was previously parsed. (near "SELECT" at position 7)' . "\n" . + '#3: An expression was expected. (near "" at position 0)' . "\n", + 10, + ], + [ + [ + 'q' => 'SELECT SELECT', + 'c' => 'MySql80000', + ], + '#1: An expression was expected. (near "SELECT" at position 7)' . "\n" . + '#2: This type of clause was previously parsed. (near "SELECT" at position 7)' . "\n" . + '#3: An expression was expected. (near "" at position 0)' . "\n", + 10, + ], + [ + ['h' => true], + 'Usage: lint-query --query SQL [--ansi]' . "\n" . + ' cat file.sql | lint-query' . "\n", + 0, + ], + [ + [], + 'ERROR: Missing parameters!' . "\n" . + 'Usage: lint-query --query SQL [--ansi]' . "\n" . + ' cat file.sql | lint-query' . "\n", + 1, + ], + [ + false, + '', + 1, + ], + ]; + } + + /** + * @param mixed $getopt + * @param mixed $output + * @param mixed $result + * + * @dataProvider tokenizeParamsProvider + */ + public function testRunTokenize($getopt, $output, $result): void + { + $cli = $this->getCLI($getopt); + $this->expectOutputString($output); + $this->assertEquals($result, $cli->runTokenize()); + } + + public function tokenizeParamsProvider(): array + { + $result = "[TOKEN 0]\nType = 1\nFlags = 3\nValue = 'SELECT'\nToken = 'SELECT'\n\n" + . "[TOKEN 1]\nType = 3\nFlags = 0\nValue = ' '\nToken = ' '\n\n" + . "[TOKEN 2]\nType = 6\nFlags = 0\nValue = 1\nToken = '1'\n\n" + . "[TOKEN 3]\nType = 9\nFlags = 0\nValue = NULL\nToken = NULL\n\n"; + + return [ + [ + ['q' => 'SELECT 1'], + $result, + 0, + ], + [ + ['query' => 'SELECT 1'], + $result, + 0, + ], + [ + ['h' => true], + 'Usage: tokenize-query --query SQL [--ansi]' . "\n" . + ' cat file.sql | tokenize-query' . "\n", + 0, + ], + [ + [], + 'ERROR: Missing parameters!' . "\n" . + 'Usage: tokenize-query --query SQL [--ansi]' . "\n" . + ' cat file.sql | tokenize-query' . "\n", + 1, + ], + [ + false, + '', + 1, + ], + ]; + } + + /** + * @param mixed $input + * @param mixed $getopt + * @param mixed $output + * @param mixed $result + * + * @dataProvider tokenizeParamsStdInProvider + */ + public function testRunTokenizeStdIn($input, $getopt, $output, $result): void + { + $cli = $this->getCLIStdIn($input, $getopt); + $this->expectOutputString($output); + $this->assertEquals($result, $cli->runTokenize()); + } + + public function tokenizeParamsStdInProvider(): array + { + $result = "[TOKEN 0]\nType = 1\nFlags = 3\nValue = 'SELECT'\nToken = 'SELECT'\n\n" + . "[TOKEN 1]\nType = 3\nFlags = 0\nValue = ' '\nToken = ' '\n\n" + . "[TOKEN 2]\nType = 6\nFlags = 0\nValue = 1\nToken = '1'\n\n" + . "[TOKEN 3]\nType = 9\nFlags = 0\nValue = NULL\nToken = NULL\n\n"; + + return [ + [ + 'SELECT 1', + [], + $result, + 0, + ], + [ + '', + ['h' => true], + 'Usage: tokenize-query --query SQL [--ansi]' . "\n" . + ' cat file.sql | tokenize-query' . "\n", + 0, + ], + [ + '', + [], + 'ERROR: Missing parameters!' . "\n" . + 'Usage: tokenize-query --query SQL [--ansi]' . "\n" . + ' cat file.sql | tokenize-query' . "\n", + 1, + ], + [ + '', + false, + '', + 1, + ], + ]; + } + + /** + * @dataProvider stdinParamsProvider + */ + public function testStdinPipe(string $cmd, int $result): void + { + exec($cmd, $out, $ret); + $this->assertSame($result, $ret); + } + + public function stdinParamsProvider(): array + { + $binPath = PHP_BINARY . ' ' . dirname(__DIR__, 2) . '/bin/'; + + return [ + [ + 'echo "SELECT 1" | ' . $binPath . 'highlight-query', + 0, + ], + [ + 'echo "invalid query" | ' . $binPath . 'highlight-query', + 0, + ], + [ + 'echo "SELECT 1" | ' . $binPath . 'lint-query', + 0, + ], + [ + 'echo "invalid query" | ' . $binPath . 'lint-query', + 10, + ], + [ + 'echo "SELECT 1" | ' . $binPath . 'tokenize-query', + 0, + ], + [ + 'echo "invalid query" | ' . $binPath . 'tokenize-query', + 0, + ], + ]; + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Utils/ErrorTest.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Utils/ErrorTest.php new file mode 100644 index 0000000000..dce85da1f1 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Utils/ErrorTest.php @@ -0,0 +1,51 @@ +list); + $this->assertEquals( + [ + [ + 'Unexpected character.', + 0, + '}', + 22, + ], + [ + 'Unexpected dot.', + 0, + '.', + 17, + ], + ], + Error::get([$lexer, $parser]) + ); + } + + public function testFormat(): void + { + $this->assertEquals( + ['#1: error msg (near "token" at position 100)'], + Error::format([['error msg', 42, 'token', 100]]) + ); + $this->assertEquals( + [ + '#1: error msg (near "token" at position 100)', + '#2: error msg (near "token" at position 200)', + ], + Error::format([['error msg', 42, 'token', 100], ['error msg', 42, 'token', 200]]) + ); + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Utils/FormatterTest.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Utils/FormatterTest.php new file mode 100644 index 0000000000..5292514829 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Utils/FormatterTest.php @@ -0,0 +1,595 @@ +createPartialMock(Formatter::class, ['getDefaultOptions', 'getDefaultFormats']); + + $formatter->expects($this->once()) + ->method('getDefaultOptions') + ->willReturn([ + 'type' => 'text', + 'line_ending' => null, + 'indentation' => null, + 'clause_newline' => null, + 'parts_newline' => null, + ]); + + $formatter->expects($this->once()) + ->method('getDefaultFormats') + ->willReturn($default); + + $expectedOptions = [ + 'type' => 'test-type', + 'line_ending' => '
', + 'indentation' => ' ', + 'clause_newline' => null, + 'parts_newline' => 0, + 'formats' => $expected, + ]; + + $overridingOptions = [ + 'type' => 'test-type', + 'line_ending' => '
', + 'formats' => $overriding, + ]; + + $reflectionMethod = new ReflectionMethod($formatter, 'getMergedOptions'); + $reflectionMethod->setAccessible(true); + $this->assertEquals($expectedOptions, $reflectionMethod->invoke($formatter, $overridingOptions)); + } + + public function mergeFormatsProvider(): array + { + // [default[], overriding[], expected[]] + return [ + 'empty formats' => [ + 'default' => [ + [ + 'type' => 0, + 'flags' => 0, + 'html' => '', + 'cli' => '', + 'function' => '', + ], + ], + 'overriding' => [ + [], + ], + 'expected' => [ + [ + 'type' => 0, + 'flags' => 0, + 'html' => '', + 'cli' => '', + 'function' => '', + ], + ], + ], + 'no flags' => [ + 'default' => [ + [ + 'type' => 0, + 'flags' => 0, + 'html' => 'html', + 'cli' => 'cli', + ], + [ + 'type' => 0, + 'flags' => 1, + 'html' => 'html', + 'cli' => 'cli', + ], + ], + 'overriding' => [ + [ + 'type' => 0, + 'html' => 'new html', + 'cli' => 'new cli', + ], + ], + 'expected' => [ + [ + 'type' => 0, + 'flags' => 0, + 'html' => 'new html', + 'cli' => 'new cli', + 'function' => '', + ], + [ + 'type' => 0, + 'flags' => 1, + 'html' => 'html', + 'cli' => 'cli', + ], + ], + ], + 'with flags' => [ + 'default' => [ + [ + 'type' => -1, + 'flags' => 0, + 'html' => 'html', + 'cli' => 'cli', + ], + [ + 'type' => 0, + 'flags' => 0, + 'html' => 'html', + 'cli' => 'cli', + ], + [ + 'type' => 0, + 'flags' => 1, + 'html' => 'html', + 'cli' => 'cli', + ], + ], + 'overriding' => [ + [ + 'type' => 0, + 'flags' => 0, + 'html' => 'new html', + 'cli' => 'new cli', + ], + ], + 'expected' => [ + [ + 'type' => -1, + 'flags' => 0, + 'html' => 'html', + 'cli' => 'cli', + ], + [ + 'type' => 0, + 'flags' => 0, + 'html' => 'new html', + 'cli' => 'new cli', + 'function' => '', + ], + [ + 'type' => 0, + 'flags' => 1, + 'html' => 'html', + 'cli' => 'cli', + ], + ], + ], + 'with extra formats' => [ + 'default' => [ + [ + 'type' => 0, + 'flags' => 0, + 'html' => 'html', + 'cli' => 'cli', + ], + ], + 'overriding' => [ + [ + 'type' => 0, + 'flags' => 1, + 'html' => 'new html', + 'cli' => 'new cli', + ], + [ + 'type' => 1, + 'html' => 'new html', + 'cli' => 'new cli', + ], + [ + 'type' => 1, + 'flags' => 1, + 'html' => 'new html', + 'cli' => 'new cli', + ], + ], + 'expected' => [ + [ + 'type' => 0, + 'flags' => 0, + 'html' => 'html', + 'cli' => 'cli', + ], + [ + 'type' => 0, + 'flags' => 1, + 'html' => 'new html', + 'cli' => 'new cli', + 'function' => '', + ], + [ + 'type' => 1, + 'flags' => 0, + 'html' => 'new html', + 'cli' => 'new cli', + 'function' => '', + ], + [ + 'type' => 1, + 'flags' => 1, + 'html' => 'new html', + 'cli' => 'new cli', + 'function' => '', + ], + ], + ], + ]; + } + + /** + * @param mixed $query + * @param mixed $text + * @param mixed $cli + * @param mixed $html + * + * @dataProvider formatQueriesProviders + */ + public function testFormat($query, $text, $cli, $html, array $options = []): void + { + // Test TEXT format + $this->assertEquals( + $text, + Formatter::format($query, ['type' => 'text'] + $options), + 'Text formatting failed.' + ); + + // Test CLI format + $this->assertEquals( + $cli, + Formatter::format($query, ['type' => 'cli'] + $options), + 'CLI formatting failed.' + ); + + // Test HTML format + $this->assertEquals( + $html, + Formatter::format($query, ['type' => 'html'] + $options), + 'HTML formatting failed.' + ); + } + + public function formatQueriesProviders(): array + { + return [ + 'empty' => [ + 'query' => '', + 'text' => '', + 'cli' => "\x1b[0m", + 'html' => '', + ], + 'minimal' => [ + 'query' => 'select 1', + 'text' => 'SELECT' . "\n" . + ' 1', + 'cli' => "\x1b[35mSELECT\n" . + " \x1b[92m1\x1b[0m", + 'html' => 'SELECT
' . + '    1', + ], + 'simply' => [ + 'query' => 'select * from tbl where 1', + 'text' => 'SELECT' . "\n" . + ' *' . "\n" . + 'FROM' . "\n" . + ' tbl' . "\n" . + 'WHERE' . "\n" . + ' 1', + 'cli' => "\x1b[35mSELECT\n" . + " \x1b[39m*\n" . + "\x1b[35mFROM\n" . + " \x1b[39mtbl\n" . + "\x1b[35mWHERE\n" . + " \x1b[92m1\x1b[0m", + 'html' => 'SELECT
' . + '    *
' . + 'FROM
' . + '    tbl
' . + 'WHERE
' . + '    1', + ], + 'typical' => [ + 'query' => 'SELECT id, if(id=1,"Si","No") from `tbl` where id = 0 or ' . + 'id = 1 group by id order by id desc limit 1 offset 0', + 'text' => 'SELECT' . "\n" . + ' id,' . "\n" . + ' IF(id = 1, "Si", "No")' . "\n" . + 'FROM' . "\n" . + ' `tbl`' . "\n" . + 'WHERE' . "\n" . + ' id = 0 OR id = 1' . "\n" . + 'GROUP BY' . "\n" . + ' id' . "\n" . + 'ORDER BY' . "\n" . + ' id' . "\n" . + 'DESC' . "\n" . + 'LIMIT 1 OFFSET 0', + 'cli' => "\x1b[35mSELECT\n" . + " \x1b[39mid,\n" . + " \x1b[35mIF\x1b[39m(id = \x1b[92m1\x1b[39m, \x1b[91m\"Si\"\x1b[39m, \x1b[91m\"No\"\x1b[39m)\n" . + "\x1b[35mFROM\n" . + " \x1b[36m`tbl`\n" . + "\x1b[35mWHERE\n" . + " \x1b[39mid = \x1b[92m0 \x1b[35mOR \x1b[39mid = \x1b[92m1\n" . + "\x1b[35mGROUP BY\n" . + " \x1b[39mid\n" . + "\x1b[35mORDER BY\n" . + " \x1b[39mid\n" . + "\x1b[35mDESC\n" . + "LIMIT \x1b[92m1 \x1b[95mOFFSET \x1b[92m0\x1b[0m", + 'html' => 'SELECT
' . + '    id,
' . + '    IF(id = ' . + '1, "Si", ' . + '"No")
' . + 'FROM
' . + '    `tbl`
' . + 'WHERE
' . + '    id = 0 ' . + 'OR id = 1
' . + 'GROUP BY
' . + '    id
' . + 'ORDER BY
' . + '    id
' . + 'DESC
' . + 'LIMIT 1 ' . + 'OFFSET 0', + ], + 'comments' => [ + 'query' => 'select /* Comment */ *' . "\n" . + 'from tbl # Comment' . "\n" . + 'where 1 -- Comment', + 'text' => 'SELECT' . "\n" . + ' /* Comment */ *' . "\n" . + 'FROM' . "\n" . + ' tbl # Comment' . "\n" . + 'WHERE' . "\n" . + ' 1 -- Comment', + 'cli' => "\x1b[35mSELECT\n" . + " \x1b[37m/* Comment */ \x1b[39m*\n" . + "\x1b[35mFROM\n" . + " \x1b[39mtbl \x1b[37m# Comment\n" . + "\x1b[35mWHERE\n" . + " \x1b[92m1 \x1b[37m-- Comment\x1b[0m", + 'html' => 'SELECT
' . + '    /* Comment */ *
' . + 'FROM
' . + '    tbl # Comment
' . + 'WHERE
' . + '    1 ' . + '-- Comment', + ], + 'strip comments' => [ + 'query' => 'select /* Comment */ *' . "\n" . + 'from tbl # Comment' . "\n" . + 'where 1 -- Comment', + 'text' => 'SELECT' . "\n" . + ' *' . "\n" . + 'FROM' . "\n" . + ' tbl' . "\n" . + 'WHERE' . "\n" . + ' 1', + 'cli' => "\x1b[35mSELECT\n" . + " \x1b[39m*\n" . + "\x1b[35mFROM\n" . + " \x1b[39mtbl\n" . + "\x1b[35mWHERE\n" . + " \x1b[92m1\x1b[0m", + 'html' => 'SELECT
' . + '    *
' . + 'FROM
' . + '    tbl
' . + 'WHERE
' . + '    1', + 'options' => ['remove_comments' => true], + ], + 'keywords' => [ + 'query' => 'select hex("1")', + 'text' => 'SELECT' . "\n" . + ' HEX("1")', + 'cli' => "\x1b[35mSELECT\n" . + " \x1b[95mHEX\x1b[39m(\x1b[91m\"1\"\x1b[39m)\x1b[0m", + 'html' => 'SELECT
' . + '    HEX("1")', + ], + 'distinct count' => [ + 'query' => 'select distinct count(*)', + 'text' => 'SELECT DISTINCT' . "\n" . + ' COUNT(*)', + 'cli' => "\x1b[35mSELECT DISTINCT\n" . + " \x1b[95mCOUNT\x1b[39m(*)\x1b[0m", + 'html' => 'SELECT DISTINCT
' . + '    COUNT(*)', + ], + 'create procedure' => [ + 'query' => 'create procedure test_procedure() begin from tbl select *; end', + 'text' => 'CREATE PROCEDURE test_procedure()' . "\n" . + 'BEGIN' . "\n" . + ' FROM' . "\n" . + ' tbl' . "\n" . + ' SELECT' . "\n" . + ' *;' . "\n" . + 'END', + 'cli' => "\x1b[35mCREATE PROCEDURE \x1b[39mtest_procedure()\n" . + "\x1b[95mBEGIN\n" . + " \x1b[35mFROM\n" . + " \x1b[39mtbl\n" . + " \x1b[35mSELECT\n" . + " \x1b[39m*;\n" . + "\x1b[95mEND\x1b[0m", + 'html' => 'CREATE ' . + 'PROCEDURE test_procedure()
' . + 'BEGIN
' . + '    FROM
' . + '        tbl
' . + '    SELECT
' . + '        *;
' . + 'END', + ], + 'insert' => [ + 'query' => 'insert into foo values (0, 0, 0), (1, 1, 1)', + 'text' => 'INSERT INTO foo' . "\n" . + 'VALUES(0, 0, 0),(1, 1, 1)', + 'cli' => "\x1b[35mINSERT INTO \x1b[39mfoo\n" . + "\x1b[35mVALUES\x1b[39m(\x1b[92m0\x1b[39m, \x1b[92m0\x1b[39m, " . + "\x1b[92m0\x1b[39m),(\x1b[92m1\x1b[39m, \x1b[92m1\x1b[39m, \x1b[92m1\x1b[39m)\x1b[0m", + 'html' => 'INSERT INTO foo
' . + 'VALUES(0, ' . + '0, 0),(' . + '1, 1, ' . + '1)', + ], + 'string as alias' => [ + 'query' => 'select "Text" as bar', + 'text' => 'SELECT' . "\n" . + ' "Text" AS bar', + 'cli' => "\x1b[35mSELECT\n" . + " \x1b[91m\"Text\" \x1b[35mAS \x1b[39mbar\x1b[0m", + 'html' => 'SELECT
' . + '    "Text" ' . + 'AS bar', + ], + 'escape cli' => [ + 'query' => "select 'text\x1b[33mcolor-inj'", + 'text' => 'SELECT' . "\n" . + " 'text\x1B[33mcolor-inj'", + 'cli' => "\x1b[35mSELECT\n" . + " \x1b[91m'text\\x1B[33mcolor-inj'\x1b[0m", + 'html' => 'SELECT
' . + '    \'text' . "\x1b[33m" . 'color-inj\'', + ], + 'escape html' => [ + 'query' => "select 'xss' from `xss` , nxss /*sxss*/", + 'text' => 'SELECT' . "\n" . + ' \'xss\'' . "\n" . + 'FROM' . "\n" . + ' `xss`,' . "\n" . + ' < s > nxss /*sxss*/', + 'cli' => "\x1b[35mSELECT\n" . + " \x1b[91m'xss'\n" . + "\x1b[35mFROM\n" . + " \x1b[36m`xss`\x1b[39m,\n" . + " < s > nxss \x1b[37m/*sxss*/\x1b[0m", + 'html' => 'SELECT
' . + '    \'<s>xss\'
' . + 'FROM
' . + '    `<s>xss`,' . + '
    < s > nxss /*s<s>xss*/', + ], + 'create table' => [ + 'query' => 'create table if not exists `pma__bookmark` (' . "\n" . + '`id` int(11) not null auto_increment,' . "\n" . + '`dbase` varchar(255) not null default "",' . "\n" . + '`user` varchar(255) not null default "",' . "\n" . + '`label` varchar(255) collate utf8_general_ci not null default "",' . "\n" . + '`query` text not null,' . "\n" . + 'primary key (`id`)', + 'text' => 'CREATE TABLE IF NOT EXISTS `pma__bookmark`(' . "\n" . + ' `id` INT(11) NOT NULL AUTO_INCREMENT,' . "\n" . + ' `dbase` VARCHAR(255) NOT NULL DEFAULT "",' . "\n" . + ' `user` VARCHAR(255) NOT NULL DEFAULT "",' . "\n" . + ' `label` VARCHAR(255) COLLATE utf8_general_ci NOT NULL DEFAULT "",' . "\n" . + ' `query` TEXT NOT NULL,' . "\n" . + ' PRIMARY KEY(`id`)', + 'cli' => "\x1b[35mCREATE TABLE IF NOT EXISTS \x1b[36m`pma__bookmark`\x1b[39m(\n" . + " \x1b[36m`id` \x1b[35mINT\x1b[39m(\x1b[92m11\x1b[39m) " . + "\x1b[35mNOT NULL \x1b[95mAUTO_INCREMENT\x1b[39m,\n" . + " \x1b[36m`dbase` \x1b[35mVARCHAR\x1b[39m(\x1b[92m255\x1b[39m) " . + "\x1b[35mNOT NULL DEFAULT \x1b[91m\"\"\x1b[39m,\n" . + " \x1b[36m`user` \x1b[35mVARCHAR\x1b[39m(\x1b[92m255\x1b[39m) " . + "\x1b[35mNOT NULL DEFAULT \x1b[91m\"\"\x1b[39m,\n" . + " \x1b[36m`label` \x1b[35mVARCHAR\x1b[39m(\x1b[92m255\x1b[39m) " . + "\x1b[35mCOLLATE \x1b[39mutf8_general_ci \x1b[35mNOT NULL DEFAULT \x1b[91m\"\"\x1b[39m,\n" . + " \x1b[36m`query` \x1b[95mTEXT \x1b[35mNOT NULL\x1b[39m,\n" . + " \x1b[35mPRIMARY KEY\x1b[39m(\x1b[36m`id`\x1b[39m)\x1b[0m", + 'html' => 'CREATE TABLE ' . + 'IF NOT EXISTS ' . + '`pma__bookmark`(
' . + '    `id` ' . + 'INT(11) ' . + 'NOT NULL AUTO_INCREMENT,
' . + '    `dbase` ' . + 'VARCHAR(255) ' . + 'NOT NULL DEFAULT ' . + '"",
' . + '    `user` ' . + 'VARCHAR(255) ' . + 'NOT NULL DEFAULT ' . + '"",
' . + '    `label` ' . + 'VARCHAR(255) ' . + 'COLLATE utf8_general_ci ' . + 'NOT NULL DEFAULT ' . + '"",
' . + '    `query` ' . + 'TEXT NOT NULL,
' . + '    ' . + 'PRIMARY KEY(`id`)', + ], + 'join' => [ + 'query' => 'join tbl2 on c1=c2', + 'text' => 'JOIN tbl2 ON c1 = c2', + 'cli' => "\x1b[35mJOIN \x1b[39mtbl2 \x1b[35mON \x1b[39mc1 = c2" . + "\x1b[0m", + 'html' => 'JOIN tbl2 ON c1 = c2', + ], + 'named param' => [ + 'query' => 'select * from tbl where col = :param', + 'text' => 'SELECT' . "\n" . + ' *' . "\n" . + 'FROM' . "\n" . + ' tbl' . "\n" . + 'WHERE' . "\n" . + ' col = :param', + 'cli' => "\x1b[35mSELECT\n" . + " \x1b[39m*\n" . + "\x1b[35mFROM\n" . + " \x1b[39mtbl\n" . + "\x1b[35mWHERE\n" . + " \x1b[39mcol = \x1b[31m:param\x1b[0m", + 'html' => 'SELECT
' . + '    *
' . + 'FROM
' . + '    tbl
' . + 'WHERE
' . + '    col = :param', + ], + 'anon param' => [ + 'query' => 'select * from tbl where col = ?', + 'text' => 'SELECT' . "\n" . + ' *' . "\n" . + 'FROM' . "\n" . + ' tbl' . "\n" . + 'WHERE' . "\n" . + ' col = ?', + 'cli' => "\x1b[35mSELECT\n" . + " \x1b[39m*\n" . + "\x1b[35mFROM\n" . + " \x1b[39mtbl\n" . + "\x1b[35mWHERE\n" . + " \x1b[39mcol = \x1b[31m?\x1b[0m", + 'html' => 'SELECT
' . + '    *
' . + 'FROM
' . + '    tbl
' . + 'WHERE
' . + '    col = ?', + ], + ]; + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Utils/MiscTest.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Utils/MiscTest.php new file mode 100644 index 0000000000..bbef44f57c --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Utils/MiscTest.php @@ -0,0 +1,127 @@ +statements[0]) ? + null : $parser->statements[0]; + $this->assertEquals($expected, Misc::getAliases($statement, $db)); + } + + public function getAliasesProvider(): array + { + return [ + [ + 'select * from (select 1) tbl', + 'mydb', + [], + ], + [ + 'select i.name as `n`,abcdef gh from qwerty i', + 'mydb', + [ + 'mydb' => [ + 'alias' => null, + 'tables' => [ + 'qwerty' => [ + 'alias' => 'i', + 'columns' => [ + 'name' => 'n', + 'abcdef' => 'gh', + ], + ], + ], + ], + ], + ], + [ + 'select film_id id,title from film', + 'sakila', + [ + 'sakila' => [ + 'alias' => null, + 'tables' => [ + 'film' => [ + 'alias' => null, + 'columns' => ['film_id' => 'id'], + ], + ], + ], + ], + ], + [ + 'select `sakila`.`A`.`actor_id` as aid,`F`.`film_id` `fid`,' + . 'last_update updated from `sakila`.actor A join `film_actor` as ' + . '`F` on F.actor_id = A.`actor_id`', + 'sakila', + [ + 'sakila' => [ + 'alias' => null, + 'tables' => [ + 'film_actor' => [ + 'alias' => 'F', + 'columns' => [ + 'film_id' => 'fid', + 'last_update' => 'updated', + ], + ], + 'actor' => [ + 'alias' => 'A', + 'columns' => [ + 'actor_id' => 'aid', + 'last_update' => 'updated', + ], + ], + ], + ], + ], + ], + [ + 'SELECT film_id FROM (SELECT * FROM film) as f;', + 'sakila', + [], + ], + [ + '', + null, + [], + ], + [ + 'SELECT 1', + null, + [], + ], + [ + 'SELECT * FROM orders AS ord WHERE 1', + 'db', + [ + 'db' => [ + 'alias' => null, + 'tables' => [ + 'orders' => [ + 'alias' => 'ord', + 'columns' => [], + ], + ], + ], + ], + ], + ]; + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Utils/QueryTest.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Utils/QueryTest.php new file mode 100644 index 0000000000..b4b26375e1 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Utils/QueryTest.php @@ -0,0 +1,713 @@ +assertEquals( + $expected, + Query::getFlags($parser->statements[0]) + ); + } + + public function getFlagsProvider(): array + { + return [ + [ + 'ALTER TABLE DROP col', + [ + 'reload' => true, + 'querytype' => 'ALTER', + ], + ], + [ + 'CALL test()', + [ + 'is_procedure' => true, + 'querytype' => 'CALL', + ], + ], + [ + 'CREATE TABLE tbl (id INT)', + [ + 'reload' => true, + 'querytype' => 'CREATE', + ], + ], + [ + 'CHECK TABLE tbl', + [ + 'is_maint' => true, + 'querytype' => 'CHECK', + ], + ], + [ + 'DELETE FROM tbl', + [ + 'is_affected' => true, + 'is_delete' => true, + 'querytype' => 'DELETE', + ], + ], + [ + 'DROP VIEW v', + [ + 'reload' => true, + 'querytype' => 'DROP', + ], + ], + [ + 'DROP DATABASE db', + [ + 'drop_database' => true, + 'reload' => true, + 'querytype' => 'DROP', + ], + ], + [ + 'EXPLAIN tbl', + [ + 'is_explain' => true, + 'querytype' => 'EXPLAIN', + ], + ], + [ + 'LOAD DATA INFILE \'/tmp/test.txt\' INTO TABLE test', + [ + 'is_affected' => true, + 'is_insert' => true, + 'querytype' => 'LOAD', + ], + ], + [ + 'INSERT INTO tbl VALUES (1)', + [ + 'is_affected' => true, + 'is_insert' => true, + 'querytype' => 'INSERT', + ], + ], + [ + 'REPLACE INTO tbl VALUES (2)', + [ + 'is_affected' => true, + 'is_replace' => true, + 'is_insert' => true, + 'querytype' => 'REPLACE', + ], + ], + [ + 'SELECT 1', + [ + 'is_select' => true, + 'querytype' => 'SELECT', + ], + ], + [ + 'SELECT * FROM tbl', + [ + 'is_select' => true, + 'select_from' => true, + 'querytype' => 'SELECT', + ], + ], + [ + 'SELECT DISTINCT * FROM tbl LIMIT 0, 10 ORDER BY id', + [ + 'distinct' => true, + 'is_select' => true, + 'select_from' => true, + 'limit' => true, + 'order' => true, + 'querytype' => 'SELECT', + ], + ], + [ + 'SELECT * FROM actor GROUP BY actor_id', + [ + 'is_group' => true, + 'is_select' => true, + 'select_from' => true, + 'group' => true, + 'querytype' => 'SELECT', + ], + ], + [ + 'SELECT col1, col2 FROM table1 PROCEDURE ANALYSE(10, 2000);', + [ + 'is_analyse' => true, + 'is_select' => true, + 'select_from' => true, + 'querytype' => 'SELECT', + ], + ], + [ + 'SELECT * FROM tbl INTO OUTFILE "/tmp/export.txt"', + [ + 'is_export' => true, + 'is_select' => true, + 'select_from' => true, + 'querytype' => 'SELECT', + ], + ], + [ + 'SELECT COUNT(id), SUM(id) FROM tbl', + [ + 'is_count' => true, + 'is_func' => true, + 'is_select' => true, + 'select_from' => true, + 'querytype' => 'SELECT', + ], + ], + [ + 'SELECT (SELECT "foo")', + [ + 'is_select' => true, + 'is_subquery' => true, + 'querytype' => 'SELECT', + ], + ], + [ + 'SELECT * FROM customer HAVING store_id = 2;', + [ + 'is_select' => true, + 'select_from' => true, + 'is_group' => true, + 'having' => true, + 'querytype' => 'SELECT', + ], + ], + [ + 'SELECT * FROM table1 INNER JOIN table2 ON table1.id=table2.id;', + [ + 'is_select' => true, + 'select_from' => true, + 'join' => true, + 'querytype' => 'SELECT', + ], + ], + [ + 'SHOW CREATE TABLE tbl', + [ + 'is_show' => true, + 'querytype' => 'SHOW', + ], + ], + [ + 'UPDATE tbl SET id = 1', + [ + 'is_affected' => true, + 'querytype' => 'UPDATE', + ], + ], + [ + 'ANALYZE TABLE tbl', + [ + 'is_maint' => true, + 'querytype' => 'ANALYZE', + ], + ], + [ + 'CHECKSUM TABLE tbl', + [ + 'is_maint' => true, + 'querytype' => 'CHECKSUM', + ], + ], + [ + 'OPTIMIZE TABLE tbl', + [ + 'is_maint' => true, + 'querytype' => 'OPTIMIZE', + ], + ], + [ + 'REPAIR TABLE tbl', + [ + 'is_maint' => true, + 'querytype' => 'REPAIR', + ], + ], + [ + '(SELECT a FROM t1 WHERE a=10 AND B=1 ORDER BY a LIMIT 10) ' . + 'UNION ' . + '(SELECT a FROM t2 WHERE a=11 AND B=2 ORDER BY a LIMIT 10);', + [ + 'is_select' => true, + 'select_from' => true, + 'limit' => true, + 'order' => true, + 'union' => true, + 'querytype' => 'SELECT', + ], + ], + [ + 'SELECT * FROM orders AS ord WHERE 1', + [ + 'querytype' => 'SELECT', + 'is_select' => true, + 'select_from' => true, + ], + ], + [ + 'SET NAMES \'latin\'', + ['querytype' => 'SET'], + ], + ]; + } + + public function testGetAll(): void + { + $this->assertEquals( + [ + 'distinct' => false, + 'drop_database' => false, + 'group' => false, + 'having' => false, + 'is_affected' => false, + 'is_analyse' => false, + 'is_count' => false, + 'is_delete' => false, + 'is_explain' => false, + 'is_export' => false, + 'is_func' => false, + 'is_group' => false, + 'is_insert' => false, + 'is_maint' => false, + 'is_procedure' => false, + 'is_replace' => false, + 'is_select' => false, + 'is_show' => false, + 'is_subquery' => false, + 'join' => false, + 'limit' => false, + 'offset' => false, + 'order' => false, + 'querytype' => false, + 'reload' => false, + 'select_from' => false, + 'union' => false, + ], + Query::getAll('') + ); + + $query = 'SELECT *, actor.actor_id, sakila2.film.* + FROM sakila2.city, sakila2.film, actor'; + $parser = new Parser($query); + $this->assertEquals( + array_merge( + Query::getFlags($parser->statements[0], true), + [ + 'parser' => $parser, + 'statement' => $parser->statements[0], + 'select_expr' => ['*'], + 'select_tables' => [ + [ + 'actor', + null, + ], + [ + 'film', + 'sakila2', + ], + ], + ] + ), + Query::getAll($query) + ); + + $query = 'SELECT * FROM sakila.actor, film'; + $parser = new Parser($query); + $this->assertEquals( + array_merge( + Query::getFlags($parser->statements[0], true), + [ + 'parser' => $parser, + 'statement' => $parser->statements[0], + 'select_expr' => ['*'], + 'select_tables' => [ + [ + 'actor', + 'sakila', + ], + [ + 'film', + null, + ], + ], + ] + ), + Query::getAll($query) + ); + + $query = 'SELECT a.actor_id FROM sakila.actor AS a, film'; + $parser = new Parser($query); + $this->assertEquals( + array_merge( + Query::getFlags($parser->statements[0], true), + [ + 'parser' => $parser, + 'statement' => $parser->statements[0], + 'select_expr' => [], + 'select_tables' => [ + [ + 'actor', + 'sakila', + ], + ], + ] + ), + Query::getAll($query) + ); + + $query = 'SELECT CASE WHEN 2 IS NULL THEN "this is true" ELSE "this is false" END'; + $parser = new Parser($query); + $this->assertEquals( + array_merge( + Query::getFlags($parser->statements[0], true), + [ + 'parser' => $parser, + 'statement' => $parser->statements[0], + 'select_expr' => ['CASE WHEN 2 IS NULL THEN "this is true" ELSE "this is false" END'], + 'select_tables' => [], + ] + ), + Query::getAll($query) + ); + } + + /** + * @param mixed $query + * @param mixed $expected + * + * @dataProvider getTablesProvider + */ + public function testGetTables($query, $expected): void + { + $parser = new Parser($query); + $this->assertEquals( + $expected, + Query::getTables($parser->statements[0]) + ); + } + + public function getTablesProvider(): array + { + return [ + [ + 'INSERT INTO tbl(`id`, `name`) VALUES (1, "Name")', + ['`tbl`'], + ], + [ + 'INSERT INTO 0tbl(`id`, `name`) VALUES (1, "Name")', + ['`0tbl`'], + ], + [ + 'UPDATE tbl SET id = 0', + ['`tbl`'], + ], + [ + 'UPDATE 0tbl SET id = 0', + ['`0tbl`'], + ], + [ + 'DELETE FROM tbl WHERE id < 10', + ['`tbl`'], + ], + [ + 'DELETE FROM 0tbl WHERE id < 10', + ['`0tbl`'], + ], + [ + 'TRUNCATE tbl', + ['`tbl`'], + ], + [ + 'DROP VIEW v', + [], + ], + [ + 'DROP TABLE tbl1, tbl2', + [ + '`tbl1`', + '`tbl2`', + ], + ], + [ + 'RENAME TABLE a TO b, c TO d', + [ + '`a`', + '`c`', + ], + ], + ]; + } + + public function testGetClause(): void + { + /* Assertion 1 */ + $parser = new Parser( + 'SELECT c.city_id, c.country_id ' . + 'FROM `city` ' . + 'WHERE city_id < 1 /* test */' . + 'ORDER BY city_id ASC ' . + 'LIMIT 0, 1 ' . + 'INTO OUTFILE "/dev/null"' + ); + $this->assertEquals( + '0, 1 INTO OUTFILE "/dev/null"', + Query::getClause( + $parser->statements[0], + $parser->list, + 'LIMIT', + 0 + ) + ); + // Assert it returns all clauses between FROM and LIMIT + $this->assertEquals( + 'WHERE city_id < 1 ORDER BY city_id ASC', + Query::getClause( + $parser->statements[0], + $parser->list, + 'FROM', + 'LIMIT' + ) + ); + // Assert it returns all clauses between SELECT and LIMIT + $this->assertEquals( + 'FROM `city` WHERE city_id < 1 ORDER BY city_id ASC', + Query::getClause( + $parser->statements[0], + $parser->list, + 'LIMIT', + 'SELECT' + ) + ); + + /* Assertion 2 */ + $parser = new Parser( + 'DELETE FROM `renewal` ' . + 'WHERE number = "1DB" AND actionDate <= CURRENT_DATE() ' . + 'ORDER BY id ASC ' . + 'LIMIT 1' + ); + $this->assertEquals( + 'number = "1DB" AND actionDate <= CURRENT_DATE()', + Query::getClause( + $parser->statements[0], + $parser->list, + 'WHERE' + ) + ); + $this->assertEquals( + '1', + Query::getClause( + $parser->statements[0], + $parser->list, + 'LIMIT' + ) + ); + $this->assertEquals( + 'id ASC', + Query::getClause( + $parser->statements[0], + $parser->list, + 'ORDER BY' + ) + ); + + /* Assertion 3 */ + $parser = new Parser( + 'UPDATE `renewal` SET `some_column` = 1 ' . + 'WHERE number = "1DB" AND actionDate <= CURRENT_DATE() ' . + 'ORDER BY id ASC ' . + 'LIMIT 1' + ); + $this->assertEquals( + 'number = "1DB" AND actionDate <= CURRENT_DATE()', + Query::getClause( + $parser->statements[0], + $parser->list, + 'WHERE' + ) + ); + $this->assertEquals( + '1', + Query::getClause( + $parser->statements[0], + $parser->list, + 'LIMIT' + ) + ); + $this->assertEquals( + 'id ASC', + Query::getClause( + $parser->statements[0], + $parser->list, + 'ORDER BY' + ) + ); + } + + public function testReplaceClause(): void + { + $parser = new Parser('SELECT *, (SELECT 1) FROM film LIMIT 0, 10;'); + $this->assertEquals( + 'SELECT *, (SELECT 1) FROM film WHERE film_id > 0 LIMIT 0, 10', + Query::replaceClause( + $parser->statements[0], + $parser->list, + 'WHERE film_id > 0' + ) + ); + + $parser = new Parser( + 'select supplier.city, supplier.id from supplier ' + . 'union select customer.city, customer.id from customer' + ); + $this->assertEquals( + 'select supplier.city, supplier.id from supplier ' + . 'union select customer.city, customer.id from customer' + . ' ORDER BY city ', + Query::replaceClause( + $parser->statements[0], + $parser->list, + 'ORDER BY city' + ) + ); + } + + public function testReplaceClauseOnlyKeyword(): void + { + $parser = new Parser('SELECT *, (SELECT 1) FROM film LIMIT 0, 10'); + $this->assertEquals( + ' SELECT SQL_CALC_FOUND_ROWS *, (SELECT 1) FROM film LIMIT 0, 10', + Query::replaceClause( + $parser->statements[0], + $parser->list, + 'SELECT SQL_CALC_FOUND_ROWS', + null, + true + ) + ); + } + + public function testReplaceNonExistingPart(): void + { + $parser = new Parser('ALTER TABLE `sale_mast` OPTIMIZE PARTITION p3'); + $this->assertEquals( + ' ALTER TABLE `sale_mast` OPTIMIZE PARTITION p3', + Query::replaceClause( + $parser->statements[0], + $parser->list, + 'ORDER BY', + '' + ) + ); + } + + public function testReplaceClauses(): void + { + $this->assertEquals('', Query::replaceClauses(null, null, [])); + + $parser = new Parser('SELECT *, (SELECT 1) FROM film LIMIT 0, 10;'); + $this->assertEquals( + 'SELECT *, (SELECT 1) FROM film WHERE film_id > 0 LIMIT 0, 10', + Query::replaceClauses( + $parser->statements[0], + $parser->list, + [ + [ + 'WHERE', + 'WHERE film_id > 0', + ], + ] + ) + ); + + $parser = new Parser( + 'SELECT c.city_id, c.country_id ' . + 'INTO OUTFILE "/dev/null" ' . + 'FROM `city` ' . + 'WHERE city_id < 1 ' . + 'ORDER BY city_id ASC ' . + 'LIMIT 0, 1 ' + ); + $this->assertEquals( + 'SELECT c.city_id, c.country_id ' . + 'INTO OUTFILE "/dev/null" ' . + 'FROM city AS c ' . + 'ORDER BY city_id ASC ' . + 'LIMIT 0, 10 ', + Query::replaceClauses( + $parser->statements[0], + $parser->list, + [ + [ + 'FROM', + 'FROM city AS c', + ], + [ + 'WHERE', + '', + ], + [ + 'LIMIT', + 'LIMIT 0, 10', + ], + ] + ) + ); + } + + public function testGetFirstStatement(): void + { + $query = 'USE saki'; + $delimiter = null; + [$statement, $query, $delimiter] = Query::getFirstStatement($query, $delimiter); + $this->assertNull($statement); + $this->assertEquals('USE saki', $query); + + $query = 'USE sakila; ' . + '/*test comment*/' . + 'SELECT * FROM actor; ' . + 'DELIMITER $$ ' . + 'UPDATE actor SET last_name = "abc"$$' . + '/*!SELECT * FROM actor WHERE last_name = "abc"*/$$'; + $delimiter = null; + + [$statement, $query, $delimiter] = Query::getFirstStatement($query, $delimiter); + $this->assertEquals('USE sakila;', $statement); + + [$statement, $query, $delimiter] = Query::getFirstStatement($query, $delimiter); + $this->assertEquals('SELECT * FROM actor;', $statement); + + [$statement, $query, $delimiter] = Query::getFirstStatement($query, $delimiter); + $this->assertEquals('DELIMITER $$', $statement); + $this->assertEquals('$$', $delimiter); + + [$statement, $query, $delimiter] = Query::getFirstStatement($query, $delimiter); + $this->assertEquals('UPDATE actor SET last_name = "abc"$$', $statement); + + [$statement, $query, $delimiter] = Query::getFirstStatement($query, $delimiter); + $this->assertEquals('SELECT * FROM actor WHERE last_name = "abc"$$', $statement); + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Utils/RoutineTest.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Utils/RoutineTest.php new file mode 100644 index 0000000000..d6d832365e --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Utils/RoutineTest.php @@ -0,0 +1,292 @@ +assertEquals($expected, Routine::getReturnType($def)); + } + + public function getReturnTypeProvider(): array + { + return [ + [ + '', + [ + '', + '', + '', + '', + '', + ], + ], + [ + 'TEXT', + [ + '', + '', + 'TEXT', + '', + '', + ], + ], + [ + 'INT(20)', + [ + '', + '', + 'INT', + '20', + '', + ], + ], + [ + 'INT UNSIGNED', + [ + '', + '', + 'INT', + '', + 'UNSIGNED', + ], + ], + [ + 'VARCHAR(1) CHARSET utf8', + [ + '', + '', + 'VARCHAR', + '1', + 'utf8', + ], + ], + [ + 'ENUM(\'a\', \'b\') CHARSET latin1', + [ + '', + '', + 'ENUM', + '\'a\',\'b\'', + 'latin1', + ], + ], + [ + 'DECIMAL(5,2) UNSIGNED ZEROFILL', + [ + '', + '', + 'DECIMAL', + '5,2', + 'UNSIGNED ZEROFILL', + ], + ], + [ + 'SET(\'test\'\'esc"\', \'more\\\'esc\')', + [ + '', + '', + 'SET', + '\'test\'\'esc"\',\'more\\\'esc\'', + '', + ], + ], + ]; + } + + /** + * @param mixed $def + * + * @dataProvider getParameterProvider + */ + public function testGetParameter($def, array $expected): void + { + $this->assertEquals($expected, Routine::getParameter($def)); + } + + public function getParameterProvider(): array + { + return [ + [ + '', + [ + '', + '', + '', + '', + '', + ], + ], + [ + '`foo` TEXT', + [ + '', + 'foo', + 'TEXT', + '', + '', + ], + ], + [ + '`foo` INT(20)', + [ + '', + 'foo', + 'INT', + '20', + '', + ], + ], + [ + 'IN `fo``fo` INT UNSIGNED', + [ + 'IN', + 'fo`fo', + 'INT', + '', + 'UNSIGNED', + ], + ], + [ + 'OUT bar VARCHAR(1) CHARSET utf8', + [ + 'OUT', + 'bar', + 'VARCHAR', + '1', + 'utf8', + ], + ], + [ + '`"baz\'\'` ENUM(\'a\', \'b\') CHARSET latin1', + [ + '', + '"baz\'\'', + 'ENUM', + '\'a\',\'b\'', + 'latin1', + ], + ], + [ + 'INOUT `foo` DECIMAL(5,2) UNSIGNED ZEROFILL', + [ + 'INOUT', + 'foo', + 'DECIMAL', + '5,2', + 'UNSIGNED ZEROFILL', + ], + ], + [ + '`foo``s func` SET(\'test\'\'esc"\', \'more\\\'esc\')', + [ + '', + 'foo`s func', + 'SET', + '\'test\'\'esc"\',\'more\\\'esc\'', + '', + ], + ], + ]; + } + + /** + * @param mixed $query + * + * @dataProvider getParametersProvider + */ + public function testGetParameters($query, array $expected): void + { + $parser = new Parser($query); + $this->assertEquals($expected, Routine::getParameters($parser->statements[0])); + } + + public function getParametersProvider(): array + { + return [ + [ + 'CREATE PROCEDURE `foo`() SET @A=0', + [ + 'num' => 0, + 'dir' => [], + 'name' => [], + 'type' => [], + 'length' => [], + 'length_arr' => [], + 'opts' => [], + ], + ], + [ + 'CREATE DEFINER=`user\\`@`somehost``(` FUNCTION `foo```(`baz` INT) BEGIN SELECT NULL; END', + [ + 'num' => 1, + 'dir' => [0 => ''], + 'name' => [0 => 'baz'], + 'type' => [0 => 'INT'], + 'length' => [0 => ''], + 'length_arr' => [ + 0 => [], + ], + 'opts' => [0 => ''], + ], + ], + [ + 'CREATE PROCEDURE `foo`(IN `baz\\)` INT(25) zerofill unsigned) BEGIN SELECT NULL; END', + [ + 'num' => 1, + 'dir' => [0 => 'IN'], + 'name' => [0 => 'baz\\)'], + 'type' => [0 => 'INT'], + 'length' => [0 => '25'], + 'length_arr' => [ + 0 => ['25'], + ], + 'opts' => [0 => 'UNSIGNED ZEROFILL'], + ], + ], + [ + 'CREATE PROCEDURE `foo`(IN `baz\\` INT(001) zerofill, out bazz varchar(15) charset utf8) ' . + 'BEGIN SELECT NULL; END', + [ + 'num' => 2, + 'dir' => [ + 0 => 'IN', + 1 => 'OUT', + ], + 'name' => [ + 0 => 'baz\\', + 1 => 'bazz', + ], + 'type' => [ + 0 => 'INT', + 1 => 'VARCHAR', + ], + 'length' => [ + 0 => '1', + 1 => '15', + ], + 'length_arr' => [ + 0 => ['1'], + 1 => ['15'], + ], + 'opts' => [ + 0 => 'ZEROFILL', + 1 => 'utf8', + ], + ], + ], + ]; + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Utils/TableTest.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Utils/TableTest.php new file mode 100644 index 0000000000..31e0b529c7 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Utils/TableTest.php @@ -0,0 +1,222 @@ +assertEquals($expected, Table::getForeignKeys($parser->statements[0])); + } + + public function getForeignKeysProvider(): array + { + return [ + [ + 'CREATE USER test', + [], + ], + [ + 'CREATE TABLE `payment` ( + `payment_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT, + `customer_id` smallint(5) unsigned NOT NULL, + `staff_id` tinyint(3) unsigned NOT NULL, + `rental_id` int(11) DEFAULT NULL, + `amount` decimal(5,2) NOT NULL, + `payment_date` datetime NOT NULL, + `last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`payment_id`), + KEY `idx_fk_staff_id` (`staff_id`), + KEY `idx_fk_customer_id` (`customer_id`), + KEY `fk_payment_rental` (`rental_id`), + CONSTRAINT `fk_payment_customer` FOREIGN KEY (`customer_id`) + REFERENCES `customer` (`customer_id`) ON UPDATE CASCADE, + CONSTRAINT `fk_payment_rental` FOREIGN KEY (`rental_id`) + REFERENCES `rental` (`rental_id`) ON DELETE SET NULL ON UPDATE CASCADE, + CONSTRAINT `fk_payment_staff` FOREIGN KEY (`staff_id`) + REFERENCES `staff` (`staff_id`) ON UPDATE CASCADE + ) ENGINE=InnoDB AUTO_INCREMENT=16050 DEFAULT CHARSET=utf8', + [ + [ + 'constraint' => 'fk_payment_customer', + 'index_list' => ['customer_id'], + 'ref_db_name' => null, + 'ref_table_name' => 'customer', + 'ref_index_list' => ['customer_id'], + 'on_update' => 'CASCADE', + ], + [ + 'constraint' => 'fk_payment_rental', + 'index_list' => ['rental_id'], + 'ref_db_name' => null, + 'ref_table_name' => 'rental', + 'ref_index_list' => ['rental_id'], + 'on_delete' => 'SET_NULL', + 'on_update' => 'CASCADE', + ], + [ + 'constraint' => 'fk_payment_staff', + 'index_list' => ['staff_id'], + 'ref_db_name' => null, + 'ref_table_name' => 'staff', + 'ref_index_list' => ['staff_id'], + 'on_update' => 'CASCADE', + ], + ], + ], + [ + 'CREATE TABLE `actor` ( + `actor_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT, + `first_name` varchar(45) NOT NULL, + `last_name` varchar(45) NOT NULL, + `last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`actor_id`), + KEY `idx_actor_last_name` (`last_name`) + ) ENGINE=InnoDB AUTO_INCREMENT=201 DEFAULT CHARSET=utf8', + [], + ], + [ + 'CREATE TABLE `address` ( + `address_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT, + `address` varchar(50) NOT NULL, + `address2` varchar(50) DEFAULT NULL, + `district` varchar(20) NOT NULL, + `city_id` smallint(5) unsigned NOT NULL, + `postal_code` varchar(10) DEFAULT NULL, + `phone` varchar(20) NOT NULL, + `last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`address_id`), + KEY `idx_fk_city_id` (`city_id`), + CONSTRAINT `fk_address_city` FOREIGN KEY (`city_id`) REFERENCES `city` (`city_id`) ON UPDATE CASCADE + ) ENGINE=InnoDB AUTO_INCREMENT=606 DEFAULT CHARSET=utf8', + [ + [ + 'constraint' => 'fk_address_city', + 'index_list' => ['city_id'], + 'ref_db_name' => null, + 'ref_table_name' => 'city', + 'ref_index_list' => ['city_id'], + 'on_update' => 'CASCADE', + ], + ], + ], + ]; + } + + /** + * @param mixed $query + * + * @dataProvider getFieldsProvider + */ + public function testGetFields($query, array $expected): void + { + $parser = new Parser($query); + $this->assertEquals($expected, Table::getFields($parser->statements[0])); + } + + public function getFieldsProvider(): array + { + return [ + [ + 'CREATE USER test', + [], + ], + [ + 'CREATE TABLE `address` ( + `address_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT, + `address` varchar(50) NOT NULL, + `address2` varchar(50) DEFAULT NULL, + `district` varchar(20) NOT NULL, + `city_id` smallint(5) unsigned NOT NULL, + `postal_code` varchar(10) DEFAULT NULL, + `phone` varchar(20) NOT NULL, + `last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`address_id`), + KEY `idx_fk_city_id` (`city_id`), + CONSTRAINT `fk_address_city` FOREIGN KEY (`city_id`) REFERENCES `city` (`city_id`) ON UPDATE CASCADE + ) ENGINE=InnoDB AUTO_INCREMENT=606 DEFAULT CHARSET=utf8', + [ + 'address_id' => [ + 'type' => 'SMALLINT', + 'timestamp_not_null' => false, + ], + 'address' => [ + 'type' => 'VARCHAR', + 'timestamp_not_null' => false, + ], + 'address2' => [ + 'type' => 'VARCHAR', + 'timestamp_not_null' => false, + 'default_value' => 'NULL', + ], + 'district' => [ + 'type' => 'VARCHAR', + 'timestamp_not_null' => false, + ], + 'city_id' => [ + 'type' => 'SMALLINT', + 'timestamp_not_null' => false, + ], + 'postal_code' => [ + 'type' => 'VARCHAR', + 'timestamp_not_null' => false, + 'default_value' => 'NULL', + ], + 'phone' => [ + 'type' => 'VARCHAR', + 'timestamp_not_null' => false, + ], + 'last_update' => [ + 'type' => 'TIMESTAMP', + 'timestamp_not_null' => true, + 'default_value' => 'CURRENT_TIMESTAMP', + 'default_current_timestamp' => true, + 'on_update_current_timestamp' => true, + ], + ], + ], + [ + 'CREATE TABLE table1 ( + a INT NOT NULL, + b VARCHAR(32), + c INT AS (a mod 10) VIRTUAL, + d VARCHAR(5) AS (left(b,5)) PERSISTENT + )', + [ + 'a' => [ + 'type' => 'INT', + 'timestamp_not_null' => false, + ], + 'b' => [ + 'type' => 'VARCHAR', + 'timestamp_not_null' => false, + ], + 'c' => [ + 'type' => 'INT', + 'timestamp_not_null' => false, + 'generated' => true, + 'expr' => '(a mod 10)', + ], + 'd' => [ + 'type' => 'VARCHAR', + 'timestamp_not_null' => false, + 'generated' => true, + 'expr' => '(left(b,5))', + ], + ], + ], + ]; + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Utils/TokensTest.php b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Utils/TokensTest.php new file mode 100644 index 0000000000..6bab67e5fc --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/Utils/TokensTest.php @@ -0,0 +1,118 @@ +assertEquals($expected, Tokens::replaceTokens($list, $find, $replace)); + } + + public function replaceTokensProvider(): array + { + return [ + [ + 'SELECT * FROM /*x*/a/*c*/.b', + [ + ['value_str' => 'a'], + ['token' => '.'], + ], + [ + new Token('c'), + new Token('.'), + ], + 'SELECT * FROM /*x*/c.b', + ], + ]; + } + + /** + * @param mixed $token + * @param mixed $pattern + * @param mixed $expected + * + * @dataProvider matchProvider + */ + public function testMatch($token, $pattern, $expected): void + { + $this->assertEquals($expected, Tokens::match($token, $pattern)); + } + + public function matchProvider(): array + { + return [ + [ + new Token(''), + [], + true, + ], + + [ + new Token('"abc"', Token::TYPE_STRING, Token::FLAG_STRING_DOUBLE_QUOTES), + ['token' => '"abc"'], + true, + ], + [ + new Token('"abc"', Token::TYPE_STRING, Token::FLAG_STRING_DOUBLE_QUOTES), + ['value' => 'abc'], + true, + ], + [ + new Token('"abc"', Token::TYPE_STRING, Token::FLAG_STRING_DOUBLE_QUOTES), + ['value_str' => 'ABC'], + true, + ], + [ + new Token('"abc"', Token::TYPE_STRING, Token::FLAG_STRING_DOUBLE_QUOTES), + ['type' => Token::TYPE_STRING], + true, + ], + [ + new Token('"abc"', Token::TYPE_STRING, Token::FLAG_STRING_DOUBLE_QUOTES), + ['flags' => Token::FLAG_STRING_DOUBLE_QUOTES], + true, + ], + + [ + new Token('"abc"', Token::TYPE_STRING, Token::FLAG_STRING_DOUBLE_QUOTES), + ['token' => '"abcd"'], + false, + ], + [ + new Token('"abc"', Token::TYPE_STRING, Token::FLAG_STRING_DOUBLE_QUOTES), + ['value' => 'abcd'], + false, + ], + [ + new Token('"abc"', Token::TYPE_STRING, Token::FLAG_STRING_DOUBLE_QUOTES), + ['value_str' => 'ABCd'], + false, + ], + [ + new Token('"abc"', Token::TYPE_STRING, Token::FLAG_STRING_DOUBLE_QUOTES), + ['type' => Token::TYPE_NUMBER], + false, + ], + [ + new Token('"abc"', Token::TYPE_STRING, Token::FLAG_STRING_DOUBLE_QUOTES), + ['flags' => Token::FLAG_STRING_SINGLE_QUOTES], + false, + ], + ]; + } +} diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/bugs/gh14.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/bugs/gh14.in new file mode 100644 index 0000000000..3a2c10b190 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/bugs/gh14.in @@ -0,0 +1,3 @@ +ALTER TABLE + `actor` MODIFY `actor_id` SMALLINT(5) UNSIGNED NOT NULL AUTO_INCREMENT, + AUTO_INCREMENT = 201; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/bugs/gh14.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/bugs/gh14.out new file mode 100644 index 0000000000..fc1e0f3b89 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/bugs/gh14.out @@ -0,0 +1,996 @@ +{ + "query": "ALTER TABLE\n `actor` MODIFY `actor_id` SMALLINT(5) UNSIGNED NOT NULL AUTO_INCREMENT,\n AUTO_INCREMENT = 201;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "ALTER TABLE\n `actor` MODIFY `actor_id` SMALLINT(5) UNSIGNED NOT NULL AUTO_INCREMENT,\n AUTO_INCREMENT = 201;", + "len": 113, + "last": 113, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": 1, + "flags": 3, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`actor`", + "value": "actor", + "keyword": null, + "type": 8, + "flags": 2, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "MODIFY", + "value": "MODIFY", + "keyword": "MODIFY", + "type": 1, + "flags": 1, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`actor_id`", + "value": "actor_id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SMALLINT", + "value": "SMALLINT", + "keyword": "SMALLINT", + "type": 1, + "flags": 11, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "5", + "value": 5, + "keyword": null, + "type": 6, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNSIGNED", + "value": "UNSIGNED", + "keyword": "UNSIGNED", + "type": 1, + "flags": 3, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": 1, + "flags": 7, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AUTO_INCREMENT", + "value": "AUTO_INCREMENT", + "keyword": "AUTO_INCREMENT", + "type": 1, + "flags": 1, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AUTO_INCREMENT", + "value": "AUTO_INCREMENT", + "keyword": "AUTO_INCREMENT", + "type": 1, + "flags": 1, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 106 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "201", + "value": 201, + "keyword": null, + "type": 6, + "flags": 0, + "position": 109 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 29, + "idx": 29 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "actor", + "column": null, + "expr": "`actor`", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var" + ], + "CHARSET": [ + 1, + "var" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var" + ], + "DEFAULT CHARSET": [ + 1, + "var" + ], + "UPGRADE": [ + 1, + "var" + ], + "COLLATE": [ + 2, + "var" + ], + "DEFAULT COLLATE": [ + 2, + "var" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 1, + "var=" + ], + "AVG_ROW_LENGTH": [ + 1, + "var" + ], + "MAX_ROWS": [ + 1, + "var" + ], + "ROW_FORMAT": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "ADD": 1, + "ALTER": 1, + "ANALYZE": 1, + "CHANGE": 1, + "CHARSET": 1, + "CHECK": 1, + "COALESCE": 1, + "CONVERT": 1, + "DEFAULT CHARSET": 1, + "DISABLE": 1, + "DISCARD": 1, + "DROP": 1, + "ENABLE": 1, + "IMPORT": 1, + "MODIFY": 1, + "OPTIMIZE": 1, + "ORDER": 1, + "PARTITION": 1, + "REBUILD": 1, + "REMOVE": 1, + "RENAME": 1, + "REORGANIZE": 1, + "REPAIR": 1, + "UPGRADE": 1, + "COLUMN": 2, + "CONSTRAINT": 2, + "DEFAULT": 2, + "TO": 2, + "BY": 2, + "FOREIGN": 2, + "FULLTEXT": 2, + "KEY": 2, + "KEYS": 2, + "PARTITIONING": 2, + "PRIMARY KEY": 2, + "SPATIAL": 2, + "TABLESPACE": 2, + "INDEX": 2, + "CHARACTER SET": 3 + }, + "USER_OPTIONS": { + "ATTRIBUTE": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "REQUIRE": [ + 1, + "var" + ], + "BY": [ + 2, + "expr" + ], + "PASSWORD": [ + 2, + "var" + ], + "WITH": [ + 2, + "var" + ], + "ACCOUNT": 1, + "DEFAULT": 1, + "LOCK": 2, + "UNLOCK": 2, + "IDENTIFIED": 3 + }, + "VIEW_OPTIONS": { + "AS": 1 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "MODIFY" + } + }, + "field": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "actor_id", + "expr": "`actor_id`", + "alias": null, + "function": null, + "subquery": null + }, + "unknown": [ + { + "@type": "@12" + }, + { + "@type": "@13" + }, + { + "@type": "@14" + }, + { + "@type": "@15" + }, + { + "@type": "@16" + }, + { + "@type": "@17" + }, + { + "@type": "@18" + }, + { + "@type": "@19" + }, + { + "@type": "@20" + }, + { + "@type": "@21" + } + ] + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var" + ], + "CHARSET": [ + 1, + "var" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var" + ], + "DEFAULT CHARSET": [ + 1, + "var" + ], + "UPGRADE": [ + 1, + "var" + ], + "COLLATE": [ + 2, + "var" + ], + "DEFAULT COLLATE": [ + 2, + "var" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 1, + "var=" + ], + "AVG_ROW_LENGTH": [ + 1, + "var" + ], + "MAX_ROWS": [ + 1, + "var" + ], + "ROW_FORMAT": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "ADD": 1, + "ALTER": 1, + "ANALYZE": 1, + "CHANGE": 1, + "CHARSET": 1, + "CHECK": 1, + "COALESCE": 1, + "CONVERT": 1, + "DEFAULT CHARSET": 1, + "DISABLE": 1, + "DISCARD": 1, + "DROP": 1, + "ENABLE": 1, + "IMPORT": 1, + "MODIFY": 1, + "OPTIMIZE": 1, + "ORDER": 1, + "PARTITION": 1, + "REBUILD": 1, + "REMOVE": 1, + "RENAME": 1, + "REORGANIZE": 1, + "REPAIR": 1, + "UPGRADE": 1, + "COLUMN": 2, + "CONSTRAINT": 2, + "DEFAULT": 2, + "TO": 2, + "BY": 2, + "FOREIGN": 2, + "FULLTEXT": 2, + "KEY": 2, + "KEYS": 2, + "PARTITIONING": 2, + "PRIMARY KEY": 2, + "SPATIAL": 2, + "TABLESPACE": 2, + "INDEX": 2, + "CHARACTER SET": 3 + }, + "USER_OPTIONS": { + "ATTRIBUTE": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "REQUIRE": [ + 1, + "var" + ], + "BY": [ + 2, + "expr" + ], + "PASSWORD": [ + 2, + "var" + ], + "WITH": [ + 2, + "var" + ], + "ACCOUNT": 1, + "DEFAULT": 1, + "LOCK": 2, + "UNLOCK": 2, + "IDENTIFIED": 3 + }, + "VIEW_OPTIONS": { + "AS": 1 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "AUTO_INCREMENT", + "equals": true, + "expr": "201", + "value": "201" + } + } + }, + "field": null, + "unknown": [] + } + ], + "OPTIONS": { + "ONLINE": 1, + "OFFLINE": 1, + "IGNORE": 2, + "DATABASE": 3, + "EVENT": 3, + "FUNCTION": 3, + "PROCEDURE": 3, + "SERVER": 3, + "TABLE": 3, + "TABLESPACE": 3, + "USER": 3, + "VIEW": 3 + }, + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 0, + "last": 27 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/bugs/gh16.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/bugs/gh16.in new file mode 100644 index 0000000000..7f6ea42f19 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/bugs/gh16.in @@ -0,0 +1,11 @@ +CREATE TABLE `jos_core_acl_aro` ( + `id` int(11) NOT NULL, + `section_value` varchar(240) NOT NULL DEFAULT '0', + `value` varchar(240) NOT NULL DEFAULT '', + `order_value` int(11) NOT NULL DEFAULT '0', + `name` varchar(255) NOT NULL DEFAULT '', + `hidden` int(11) NOT NULL DEFAULT '0', + PRIMARY KEY (`id`), + UNIQUE KEY `jos_section_value_value_aro` (`section_value`(100),`value`(15)) USING BTREE, + KEY `jos_gacl_hidden_aro` (`hidden`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/bugs/gh16.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/bugs/gh16.out new file mode 100644 index 0000000000..625be7b5e1 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/bugs/gh16.out @@ -0,0 +1,2920 @@ +{ + "query": "CREATE TABLE `jos_core_acl_aro` (\n `id` int(11) NOT NULL,\n `section_value` varchar(240) NOT NULL DEFAULT '0',\n `value` varchar(240) NOT NULL DEFAULT '',\n `order_value` int(11) NOT NULL DEFAULT '0',\n `name` varchar(255) NOT NULL DEFAULT '',\n `hidden` int(11) NOT NULL DEFAULT '0',\n PRIMARY KEY (`id`),\n UNIQUE KEY `jos_section_value_value_aro` (`section_value`(100),`value`(15)) USING BTREE,\n KEY `jos_gacl_hidden_aro` (`hidden`)\n) ENGINE=InnoDB DEFAULT CHARSET=latin1", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "CREATE TABLE `jos_core_acl_aro` (\n `id` int(11) NOT NULL,\n `section_value` varchar(240) NOT NULL DEFAULT '0',\n `value` varchar(240) NOT NULL DEFAULT '',\n `order_value` int(11) NOT NULL DEFAULT '0',\n `name` varchar(255) NOT NULL DEFAULT '',\n `hidden` int(11) NOT NULL DEFAULT '0',\n PRIMARY KEY (`id`),\n UNIQUE KEY `jos_section_value_value_aro` (`section_value`(100),`value`(15)) USING BTREE,\n KEY `jos_gacl_hidden_aro` (`hidden`)\n) ENGINE=InnoDB DEFAULT CHARSET=latin1", + "len": 476, + "last": 476, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": 1, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`jos_core_acl_aro`", + "value": "jos_core_acl_aro", + "keyword": null, + "type": 8, + "flags": 2, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`id`", + "value": "id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "int", + "value": "INT", + "keyword": "INT", + "type": 1, + "flags": 11, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "11", + "value": 11, + "keyword": null, + "type": 6, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": 1, + "flags": 7, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`section_value`", + "value": "section_value", + "keyword": null, + "type": 8, + "flags": 2, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "varchar", + "value": "VARCHAR", + "keyword": "VARCHAR", + "type": 1, + "flags": 11, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "240", + "value": 240, + "keyword": null, + "type": 6, + "flags": 0, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": 1, + "flags": 7, + "position": 90 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT", + "value": "DEFAULT", + "keyword": "DEFAULT", + "type": 1, + "flags": 35, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 106 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'0'", + "value": "0", + "keyword": null, + "type": 7, + "flags": 1, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 110 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 111 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`value`", + "value": "value", + "keyword": null, + "type": 8, + "flags": 2, + "position": 114 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "varchar", + "value": "VARCHAR", + "keyword": "VARCHAR", + "type": 1, + "flags": 11, + "position": 122 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 129 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "240", + "value": 240, + "keyword": null, + "type": 6, + "flags": 0, + "position": 130 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 133 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 134 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": 1, + "flags": 7, + "position": 135 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 143 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT", + "value": "DEFAULT", + "keyword": "DEFAULT", + "type": 1, + "flags": 35, + "position": 144 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 151 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "''", + "value": "", + "keyword": null, + "type": 7, + "flags": 1, + "position": 152 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 154 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 155 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`order_value`", + "value": "order_value", + "keyword": null, + "type": 8, + "flags": 2, + "position": 158 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 171 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "int", + "value": "INT", + "keyword": "INT", + "type": 1, + "flags": 11, + "position": 172 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 175 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "11", + "value": 11, + "keyword": null, + "type": 6, + "flags": 0, + "position": 176 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 178 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 179 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": 1, + "flags": 7, + "position": 180 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 188 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT", + "value": "DEFAULT", + "keyword": "DEFAULT", + "type": 1, + "flags": 35, + "position": 189 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 196 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'0'", + "value": "0", + "keyword": null, + "type": 7, + "flags": 1, + "position": 197 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 200 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 201 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`name`", + "value": "name", + "keyword": null, + "type": 8, + "flags": 2, + "position": 204 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 210 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "varchar", + "value": "VARCHAR", + "keyword": "VARCHAR", + "type": 1, + "flags": 11, + "position": 211 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 218 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "255", + "value": 255, + "keyword": null, + "type": 6, + "flags": 0, + "position": 219 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 222 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 223 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": 1, + "flags": 7, + "position": 224 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 232 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT", + "value": "DEFAULT", + "keyword": "DEFAULT", + "type": 1, + "flags": 35, + "position": 233 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 240 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "''", + "value": "", + "keyword": null, + "type": 7, + "flags": 1, + "position": 241 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 243 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 244 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`hidden`", + "value": "hidden", + "keyword": null, + "type": 8, + "flags": 2, + "position": 247 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 255 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "int", + "value": "INT", + "keyword": "INT", + "type": 1, + "flags": 11, + "position": 256 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 259 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "11", + "value": 11, + "keyword": null, + "type": 6, + "flags": 0, + "position": 260 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 262 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 263 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": 1, + "flags": 7, + "position": 264 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 272 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT", + "value": "DEFAULT", + "keyword": "DEFAULT", + "type": 1, + "flags": 35, + "position": 273 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 280 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'0'", + "value": "0", + "keyword": null, + "type": 7, + "flags": 1, + "position": 281 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 284 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 285 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PRIMARY KEY", + "value": "PRIMARY KEY", + "keyword": "PRIMARY KEY", + "type": 1, + "flags": 23, + "position": 288 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 299 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 300 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`id`", + "value": "id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 301 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 305 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 306 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 307 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNIQUE KEY", + "value": "UNIQUE KEY", + "keyword": "UNIQUE KEY", + "type": 1, + "flags": 23, + "position": 310 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 320 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`jos_section_value_value_aro`", + "value": "jos_section_value_value_aro", + "keyword": null, + "type": 8, + "flags": 2, + "position": 321 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 350 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 351 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`section_value`", + "value": "section_value", + "keyword": null, + "type": 8, + "flags": 2, + "position": 352 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 367 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "100", + "value": 100, + "keyword": null, + "type": 6, + "flags": 0, + "position": 368 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 371 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 372 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`value`", + "value": "value", + "keyword": null, + "type": 8, + "flags": 2, + "position": 373 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 380 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "15", + "value": 15, + "keyword": null, + "type": 6, + "flags": 0, + "position": 381 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 383 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 384 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 385 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USING", + "value": "USING", + "keyword": "USING", + "type": 1, + "flags": 3, + "position": 386 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 391 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "BTREE", + "value": "BTREE", + "keyword": "BTREE", + "type": 1, + "flags": 1, + "position": 392 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 397 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 398 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "KEY", + "value": "KEY", + "keyword": "KEY", + "type": 1, + "flags": 19, + "position": 401 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 404 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`jos_gacl_hidden_aro`", + "value": "jos_gacl_hidden_aro", + "keyword": null, + "type": 8, + "flags": 2, + "position": 405 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 426 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 427 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`hidden`", + "value": "hidden", + "keyword": null, + "type": 8, + "flags": 2, + "position": 428 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 436 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 437 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 438 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 439 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ENGINE", + "value": "ENGINE", + "keyword": "ENGINE", + "type": 1, + "flags": 1, + "position": 440 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 446 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "InnoDB", + "value": "InnoDB", + "keyword": null, + "type": 0, + "flags": 0, + "position": 447 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 453 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT CHARSET", + "value": "DEFAULT CHARSET", + "keyword": "DEFAULT CHARSET", + "type": 1, + "flags": 7, + "position": 454 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 469 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "latin1", + "value": "latin1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 470 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 134, + "idx": 134 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "OPTIONS": { + "TEMPORARY": 1, + "OR REPLACE": 2, + "ALGORITHM": [ + 3, + "var=" + ], + "DEFINER": [ + 4, + "expr=" + ], + "SQL SECURITY": [ + 5, + "var" + ], + "DATABASE": 6, + "EVENT": 6, + "FUNCTION": 6, + "INDEX": 6, + "UNIQUE INDEX": 6, + "FULLTEXT INDEX": 6, + "SPATIAL INDEX": 6, + "PROCEDURE": 6, + "SERVER": 6, + "TABLE": 6, + "TABLESPACE": 6, + "TRIGGER": 6, + "USER": 6, + "VIEW": 6, + "SCHEMA": 6, + "IF NOT EXISTS": 7 + }, + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var=" + ], + "CHARSET": [ + 1, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var=" + ], + "DEFAULT CHARSET": [ + 1, + "var=" + ], + "DEFAULT COLLATE": [ + 2, + "var=" + ], + "COLLATE": [ + 2, + "var=" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 2, + "var=" + ], + "AVG_ROW_LENGTH": [ + 3, + "var" + ], + "CHARACTER SET": [ + 4, + "var=" + ], + "CHARSET": [ + 4, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 4, + "var=" + ], + "DEFAULT CHARSET": [ + 4, + "var=" + ], + "CHECKSUM": [ + 5, + "var" + ], + "DEFAULT COLLATE": [ + 6, + "var=" + ], + "COLLATE": [ + 6, + "var=" + ], + "COMMENT": [ + 7, + "var=" + ], + "CONNECTION": [ + 8, + "var" + ], + "DATA DIRECTORY": [ + 9, + "var" + ], + "DELAY_KEY_WRITE": [ + 10, + "var" + ], + "INDEX DIRECTORY": [ + 11, + "var" + ], + "INSERT_METHOD": [ + 12, + "var" + ], + "KEY_BLOCK_SIZE": [ + 13, + "var" + ], + "MAX_ROWS": [ + 14, + "var" + ], + "MIN_ROWS": [ + 15, + "var" + ], + "PACK_KEYS": [ + 16, + "var" + ], + "PASSWORD": [ + 17, + "var" + ], + "ROW_FORMAT": [ + 18, + "var" + ], + "TABLESPACE": [ + 19, + "var" + ], + "STORAGE": [ + 20, + "var" + ], + "UNION": [ + 21, + "var" + ] + }, + "FUNC_OPTIONS": { + "NOT": [ + 2, + "var" + ], + "FUNCTION": [ + 3, + "var=" + ], + "PROCEDURE": [ + 3, + "var=" + ], + "CONTAINS": [ + 4, + "expr" + ], + "NO": [ + 4, + "var" + ], + "READS": [ + 4, + "var" + ], + "MODIFIES": [ + 4, + "expr" + ], + "SQL SECURITY": [ + 6, + "var" + ], + "LANGUAGE": [ + 7, + "var" + ], + "COMMENT": [ + 8, + "var" + ], + "CREATE": 1, + "DETERMINISTIC": 2, + "DATA": 5 + }, + "TRIGGER_OPTIONS": { + "BEFORE": 1, + "AFTER": 1, + "INSERT": 2, + "UPDATE": 2, + "DELETE": 2 + }, + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "jos_core_acl_aro", + "column": null, + "expr": "`jos_core_acl_aro`", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "ENGINE", + "equals": true, + "expr": "InnoDB", + "value": "InnoDB" + }, + "4": { + "name": "DEFAULT CHARSET", + "equals": true, + "expr": "latin1", + "value": "latin1" + } + } + }, + "fields": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "FIELD_OPTIONS": { + "_UNSORTED": true, + "NOT NULL": 1, + "NULL": 1, + "DEFAULT": [ + 2, + "expr", + { + "breakOnAlias": true + } + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "AUTO_INCREMENT": 3, + "PRIMARY": 4, + "PRIMARY KEY": 4, + "UNIQUE": 4, + "UNIQUE KEY": 4, + "COMMENT": [ + 5, + "var" + ], + "COLUMN_FORMAT": [ + 6, + "var" + ], + "ON UPDATE": [ + 7, + "expr" + ], + "GENERATED ALWAYS": 8, + "AS": [ + 9, + "expr", + { + "parenthesesDelimited": true + } + ], + "VIRTUAL": 10, + "PERSISTENT": 11, + "STORED": 11, + "CHECK": [ + 12, + "expr", + { + "parenthesesDelimited": true + } + ], + "INVISIBLE": 13, + "ENFORCED": 14, + "NOT": 15 + }, + "name": "id", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "DATA_TYPE_OPTIONS": { + "BINARY": 1, + "CHARACTER SET": [ + 2, + "var" + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "UNSIGNED": 4, + "ZEROFILL": 5 + }, + "name": "INT", + "parameters": [ + "11" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "NOT NULL" + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "FIELD_OPTIONS": { + "_UNSORTED": true, + "NOT NULL": 1, + "NULL": 1, + "DEFAULT": [ + 2, + "expr", + { + "breakOnAlias": true + } + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "AUTO_INCREMENT": 3, + "PRIMARY": 4, + "PRIMARY KEY": 4, + "UNIQUE": 4, + "UNIQUE KEY": 4, + "COMMENT": [ + 5, + "var" + ], + "COLUMN_FORMAT": [ + 6, + "var" + ], + "ON UPDATE": [ + 7, + "expr" + ], + "GENERATED ALWAYS": 8, + "AS": [ + 9, + "expr", + { + "parenthesesDelimited": true + } + ], + "VIRTUAL": 10, + "PERSISTENT": 11, + "STORED": 11, + "CHECK": [ + 12, + "expr", + { + "parenthesesDelimited": true + } + ], + "INVISIBLE": 13, + "ENFORCED": 14, + "NOT": 15 + }, + "name": "section_value", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "DATA_TYPE_OPTIONS": { + "BINARY": 1, + "CHARACTER SET": [ + 2, + "var" + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "UNSIGNED": 4, + "ZEROFILL": 5 + }, + "name": "VARCHAR", + "parameters": [ + "240" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "NOT NULL", + "2": { + "name": "DEFAULT", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "0", + "expr": "'0'", + "alias": null, + "function": null, + "subquery": null + }, + "value": "'0'" + } + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "FIELD_OPTIONS": { + "_UNSORTED": true, + "NOT NULL": 1, + "NULL": 1, + "DEFAULT": [ + 2, + "expr", + { + "breakOnAlias": true + } + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "AUTO_INCREMENT": 3, + "PRIMARY": 4, + "PRIMARY KEY": 4, + "UNIQUE": 4, + "UNIQUE KEY": 4, + "COMMENT": [ + 5, + "var" + ], + "COLUMN_FORMAT": [ + 6, + "var" + ], + "ON UPDATE": [ + 7, + "expr" + ], + "GENERATED ALWAYS": 8, + "AS": [ + 9, + "expr", + { + "parenthesesDelimited": true + } + ], + "VIRTUAL": 10, + "PERSISTENT": 11, + "STORED": 11, + "CHECK": [ + 12, + "expr", + { + "parenthesesDelimited": true + } + ], + "INVISIBLE": 13, + "ENFORCED": 14, + "NOT": 15 + }, + "name": "value", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "DATA_TYPE_OPTIONS": { + "BINARY": 1, + "CHARACTER SET": [ + 2, + "var" + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "UNSIGNED": 4, + "ZEROFILL": 5 + }, + "name": "VARCHAR", + "parameters": [ + "240" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "NOT NULL", + "2": { + "name": "DEFAULT", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "", + "expr": "''", + "alias": null, + "function": null, + "subquery": null + }, + "value": "''" + } + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "FIELD_OPTIONS": { + "_UNSORTED": true, + "NOT NULL": 1, + "NULL": 1, + "DEFAULT": [ + 2, + "expr", + { + "breakOnAlias": true + } + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "AUTO_INCREMENT": 3, + "PRIMARY": 4, + "PRIMARY KEY": 4, + "UNIQUE": 4, + "UNIQUE KEY": 4, + "COMMENT": [ + 5, + "var" + ], + "COLUMN_FORMAT": [ + 6, + "var" + ], + "ON UPDATE": [ + 7, + "expr" + ], + "GENERATED ALWAYS": 8, + "AS": [ + 9, + "expr", + { + "parenthesesDelimited": true + } + ], + "VIRTUAL": 10, + "PERSISTENT": 11, + "STORED": 11, + "CHECK": [ + 12, + "expr", + { + "parenthesesDelimited": true + } + ], + "INVISIBLE": 13, + "ENFORCED": 14, + "NOT": 15 + }, + "name": "order_value", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "DATA_TYPE_OPTIONS": { + "BINARY": 1, + "CHARACTER SET": [ + 2, + "var" + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "UNSIGNED": 4, + "ZEROFILL": 5 + }, + "name": "INT", + "parameters": [ + "11" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "NOT NULL", + "2": { + "name": "DEFAULT", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "0", + "expr": "'0'", + "alias": null, + "function": null, + "subquery": null + }, + "value": "'0'" + } + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "FIELD_OPTIONS": { + "_UNSORTED": true, + "NOT NULL": 1, + "NULL": 1, + "DEFAULT": [ + 2, + "expr", + { + "breakOnAlias": true + } + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "AUTO_INCREMENT": 3, + "PRIMARY": 4, + "PRIMARY KEY": 4, + "UNIQUE": 4, + "UNIQUE KEY": 4, + "COMMENT": [ + 5, + "var" + ], + "COLUMN_FORMAT": [ + 6, + "var" + ], + "ON UPDATE": [ + 7, + "expr" + ], + "GENERATED ALWAYS": 8, + "AS": [ + 9, + "expr", + { + "parenthesesDelimited": true + } + ], + "VIRTUAL": 10, + "PERSISTENT": 11, + "STORED": 11, + "CHECK": [ + 12, + "expr", + { + "parenthesesDelimited": true + } + ], + "INVISIBLE": 13, + "ENFORCED": 14, + "NOT": 15 + }, + "name": "name", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "DATA_TYPE_OPTIONS": { + "BINARY": 1, + "CHARACTER SET": [ + 2, + "var" + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "UNSIGNED": 4, + "ZEROFILL": 5 + }, + "name": "VARCHAR", + "parameters": [ + "255" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "NOT NULL", + "2": { + "name": "DEFAULT", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "", + "expr": "''", + "alias": null, + "function": null, + "subquery": null + }, + "value": "''" + } + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "FIELD_OPTIONS": { + "_UNSORTED": true, + "NOT NULL": 1, + "NULL": 1, + "DEFAULT": [ + 2, + "expr", + { + "breakOnAlias": true + } + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "AUTO_INCREMENT": 3, + "PRIMARY": 4, + "PRIMARY KEY": 4, + "UNIQUE": 4, + "UNIQUE KEY": 4, + "COMMENT": [ + 5, + "var" + ], + "COLUMN_FORMAT": [ + 6, + "var" + ], + "ON UPDATE": [ + 7, + "expr" + ], + "GENERATED ALWAYS": 8, + "AS": [ + 9, + "expr", + { + "parenthesesDelimited": true + } + ], + "VIRTUAL": 10, + "PERSISTENT": 11, + "STORED": 11, + "CHECK": [ + 12, + "expr", + { + "parenthesesDelimited": true + } + ], + "INVISIBLE": 13, + "ENFORCED": 14, + "NOT": 15 + }, + "name": "hidden", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "DATA_TYPE_OPTIONS": { + "BINARY": 1, + "CHARACTER SET": [ + 2, + "var" + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "UNSIGNED": 4, + "ZEROFILL": 5 + }, + "name": "INT", + "parameters": [ + "11" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "NOT NULL", + "2": { + "name": "DEFAULT", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "0", + "expr": "'0'", + "alias": null, + "function": null, + "subquery": null + }, + "value": "'0'" + } + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "FIELD_OPTIONS": { + "_UNSORTED": true, + "NOT NULL": 1, + "NULL": 1, + "DEFAULT": [ + 2, + "expr", + { + "breakOnAlias": true + } + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "AUTO_INCREMENT": 3, + "PRIMARY": 4, + "PRIMARY KEY": 4, + "UNIQUE": 4, + "UNIQUE KEY": 4, + "COMMENT": [ + 5, + "var" + ], + "COLUMN_FORMAT": [ + 6, + "var" + ], + "ON UPDATE": [ + 7, + "expr" + ], + "GENERATED ALWAYS": 8, + "AS": [ + 9, + "expr", + { + "parenthesesDelimited": true + } + ], + "VIRTUAL": 10, + "PERSISTENT": 11, + "STORED": 11, + "CHECK": [ + 12, + "expr", + { + "parenthesesDelimited": true + } + ], + "INVISIBLE": 13, + "ENFORCED": 14, + "NOT": 15 + }, + "name": null, + "isConstraint": null, + "type": null, + "key": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Key", + "KEY_OPTIONS": { + "KEY_BLOCK_SIZE": [ + 1, + "var=" + ], + "USING": [ + 2, + "var" + ], + "WITH PARSER": [ + 3, + "var" + ], + "COMMENT": [ + 4, + "var" + ], + "CLUSTERING": [ + 4, + "var=" + ], + "ENGINE_ATTRIBUTE": [ + 5, + "var=" + ], + "SECONDARY_ENGINE_ATTRIBUTE": [ + 5, + "var=" + ], + "VISIBLE": 6, + "INVISIBLE": 6, + "IGNORED": 10, + "NOT IGNORED": 10 + }, + "name": null, + "columns": [ + { + "name": "id" + } + ], + "type": "PRIMARY KEY", + "expr": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + "references": null, + "options": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "FIELD_OPTIONS": { + "_UNSORTED": true, + "NOT NULL": 1, + "NULL": 1, + "DEFAULT": [ + 2, + "expr", + { + "breakOnAlias": true + } + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "AUTO_INCREMENT": 3, + "PRIMARY": 4, + "PRIMARY KEY": 4, + "UNIQUE": 4, + "UNIQUE KEY": 4, + "COMMENT": [ + 5, + "var" + ], + "COLUMN_FORMAT": [ + 6, + "var" + ], + "ON UPDATE": [ + 7, + "expr" + ], + "GENERATED ALWAYS": 8, + "AS": [ + 9, + "expr", + { + "parenthesesDelimited": true + } + ], + "VIRTUAL": 10, + "PERSISTENT": 11, + "STORED": 11, + "CHECK": [ + 12, + "expr", + { + "parenthesesDelimited": true + } + ], + "INVISIBLE": 13, + "ENFORCED": 14, + "NOT": 15 + }, + "name": null, + "isConstraint": null, + "type": null, + "key": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Key", + "KEY_OPTIONS": { + "KEY_BLOCK_SIZE": [ + 1, + "var=" + ], + "USING": [ + 2, + "var" + ], + "WITH PARSER": [ + 3, + "var" + ], + "COMMENT": [ + 4, + "var" + ], + "CLUSTERING": [ + 4, + "var=" + ], + "ENGINE_ATTRIBUTE": [ + 5, + "var=" + ], + "SECONDARY_ENGINE_ATTRIBUTE": [ + 5, + "var=" + ], + "VISIBLE": 6, + "INVISIBLE": 6, + "IGNORED": 10, + "NOT IGNORED": 10 + }, + "name": "jos_section_value_value_aro", + "columns": [ + { + "name": "section_value", + "length": 100 + }, + { + "name": "value", + "length": 15 + } + ], + "type": "UNIQUE KEY", + "expr": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": { + "name": "USING", + "equals": false, + "expr": "BTREE", + "value": "BTREE" + } + } + } + }, + "references": null, + "options": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "FIELD_OPTIONS": { + "_UNSORTED": true, + "NOT NULL": 1, + "NULL": 1, + "DEFAULT": [ + 2, + "expr", + { + "breakOnAlias": true + } + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "AUTO_INCREMENT": 3, + "PRIMARY": 4, + "PRIMARY KEY": 4, + "UNIQUE": 4, + "UNIQUE KEY": 4, + "COMMENT": [ + 5, + "var" + ], + "COLUMN_FORMAT": [ + 6, + "var" + ], + "ON UPDATE": [ + 7, + "expr" + ], + "GENERATED ALWAYS": 8, + "AS": [ + 9, + "expr", + { + "parenthesesDelimited": true + } + ], + "VIRTUAL": 10, + "PERSISTENT": 11, + "STORED": 11, + "CHECK": [ + 12, + "expr", + { + "parenthesesDelimited": true + } + ], + "INVISIBLE": 13, + "ENFORCED": 14, + "NOT": 15 + }, + "name": null, + "isConstraint": null, + "type": null, + "key": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Key", + "KEY_OPTIONS": { + "KEY_BLOCK_SIZE": [ + 1, + "var=" + ], + "USING": [ + 2, + "var" + ], + "WITH PARSER": [ + 3, + "var" + ], + "COMMENT": [ + 4, + "var" + ], + "CLUSTERING": [ + 4, + "var=" + ], + "ENGINE_ATTRIBUTE": [ + 5, + "var=" + ], + "SECONDARY_ENGINE_ATTRIBUTE": [ + 5, + "var=" + ], + "VISIBLE": 6, + "INVISIBLE": 6, + "IGNORED": 10, + "NOT IGNORED": 10 + }, + "name": "jos_gacl_hidden_aro", + "columns": [ + { + "name": "hidden" + } + ], + "type": "KEY", + "expr": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + "references": null, + "options": null + } + ], + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [], + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "TABLE" + } + }, + "first": 0, + "last": 133 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/bugs/gh317.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/bugs/gh317.in new file mode 100644 index 0000000000..aef97adbf3 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/bugs/gh317.in @@ -0,0 +1 @@ +ALTER TABLE `demo` ADD KEY `IDX_REPAIR` (`REPAIR`); \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/bugs/gh317.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/bugs/gh317.out new file mode 100644 index 0000000000..3bd3e36147 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/bugs/gh317.out @@ -0,0 +1,723 @@ +{ + "query": "ALTER TABLE `demo` ADD KEY `IDX_REPAIR` (`REPAIR`);", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "ALTER TABLE `demo` ADD KEY `IDX_REPAIR` (`REPAIR`);", + "len": 51, + "last": 51, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": 1, + "flags": 3, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`demo`", + "value": "demo", + "keyword": null, + "type": 8, + "flags": 2, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ADD", + "value": "ADD", + "keyword": "ADD", + "type": 1, + "flags": 3, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "KEY", + "value": "KEY", + "keyword": "KEY", + "type": 1, + "flags": 19, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`IDX_REPAIR`", + "value": "IDX_REPAIR", + "keyword": null, + "type": 8, + "flags": 2, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`REPAIR`", + "value": "REPAIR", + "keyword": null, + "type": 8, + "flags": 2, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 17, + "idx": 17 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "demo", + "column": null, + "expr": "`demo`", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var" + ], + "CHARSET": [ + 1, + "var" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var" + ], + "DEFAULT CHARSET": [ + 1, + "var" + ], + "UPGRADE": [ + 1, + "var" + ], + "COLLATE": [ + 2, + "var" + ], + "DEFAULT COLLATE": [ + 2, + "var" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 1, + "var=" + ], + "AVG_ROW_LENGTH": [ + 1, + "var" + ], + "MAX_ROWS": [ + 1, + "var" + ], + "ROW_FORMAT": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "ADD": 1, + "ALTER": 1, + "ANALYZE": 1, + "CHANGE": 1, + "CHARSET": 1, + "CHECK": 1, + "COALESCE": 1, + "CONVERT": 1, + "DEFAULT CHARSET": 1, + "DISABLE": 1, + "DISCARD": 1, + "DROP": 1, + "ENABLE": 1, + "IMPORT": 1, + "MODIFY": 1, + "OPTIMIZE": 1, + "ORDER": 1, + "PARTITION": 1, + "REBUILD": 1, + "REMOVE": 1, + "RENAME": 1, + "REORGANIZE": 1, + "REPAIR": 1, + "UPGRADE": 1, + "COLUMN": 2, + "CONSTRAINT": 2, + "DEFAULT": 2, + "TO": 2, + "BY": 2, + "FOREIGN": 2, + "FULLTEXT": 2, + "KEY": 2, + "KEYS": 2, + "PARTITIONING": 2, + "PRIMARY KEY": 2, + "SPATIAL": 2, + "TABLESPACE": 2, + "INDEX": 2, + "CHARACTER SET": 3 + }, + "USER_OPTIONS": { + "ATTRIBUTE": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "REQUIRE": [ + 1, + "var" + ], + "BY": [ + 2, + "expr" + ], + "PASSWORD": [ + 2, + "var" + ], + "WITH": [ + 2, + "var" + ], + "ACCOUNT": 1, + "DEFAULT": 1, + "LOCK": 2, + "UNLOCK": 2, + "IDENTIFIED": 3 + }, + "VIEW_OPTIONS": { + "AS": 1 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "ADD", + "2": "KEY" + } + }, + "field": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "IDX_REPAIR", + "expr": "`IDX_REPAIR`", + "alias": null, + "function": null, + "subquery": null + }, + "unknown": [ + { + "@type": "@14" + }, + { + "@type": "@15" + }, + { + "@type": "@16" + } + ] + } + ], + "OPTIONS": { + "ONLINE": 1, + "OFFLINE": 1, + "IGNORE": 2, + "DATABASE": 3, + "EVENT": 3, + "FUNCTION": 3, + "PROCEDURE": 3, + "SERVER": 3, + "TABLE": 3, + "TABLESPACE": 3, + "USER": 3, + "VIEW": 3 + }, + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 0, + "last": 15 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/bugs/gh9.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/bugs/gh9.in new file mode 100644 index 0000000000..61bce5cb8d --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/bugs/gh9.in @@ -0,0 +1,12 @@ +SELECT * FROM foo WHERE +SELECT * FROM foo WHERE + +START TRANSACTION; + +CREATE TABLE `tb` (`uid` INT UNSIGNED NOT NULL +`position` INT NOT NULL, +PRIMARY KEY ( `uid` ) , +INDEX ( `position` ) +) ENGINE = InnoDB; + +COMMIT; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/bugs/gh9.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/bugs/gh9.out new file mode 100644 index 0000000000..d51bf0444f --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/bugs/gh9.out @@ -0,0 +1,1912 @@ +{ + "query": "SELECT * FROM foo WHERE\nSELECT * FROM foo WHERE\n\nSTART TRANSACTION;\n\nCREATE TABLE `tb` (`uid` INT UNSIGNED NOT NULL\n`position` INT NOT NULL,\nPRIMARY KEY ( `uid` ) ,\nINDEX ( `position` )\n) ENGINE = InnoDB;\n\nCOMMIT;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SELECT * FROM foo WHERE\nSELECT * FROM foo WHERE\n\nSTART TRANSACTION;\n\nCREATE TABLE `tb` (`uid` INT UNSIGNED NOT NULL\n`position` INT NOT NULL,\nPRIMARY KEY ( `uid` ) ,\nINDEX ( `position` )\n) ENGINE = InnoDB;\n\nCOMMIT;", + "len": 213, + "last": 213, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "foo", + "value": "foo", + "keyword": null, + "type": 0, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "foo", + "value": "foo", + "keyword": null, + "type": 0, + "flags": 0, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "START TRANSACTION", + "value": "START TRANSACTION", + "keyword": "START TRANSACTION", + "type": 1, + "flags": 7, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": 1, + "flags": 3, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": 1, + "flags": 3, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`tb`", + "value": "tb", + "keyword": null, + "type": 8, + "flags": 2, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`uid`", + "value": "uid", + "keyword": null, + "type": 8, + "flags": 2, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INT", + "value": "INT", + "keyword": "INT", + "type": 1, + "flags": 11, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 97 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNSIGNED", + "value": "UNSIGNED", + "keyword": "UNSIGNED", + "type": 1, + "flags": 3, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 106 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": 1, + "flags": 7, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 115 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`position`", + "value": "position", + "keyword": null, + "type": 8, + "flags": 2, + "position": 116 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 126 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INT", + "value": "INT", + "keyword": "INT", + "type": 1, + "flags": 11, + "position": 127 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 130 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": 1, + "flags": 7, + "position": 131 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 139 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 140 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PRIMARY KEY", + "value": "PRIMARY KEY", + "keyword": "PRIMARY KEY", + "type": 1, + "flags": 23, + "position": 141 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 152 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 153 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 154 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`uid`", + "value": "uid", + "keyword": null, + "type": 8, + "flags": 2, + "position": 155 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 160 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 161 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 162 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 163 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 164 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INDEX", + "value": "INDEX", + "keyword": "INDEX", + "type": 1, + "flags": 19, + "position": 165 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 170 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 171 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 172 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`position`", + "value": "position", + "keyword": null, + "type": 8, + "flags": 2, + "position": 173 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 183 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 184 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 185 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 186 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 187 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ENGINE", + "value": "ENGINE", + "keyword": "ENGINE", + "type": 1, + "flags": 1, + "position": 188 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 194 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 195 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 196 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "InnoDB", + "value": "InnoDB", + "keyword": null, + "type": 0, + "flags": 0, + "position": 197 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 203 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 204 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COMMIT", + "value": "COMMIT", + "keyword": "COMMIT", + "type": 1, + "flags": 1, + "position": 206 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 212 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 75, + "idx": 75 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "foo", + "column": null, + "expr": "foo", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": [], + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "foo", + "column": null, + "expr": "foo", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": [], + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 10, + "last": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "type": 1, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "OPTIONS": { + "TEMPORARY": 1, + "OR REPLACE": 2, + "ALGORITHM": [ + 3, + "var=" + ], + "DEFINER": [ + 4, + "expr=" + ], + "SQL SECURITY": [ + 5, + "var" + ], + "DATABASE": 6, + "EVENT": 6, + "FUNCTION": 6, + "INDEX": 6, + "UNIQUE INDEX": 6, + "FULLTEXT INDEX": 6, + "SPATIAL INDEX": 6, + "PROCEDURE": 6, + "SERVER": 6, + "TABLE": 6, + "TABLESPACE": 6, + "TRIGGER": 6, + "USER": 6, + "VIEW": 6, + "SCHEMA": 6, + "IF NOT EXISTS": 7 + }, + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var=" + ], + "CHARSET": [ + 1, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var=" + ], + "DEFAULT CHARSET": [ + 1, + "var=" + ], + "DEFAULT COLLATE": [ + 2, + "var=" + ], + "COLLATE": [ + 2, + "var=" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 2, + "var=" + ], + "AVG_ROW_LENGTH": [ + 3, + "var" + ], + "CHARACTER SET": [ + 4, + "var=" + ], + "CHARSET": [ + 4, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 4, + "var=" + ], + "DEFAULT CHARSET": [ + 4, + "var=" + ], + "CHECKSUM": [ + 5, + "var" + ], + "DEFAULT COLLATE": [ + 6, + "var=" + ], + "COLLATE": [ + 6, + "var=" + ], + "COMMENT": [ + 7, + "var=" + ], + "CONNECTION": [ + 8, + "var" + ], + "DATA DIRECTORY": [ + 9, + "var" + ], + "DELAY_KEY_WRITE": [ + 10, + "var" + ], + "INDEX DIRECTORY": [ + 11, + "var" + ], + "INSERT_METHOD": [ + 12, + "var" + ], + "KEY_BLOCK_SIZE": [ + 13, + "var" + ], + "MAX_ROWS": [ + 14, + "var" + ], + "MIN_ROWS": [ + 15, + "var" + ], + "PACK_KEYS": [ + 16, + "var" + ], + "PASSWORD": [ + 17, + "var" + ], + "ROW_FORMAT": [ + 18, + "var" + ], + "TABLESPACE": [ + 19, + "var" + ], + "STORAGE": [ + 20, + "var" + ], + "UNION": [ + 21, + "var" + ] + }, + "FUNC_OPTIONS": { + "NOT": [ + 2, + "var" + ], + "FUNCTION": [ + 3, + "var=" + ], + "PROCEDURE": [ + 3, + "var=" + ], + "CONTAINS": [ + 4, + "expr" + ], + "NO": [ + 4, + "var" + ], + "READS": [ + 4, + "var" + ], + "MODIFIES": [ + 4, + "expr" + ], + "SQL SECURITY": [ + 6, + "var" + ], + "LANGUAGE": [ + 7, + "var" + ], + "COMMENT": [ + 8, + "var" + ], + "CREATE": 1, + "DETERMINISTIC": 2, + "DATA": 5 + }, + "TRIGGER_OPTIONS": { + "BEFORE": 1, + "AFTER": 1, + "INSERT": 2, + "UPDATE": 2, + "DELETE": 2 + }, + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "tb", + "column": null, + "expr": "`tb`", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "fields": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "FIELD_OPTIONS": { + "_UNSORTED": true, + "NOT NULL": 1, + "NULL": 1, + "DEFAULT": [ + 2, + "expr", + { + "breakOnAlias": true + } + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "AUTO_INCREMENT": 3, + "PRIMARY": 4, + "PRIMARY KEY": 4, + "UNIQUE": 4, + "UNIQUE KEY": 4, + "COMMENT": [ + 5, + "var" + ], + "COLUMN_FORMAT": [ + 6, + "var" + ], + "ON UPDATE": [ + 7, + "expr" + ], + "GENERATED ALWAYS": 8, + "AS": [ + 9, + "expr", + { + "parenthesesDelimited": true + } + ], + "VIRTUAL": 10, + "PERSISTENT": 11, + "STORED": 11, + "CHECK": [ + 12, + "expr", + { + "parenthesesDelimited": true + } + ], + "INVISIBLE": 13, + "ENFORCED": 14, + "NOT": 15 + }, + "name": "uid", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "DATA_TYPE_OPTIONS": { + "BINARY": 1, + "CHARACTER SET": [ + 2, + "var" + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "UNSIGNED": 4, + "ZEROFILL": 5 + }, + "name": "INT", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "4": "UNSIGNED" + } + } + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "NOT NULL" + } + } + } + ], + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [], + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "TABLE" + } + }, + "first": 21, + "last": 47 + } + ], + "end": { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "type": 2, + "statements": null, + "end": null, + "OPTIONS": { + "START TRANSACTION": 1, + "BEGIN": 1, + "COMMIT": 1, + "ROLLBACK": 1, + "WITH CONSISTENT SNAPSHOT": 2, + "WORK": 2, + "AND NO CHAIN": 3, + "AND CHAIN": 3, + "RELEASE": 4, + "NO RELEASE": 4 + }, + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "COMMIT" + } + }, + "first": 72, + "last": 72 + }, + "OPTIONS": { + "START TRANSACTION": 1, + "BEGIN": 1, + "COMMIT": 1, + "ROLLBACK": 1, + "WITH CONSISTENT SNAPSHOT": 2, + "WORK": 2, + "AND NO CHAIN": 3, + "AND CHAIN": 3, + "RELEASE": 4, + "NO RELEASE": 4 + }, + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "START TRANSACTION" + } + }, + "first": 20, + "last": 20 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "This type of clause was previously parsed.", + { + "@type": "@12" + }, + 0 + ], + [ + "A new statement was found, but no delimiter between it and the previous one.", + { + "@type": "@22" + }, + 0 + ], + [ + "A comma or a closing bracket was expected.", + { + "@type": "@40" + }, + 0 + ], + [ + "Unexpected beginning of statement.", + { + "@type": "@51" + }, + 0 + ], + [ + "Unrecognized statement type.", + { + "@type": "@57" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/bugs/pma11800.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/bugs/pma11800.in new file mode 100644 index 0000000000..75bda6513c --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/bugs/pma11800.in @@ -0,0 +1 @@ +SELECT 'a' REGEXP '^[a-d]'; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/bugs/pma11800.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/bugs/pma11800.out new file mode 100644 index 0000000000..acd2d210a6 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/bugs/pma11800.out @@ -0,0 +1,620 @@ +{ + "query": "SELECT 'a' REGEXP '^[a-d]';", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SELECT 'a' REGEXP '^[a-d]';", + "len": 27, + "last": 27, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'a'", + "value": "a", + "keyword": null, + "type": 7, + "flags": 1, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "REGEXP", + "value": "REGEXP", + "keyword": "REGEXP", + "type": 1, + "flags": 3, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'^[a-d]'", + "value": "^[a-d]", + "keyword": null, + "type": 7, + "flags": 1, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 9, + "idx": 9 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "a", + "expr": "'a'REGEXP '^[a-d]'", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [], + "index_hints": null, + "partition": null, + "where": null, + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 6 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/bugs/pma11836.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/bugs/pma11836.in new file mode 100644 index 0000000000..ffb027d6eb --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/bugs/pma11836.in @@ -0,0 +1 @@ +SELECT * FROM alumnos WHERE id = IF(id = 1, id, nombre) AND id not in (SELECT id FROM alumnos) \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/bugs/pma11836.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/bugs/pma11836.out new file mode 100644 index 0000000000..19a2099a3a --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/bugs/pma11836.out @@ -0,0 +1,1077 @@ +{ + "query": "SELECT * FROM alumnos WHERE id = IF(id = 1, id, nombre) AND id not in (SELECT id FROM alumnos)", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SELECT * FROM alumnos WHERE id = IF(id = 1, id, nombre) AND id not in (SELECT id FROM alumnos)", + "len": 94, + "last": 94, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "alumnos", + "value": "alumnos", + "keyword": null, + "type": 0, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IF", + "value": "IF", + "keyword": "IF", + "type": 1, + "flags": 35, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "nombre", + "value": "nombre", + "keyword": null, + "type": 0, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AND", + "value": "AND", + "keyword": "AND", + "type": 1, + "flags": 3, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "not in", + "value": "NOT IN", + "keyword": "NOT IN", + "type": 1, + "flags": 39, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "alumnos", + "value": "alumnos", + "keyword": null, + "type": 0, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 45, + "idx": 45 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "alumnos", + "column": null, + "expr": "alumnos", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [ + "id", + "nombre" + ], + "isOperator": false, + "expr": "id = IF(id = 1, id, nombre)" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [], + "isOperator": true, + "expr": "AND" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [ + "id", + "alumnos" + ], + "isOperator": false, + "expr": "id not in (SELECT id FROM alumnos)" + } + ], + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 43 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/bugs/pma11843.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/bugs/pma11843.in new file mode 100644 index 0000000000..98146a9af9 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/bugs/pma11843.in @@ -0,0 +1,4 @@ +CREATE TABLE `mytable` ( + `id` int(11) NOT NULL, + `created_at` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP +); \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/bugs/pma11843.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/bugs/pma11843.out new file mode 100644 index 0000000000..7c98ebf7b7 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/bugs/pma11843.out @@ -0,0 +1,1142 @@ +{ + "query": "CREATE TABLE `mytable` (\n `id` int(11) NOT NULL,\n `created_at` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP\n);", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "CREATE TABLE `mytable` (\n `id` int(11) NOT NULL,\n `created_at` timestamp(6) NOT NULL DEFAULT CURRENT_TIMESTAMP\n);", + "len": 119, + "last": 119, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": 1, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`mytable`", + "value": "mytable", + "keyword": null, + "type": 8, + "flags": 2, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`id`", + "value": "id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "int", + "value": "INT", + "keyword": "INT", + "type": 1, + "flags": 11, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "11", + "value": 11, + "keyword": null, + "type": 6, + "flags": 0, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": 1, + "flags": 7, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`created_at`", + "value": "created_at", + "keyword": null, + "type": 8, + "flags": 2, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "timestamp", + "value": "timestamp", + "keyword": "TIMESTAMP", + "type": 1, + "flags": 41, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "6", + "value": 6, + "keyword": null, + "type": 6, + "flags": 0, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": 1, + "flags": 7, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 90 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT", + "value": "DEFAULT", + "keyword": "DEFAULT", + "type": 1, + "flags": 35, + "position": 91 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CURRENT_TIMESTAMP", + "value": "CURRENT_TIMESTAMP", + "keyword": "CURRENT_TIMESTAMP", + "type": 1, + "flags": 35, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 116 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 117 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 118 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 34, + "idx": 34 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "OPTIONS": { + "TEMPORARY": 1, + "OR REPLACE": 2, + "ALGORITHM": [ + 3, + "var=" + ], + "DEFINER": [ + 4, + "expr=" + ], + "SQL SECURITY": [ + 5, + "var" + ], + "DATABASE": 6, + "EVENT": 6, + "FUNCTION": 6, + "INDEX": 6, + "UNIQUE INDEX": 6, + "FULLTEXT INDEX": 6, + "SPATIAL INDEX": 6, + "PROCEDURE": 6, + "SERVER": 6, + "TABLE": 6, + "TABLESPACE": 6, + "TRIGGER": 6, + "USER": 6, + "VIEW": 6, + "SCHEMA": 6, + "IF NOT EXISTS": 7 + }, + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var=" + ], + "CHARSET": [ + 1, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var=" + ], + "DEFAULT CHARSET": [ + 1, + "var=" + ], + "DEFAULT COLLATE": [ + 2, + "var=" + ], + "COLLATE": [ + 2, + "var=" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 2, + "var=" + ], + "AVG_ROW_LENGTH": [ + 3, + "var" + ], + "CHARACTER SET": [ + 4, + "var=" + ], + "CHARSET": [ + 4, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 4, + "var=" + ], + "DEFAULT CHARSET": [ + 4, + "var=" + ], + "CHECKSUM": [ + 5, + "var" + ], + "DEFAULT COLLATE": [ + 6, + "var=" + ], + "COLLATE": [ + 6, + "var=" + ], + "COMMENT": [ + 7, + "var=" + ], + "CONNECTION": [ + 8, + "var" + ], + "DATA DIRECTORY": [ + 9, + "var" + ], + "DELAY_KEY_WRITE": [ + 10, + "var" + ], + "INDEX DIRECTORY": [ + 11, + "var" + ], + "INSERT_METHOD": [ + 12, + "var" + ], + "KEY_BLOCK_SIZE": [ + 13, + "var" + ], + "MAX_ROWS": [ + 14, + "var" + ], + "MIN_ROWS": [ + 15, + "var" + ], + "PACK_KEYS": [ + 16, + "var" + ], + "PASSWORD": [ + 17, + "var" + ], + "ROW_FORMAT": [ + 18, + "var" + ], + "TABLESPACE": [ + 19, + "var" + ], + "STORAGE": [ + 20, + "var" + ], + "UNION": [ + 21, + "var" + ] + }, + "FUNC_OPTIONS": { + "NOT": [ + 2, + "var" + ], + "FUNCTION": [ + 3, + "var=" + ], + "PROCEDURE": [ + 3, + "var=" + ], + "CONTAINS": [ + 4, + "expr" + ], + "NO": [ + 4, + "var" + ], + "READS": [ + 4, + "var" + ], + "MODIFIES": [ + 4, + "expr" + ], + "SQL SECURITY": [ + 6, + "var" + ], + "LANGUAGE": [ + 7, + "var" + ], + "COMMENT": [ + 8, + "var" + ], + "CREATE": 1, + "DETERMINISTIC": 2, + "DATA": 5 + }, + "TRIGGER_OPTIONS": { + "BEFORE": 1, + "AFTER": 1, + "INSERT": 2, + "UPDATE": 2, + "DELETE": 2 + }, + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "mytable", + "column": null, + "expr": "`mytable`", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "fields": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "FIELD_OPTIONS": { + "_UNSORTED": true, + "NOT NULL": 1, + "NULL": 1, + "DEFAULT": [ + 2, + "expr", + { + "breakOnAlias": true + } + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "AUTO_INCREMENT": 3, + "PRIMARY": 4, + "PRIMARY KEY": 4, + "UNIQUE": 4, + "UNIQUE KEY": 4, + "COMMENT": [ + 5, + "var" + ], + "COLUMN_FORMAT": [ + 6, + "var" + ], + "ON UPDATE": [ + 7, + "expr" + ], + "GENERATED ALWAYS": 8, + "AS": [ + 9, + "expr", + { + "parenthesesDelimited": true + } + ], + "VIRTUAL": 10, + "PERSISTENT": 11, + "STORED": 11, + "CHECK": [ + 12, + "expr", + { + "parenthesesDelimited": true + } + ], + "INVISIBLE": 13, + "ENFORCED": 14, + "NOT": 15 + }, + "name": "id", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "DATA_TYPE_OPTIONS": { + "BINARY": 1, + "CHARACTER SET": [ + 2, + "var" + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "UNSIGNED": 4, + "ZEROFILL": 5 + }, + "name": "INT", + "parameters": [ + "11" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "NOT NULL" + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "FIELD_OPTIONS": { + "_UNSORTED": true, + "NOT NULL": 1, + "NULL": 1, + "DEFAULT": [ + 2, + "expr", + { + "breakOnAlias": true + } + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "AUTO_INCREMENT": 3, + "PRIMARY": 4, + "PRIMARY KEY": 4, + "UNIQUE": 4, + "UNIQUE KEY": 4, + "COMMENT": [ + 5, + "var" + ], + "COLUMN_FORMAT": [ + 6, + "var" + ], + "ON UPDATE": [ + 7, + "expr" + ], + "GENERATED ALWAYS": 8, + "AS": [ + 9, + "expr", + { + "parenthesesDelimited": true + } + ], + "VIRTUAL": 10, + "PERSISTENT": 11, + "STORED": 11, + "CHECK": [ + 12, + "expr", + { + "parenthesesDelimited": true + } + ], + "INVISIBLE": 13, + "ENFORCED": 14, + "NOT": 15 + }, + "name": "created_at", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "DATA_TYPE_OPTIONS": { + "BINARY": 1, + "CHARACTER SET": [ + 2, + "var" + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "UNSIGNED": 4, + "ZEROFILL": 5 + }, + "name": "TIMESTAMP", + "parameters": [ + "6" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "NOT NULL", + "2": { + "name": "DEFAULT", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "CURRENT_TIMESTAMP", + "alias": null, + "function": null, + "subquery": null + }, + "value": "CURRENT_TIMESTAMP" + } + } + } + } + ], + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [], + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "TABLE" + } + }, + "first": 0, + "last": 32 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/bugs/pma11867.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/bugs/pma11867.in new file mode 100644 index 0000000000..028ef7137f --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/bugs/pma11867.in @@ -0,0 +1 @@ +DESC tablename; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/bugs/pma11867.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/bugs/pma11867.out new file mode 100644 index 0000000000..8eb940cfb0 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/bugs/pma11867.out @@ -0,0 +1,410 @@ +{ + "query": "DESC tablename;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "DESC tablename;", + "len": 15, + "last": 15, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DESC", + "value": "DESC", + "keyword": "DESC", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "tablename", + "value": "tablename", + "keyword": null, + "type": 0, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 5, + "idx": 5 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "unknown": [ + { + "@type": "@2" + }, + { + "@type": "@3" + }, + { + "@type": "@4" + } + ], + "OPTIONS": [], + "CLAUSES": [], + "END_OPTIONS": [], + "options": null, + "first": 0, + "last": 3 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/bugs/pma11879.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/bugs/pma11879.in new file mode 100644 index 0000000000..d466cc5533 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/bugs/pma11879.in @@ -0,0 +1,4 @@ +INSERT INTO + tbproject(`id`, `name`, `description`, `create_dt`, `dbtype`, `useclause`, `sync_comments`) +VALUES + (NULL, 'testdb', 'Descrizione test', NOW(), 'mySQL', '', 1); \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/bugs/pma11879.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/bugs/pma11879.out new file mode 100644 index 0000000000..8fd95d17b8 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/bugs/pma11879.out @@ -0,0 +1,939 @@ +{ + "query": "INSERT INTO\n tbproject(`id`, `name`, `description`, `create_dt`, `dbtype`, `useclause`, `sync_comments`)\nVALUES\n (NULL, 'testdb', 'Descrizione test', NOW(), 'mySQL', '', 1);", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "INSERT INTO\n tbproject(`id`, `name`, `description`, `create_dt`, `dbtype`, `useclause`, `sync_comments`)\nVALUES\n (NULL, 'testdb', 'Descrizione test', NOW(), 'mySQL', '', 1);", + "len": 175, + "last": 175, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INSERT", + "value": "INSERT", + "keyword": "INSERT", + "type": 1, + "flags": 35, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": 1, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "tbproject", + "value": "tbproject", + "keyword": null, + "type": 0, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`id`", + "value": "id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`name`", + "value": "name", + "keyword": null, + "type": 8, + "flags": 2, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`description`", + "value": "description", + "keyword": null, + "type": 8, + "flags": 2, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`create_dt`", + "value": "create_dt", + "keyword": null, + "type": 8, + "flags": 2, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`dbtype`", + "value": "dbtype", + "keyword": null, + "type": 8, + "flags": 2, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`useclause`", + "value": "useclause", + "keyword": null, + "type": 8, + "flags": 2, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`sync_comments`", + "value": "sync_comments", + "keyword": null, + "type": 8, + "flags": 2, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 104 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 105 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": 1, + "flags": 35, + "position": 106 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 115 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NULL", + "value": "NULL", + "keyword": "NULL", + "type": 1, + "flags": 3, + "position": 116 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 120 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'testdb'", + "value": "testdb", + "keyword": null, + "type": 7, + "flags": 1, + "position": 122 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 130 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 131 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'Descrizione test'", + "value": "Descrizione test", + "keyword": null, + "type": 7, + "flags": 1, + "position": 132 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 150 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 151 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOW", + "value": "NOW", + "keyword": "NOW", + "type": 1, + "flags": 33, + "position": 152 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 155 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 156 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 157 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 158 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'mySQL'", + "value": "mySQL", + "keyword": null, + "type": 7, + "flags": 1, + "position": 159 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 166 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 167 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "''", + "value": "", + "keyword": null, + "type": 7, + "flags": 1, + "position": 168 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 170 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 171 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 172 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 173 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 174 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 54, + "idx": 54 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "OPTIONS": { + "LOW_PRIORITY": 1, + "DELAYED": 2, + "HIGH_PRIORITY": 3, + "IGNORE": 4 + }, + "into": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "FIELDS_OPTIONS": { + "TERMINATED BY": [ + 1, + "expr" + ], + "OPTIONALLY": 2, + "ENCLOSED BY": [ + 3, + "expr" + ], + "ESCAPED BY": [ + 4, + "expr" + ] + }, + "LINES_OPTIONS": { + "STARTING BY": [ + 1, + "expr" + ], + "TERMINATED BY": [ + 2, + "expr" + ] + }, + "type": null, + "dest": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "tbproject", + "column": null, + "expr": "tbproject", + "alias": null, + "function": null, + "subquery": null + }, + "columns": [ + "id", + "name", + "description", + "create_dt", + "dbtype", + "useclause", + "sync_comments" + ], + "values": null, + "fields_options": null, + "fields_keyword": null, + "lines_options": null + }, + "values": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "raw": [ + "NULL", + "'testdb'", + "'Descrizione test'", + "NOW()", + "'mySQL'", + "''", + "1" + ], + "values": [ + "NULL", + "testdb", + "Descrizione test", + "NOW()", + "mySQL", + "", + "1" + ] + } + ], + "set": null, + "select": null, + "onDuplicateSet": null, + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 51 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lex.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lex.in new file mode 100644 index 0000000000..675e19328d --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lex.in @@ -0,0 +1 @@ +SELECT \\ \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lex.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lex.out new file mode 100644 index 0000000000..866c6223cf --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lex.out @@ -0,0 +1,97 @@ +{ + "query": "SELECT \\\\", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SELECT \\\\", + "len": 9, + "last": 9, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\\", + "value": "\\", + "keyword": null, + "type": 0, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\\", + "value": "\\", + "keyword": null, + "type": 0, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 5, + "idx": 0 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": null, + "errors": { + "lexer": [ + [ + "Unexpected character.", + "\\", + 7, + 0 + ], + [ + "Unexpected character.", + "\\", + 8, + 0 + ] + ], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexBool.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexBool.in new file mode 100644 index 0000000000..9cad582881 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexBool.in @@ -0,0 +1 @@ +SELECT true, FalSe \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexBool.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexBool.out new file mode 100644 index 0000000000..bfda4cfc74 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexBool.out @@ -0,0 +1,102 @@ +{ + "query": "SELECT true, FalSe", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SELECT true, FalSe", + "len": 18, + "last": 18, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "true", + "value": true, + "keyword": null, + "type": 5, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FalSe", + "value": false, + "keyword": null, + "type": 5, + "flags": 1, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 7, + "idx": 0 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": null, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexComment.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexComment.in new file mode 100644 index 0000000000..86ed94f914 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexComment.in @@ -0,0 +1,4 @@ +# comment +SELECT /*!50000 STRAIGHT_JOIN */ col1 FROM table1, table2 /* select query */ +-- comment +-- comment 2 \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexComment.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexComment.out new file mode 100644 index 0000000000..db6c071679 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexComment.out @@ -0,0 +1,264 @@ +{ + "query": "# comment\nSELECT \/*!50000 STRAIGHT_JOIN *\/ col1 FROM table1, table2 \/* select query *\/\n-- comment\n-- comment 2", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "# comment\nSELECT \/*!50000 STRAIGHT_JOIN *\/ col1 FROM table1, table2 \/* select query *\/\n-- comment\n-- comment 2", + "len": 110, + "last": 111, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "# comment", + "value": "# comment", + "keyword": null, + "type": 4, + "flags": 1, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/*!50000", + "value": "\/*!50000", + "keyword": null, + "type": 4, + "flags": 10, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "STRAIGHT_JOIN", + "value": "STRAIGHT_JOIN", + "keyword": "STRAIGHT_JOIN", + "type": 1, + "flags": 3, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*\/", + "value": "*\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "col1", + "value": "col1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table2", + "value": "table2", + "keyword": null, + "type": 0, + "flags": 0, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* select query *\/", + "value": "\/* select query *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-- comment", + "value": "-- comment", + "keyword": null, + "type": 4, + "flags": 4, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 97 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-- comment 2", + "value": "-- comment 2", + "keyword": null, + "type": 4, + "flags": 4, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 25, + "idx": 0 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": null, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexCommentEnd.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexCommentEnd.in new file mode 100644 index 0000000000..f600a6c6b7 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexCommentEnd.in @@ -0,0 +1,3 @@ +SELECT 1 +-- comment +-- \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexCommentEnd.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexCommentEnd.out new file mode 100644 index 0000000000..1ec219d5cb --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexCommentEnd.out @@ -0,0 +1,111 @@ +{ + "query": "SELECT 1\n-- comment\n--", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SELECT 1\n-- comment\n--", + "len": 22, + "last": 23, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-- comment", + "value": "-- comment", + "keyword": null, + "type": 4, + "flags": 4, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "--", + "value": "--", + "keyword": null, + "type": 4, + "flags": 4, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 8, + "idx": 0 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": null, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexDelimiter.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexDelimiter.in new file mode 100644 index 0000000000..b5c99edcfe --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexDelimiter.in @@ -0,0 +1,3 @@ +DELIMITER GO +SELECT a,b FROM foo GO +SELECT * FROM bar \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexDelimiter.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexDelimiter.out new file mode 100644 index 0000000000..1cb443c8f8 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexDelimiter.out @@ -0,0 +1,255 @@ +{ + "query": "DELIMITER GO\nSELECT a,b FROM foo GO\nSELECT * FROM bar", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "DELIMITER GO\nSELECT a,b FROM foo GO\nSELECT * FROM bar", + "len": 53, + "last": 53, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELIMITER", + "value": "DELIMITER", + "keyword": null, + "type": 0, + "flags": 0, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "GO", + "value": "GO", + "keyword": null, + "type": 9, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": 0, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "b", + "value": "b", + "keyword": null, + "type": 0, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "foo", + "value": "foo", + "keyword": null, + "type": 0, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "GO", + "value": "GO", + "keyword": null, + "type": 9, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "bar", + "value": "bar", + "keyword": null, + "type": 0, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 24, + "idx": 0 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": "GO", + "delimiterLen": 2, + "strict": false, + "errors": [] + }, + "parser": null, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexDelimiter2.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexDelimiter2.in new file mode 100644 index 0000000000..61d473675e --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexDelimiter2.in @@ -0,0 +1,3 @@ +DELIMTER // +SELECT a,b FROM test // +SELECT * FROM bar // \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexDelimiter2.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexDelimiter2.out new file mode 100644 index 0000000000..c8020d7a94 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexDelimiter2.out @@ -0,0 +1,300 @@ +{ + "query": "DELIMTER \/\/\nSELECT a,b FROM test \/\/\nSELECT * FROM bar \/\/", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "DELIMTER \/\/\nSELECT a,b FROM test \/\/\nSELECT * FROM bar \/\/", + "len": 56, + "last": 56, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELIMTER", + "value": "DELIMTER", + "keyword": null, + "type": 0, + "flags": 0, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/", + "value": "\/", + "keyword": null, + "type": 2, + "flags": 1, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/", + "value": "\/", + "keyword": null, + "type": 2, + "flags": 1, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": 0, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "b", + "value": "b", + "keyword": null, + "type": 0, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "test", + "value": "test", + "keyword": null, + "type": 0, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/", + "value": "\/", + "keyword": null, + "type": 2, + "flags": 1, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/", + "value": "\/", + "keyword": null, + "type": 2, + "flags": 1, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "bar", + "value": "bar", + "keyword": null, + "type": 0, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/", + "value": "\/", + "keyword": null, + "type": 2, + "flags": 1, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/", + "value": "\/", + "keyword": null, + "type": 2, + "flags": 1, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 29, + "idx": 0 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": null, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexDelimiterErr1.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexDelimiterErr1.in new file mode 100644 index 0000000000..17933c5c1e --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexDelimiterErr1.in @@ -0,0 +1 @@ +DELIMITER \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexDelimiterErr1.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexDelimiterErr1.out new file mode 100644 index 0000000000..97a9e78ecf --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexDelimiterErr1.out @@ -0,0 +1,64 @@ +{ + "query": "DELIMITER", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "DELIMITER", + "len": 9, + "last": 9, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELIMITER", + "value": "DELIMITER", + "keyword": null, + "type": 0, + "flags": 0, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 2, + "idx": 0 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": null, + "errors": { + "lexer": [ + [ + "Expected whitespace(s) before delimiter.", + "", + 9, + 0 + ] + ], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexDelimiterErr2.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexDelimiterErr2.in new file mode 100644 index 0000000000..9288b4d534 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexDelimiterErr2.in @@ -0,0 +1 @@ +DELIMITER \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexDelimiterErr2.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexDelimiterErr2.out new file mode 100644 index 0000000000..bc260a61b3 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexDelimiterErr2.out @@ -0,0 +1,73 @@ +{ + "query": "DELIMITER \r", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "DELIMITER \r", + "len": 11, + "last": 11, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELIMITER", + "value": "DELIMITER", + "keyword": null, + "type": 0, + "flags": 0, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " \r", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 3, + "idx": 0 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": null, + "errors": { + "lexer": [ + [ + "Expected delimiter.", + "", + 11, + 0 + ] + ], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexDelimiterErr3.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexDelimiterErr3.in new file mode 100644 index 0000000000..2bea654607 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexDelimiterErr3.in @@ -0,0 +1 @@ +DELIMITER; diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexDelimiterErr3.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexDelimiterErr3.out new file mode 100644 index 0000000000..557462f9f9 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexDelimiterErr3.out @@ -0,0 +1,82 @@ +{ + "query": "DELIMITER;\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "DELIMITER;\n", + "len": 11, + "last": 11, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELIMITER", + "value": "DELIMITER", + "keyword": null, + "type": 0, + "flags": 0, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 4, + "idx": 0 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": null, + "errors": { + "lexer": [ + [ + "Expected delimiter.", + "", + 10, + 0 + ] + ], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexDelimiterLen.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexDelimiterLen.in new file mode 100644 index 0000000000..117421f831 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexDelimiterLen.in @@ -0,0 +1,2 @@ +DELIMITER abcdefghijklmnopqrstuvwxyz +SELECT 1 abcdefghijklmnopqrstuvwxyz diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexDelimiterLen.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexDelimiterLen.out new file mode 100644 index 0000000000..041d31a672 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexDelimiterLen.out @@ -0,0 +1,156 @@ +{ + "query": "DELIMITER abcdefghijklmnopqrstuvwxyz\nSELECT 1 abcdefghijklmnopqrstuvwxyz\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "DELIMITER abcdefghijklmnopqrstuvwxyz\nSELECT 1 abcdefghijklmnopqrstuvwxyz\n", + "len": 73, + "last": 73, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELIMITER", + "value": "DELIMITER", + "keyword": null, + "type": 0, + "flags": 0, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "abcdefghijklmno", + "value": "abcdefghijklmno", + "keyword": null, + "type": 9, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "pqrstuvwxyz", + "value": "pqrstuvwxyz", + "keyword": null, + "type": 0, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "abcdefghijklmno", + "value": "abcdefghijklmno", + "keyword": null, + "type": 9, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "pqrstuvwxyz", + "value": "pqrstuvwxyz", + "keyword": null, + "type": 0, + "flags": 0, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 13, + "idx": 0 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": "abcdefghijklmno", + "delimiterLen": 15, + "strict": false, + "errors": [] + }, + "parser": null, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexKeyword.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexKeyword.in new file mode 100644 index 0000000000..7a8f142d22 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexKeyword.in @@ -0,0 +1 @@ +SELECT 1 \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexKeyword.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexKeyword.out new file mode 100644 index 0000000000..c6c5028ad7 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexKeyword.out @@ -0,0 +1,75 @@ +{ + "query": "SELECT 1", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SELECT 1", + "len": 8, + "last": 8, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 4, + "idx": 0 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": null, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexKeyword2.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexKeyword2.in new file mode 100644 index 0000000000..6cad34e3e3 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexKeyword2.in @@ -0,0 +1 @@ +SELECT tbl.TABLE FROM tbl \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexKeyword2.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexKeyword2.out new file mode 100644 index 0000000000..ddc0f5768a --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexKeyword2.out @@ -0,0 +1,129 @@ +{ + "query": "SELECT tbl.TABLE FROM tbl", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SELECT tbl.TABLE FROM tbl", + "len": 25, + "last": 25, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "tbl", + "value": "tbl", + "keyword": null, + "type": 0, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": 0, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "tbl", + "value": "tbl", + "keyword": null, + "type": 0, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 10, + "idx": 0 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": null, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexLabel1.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexLabel1.in new file mode 100644 index 0000000000..41420e6022 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexLabel1.in @@ -0,0 +1,11 @@ +CREATE PROCEDURE doiterate(p1 INT) +BEGIN + label1 : LOOP + SET p1 = p1 + 1; + IF p1 < 10 THEN + ITERATE label1; + END IF; + LEAVE label1; + END LOOP label1; + SET @x = p1; +END \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexLabel1.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexLabel1.out new file mode 100644 index 0000000000..1c90ccf2ff --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexLabel1.out @@ -0,0 +1,696 @@ +{ + "query": "CREATE PROCEDURE doiterate(p1 INT)\nBEGIN\n label1 : LOOP\n SET p1 = p1 + 1;\n IF p1 < 10 THEN\n ITERATE label1;\n END IF;\n LEAVE label1;\n END LOOP label1;\n SET @x = p1;\nEND", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "CREATE PROCEDURE doiterate(p1 INT)\nBEGIN\n label1 : LOOP\n SET p1 = p1 + 1;\n IF p1 < 10 THEN\n ITERATE label1;\n END IF;\n LEAVE label1;\n END LOOP label1;\n SET @x = p1;\nEND", + "len": 187, + "last": 187, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PROCEDURE", + "value": "PROCEDURE", + "keyword": "PROCEDURE", + "type": 1, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "doiterate", + "value": "doiterate", + "keyword": null, + "type": 0, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p1", + "value": "p1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INT", + "value": "INT", + "keyword": "INT", + "type": 1, + "flags": 11, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "BEGIN", + "value": "BEGIN", + "keyword": "BEGIN", + "type": 1, + "flags": 1, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "label1 :", + "value": "label1 :", + "keyword": null, + "type": 10, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOOP", + "value": "LOOP", + "keyword": "LOOP", + "type": 1, + "flags": 3, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": 1, + "flags": 11, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p1", + "value": "p1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p1", + "value": "p1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "+", + "value": "+", + "keyword": null, + "type": 2, + "flags": 1, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IF", + "value": "IF", + "keyword": "IF", + "type": 1, + "flags": 35, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p1", + "value": "p1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "<", + "value": "<", + "keyword": null, + "type": 2, + "flags": 2, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "10", + "value": 10, + "keyword": null, + "type": 6, + "flags": 0, + "position": 90 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "THEN", + "value": "THEN", + "keyword": "THEN", + "type": 1, + "flags": 3, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 97 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ITERATE", + "value": "ITERATE", + "keyword": "ITERATE", + "type": 1, + "flags": 3, + "position": 104 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 111 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "label1", + "value": "label1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 118 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 119 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "END", + "value": "END", + "keyword": "END", + "type": 1, + "flags": 1, + "position": 124 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 127 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IF", + "value": "IF", + "keyword": "IF", + "type": 1, + "flags": 35, + "position": 128 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 130 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 131 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LEAVE", + "value": "LEAVE", + "keyword": "LEAVE", + "type": 1, + "flags": 3, + "position": 136 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 141 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "label1", + "value": "label1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 142 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 148 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 149 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "END", + "value": "END", + "keyword": "END", + "type": 1, + "flags": 1, + "position": 152 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 155 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOOP", + "value": "LOOP", + "keyword": "LOOP", + "type": 1, + "flags": 3, + "position": 156 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 160 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "label1", + "value": "label1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 161 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 167 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 168 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": 1, + "flags": 11, + "position": 171 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 174 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@x", + "value": "x", + "keyword": null, + "type": 8, + "flags": 1, + "position": 175 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 177 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 178 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 179 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p1", + "value": "p1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 180 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 182 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 183 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "END", + "value": "END", + "keyword": "END", + "type": 1, + "flags": 1, + "position": 184 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 73, + "idx": 0 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": null, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexLabel2.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexLabel2.in new file mode 100644 index 0000000000..3e98477dde --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexLabel2.in @@ -0,0 +1,11 @@ +CREATE PROCEDURE doiterate(p1 INT) +BEGIN + label1: LOOP + SET p1 = p1 + 1; + IF p1 < 10 THEN + ITERATE label1; + END IF; + LEAVE label1; + END LOOP label1; + SET @x = p1; +END \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexLabel2.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexLabel2.out new file mode 100644 index 0000000000..eb17b092fe --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexLabel2.out @@ -0,0 +1,696 @@ +{ + "query": "CREATE PROCEDURE doiterate(p1 INT)\nBEGIN\n label1: LOOP\n SET p1 = p1 + 1;\n IF p1 < 10 THEN\n ITERATE label1;\n END IF;\n LEAVE label1;\n END LOOP label1;\n SET @x = p1;\nEND", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "CREATE PROCEDURE doiterate(p1 INT)\nBEGIN\n label1: LOOP\n SET p1 = p1 + 1;\n IF p1 < 10 THEN\n ITERATE label1;\n END IF;\n LEAVE label1;\n END LOOP label1;\n SET @x = p1;\nEND", + "len": 186, + "last": 186, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PROCEDURE", + "value": "PROCEDURE", + "keyword": "PROCEDURE", + "type": 1, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "doiterate", + "value": "doiterate", + "keyword": null, + "type": 0, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p1", + "value": "p1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INT", + "value": "INT", + "keyword": "INT", + "type": 1, + "flags": 11, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "BEGIN", + "value": "BEGIN", + "keyword": "BEGIN", + "type": 1, + "flags": 1, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "label1:", + "value": "label1:", + "keyword": null, + "type": 10, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOOP", + "value": "LOOP", + "keyword": "LOOP", + "type": 1, + "flags": 3, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": 1, + "flags": 11, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p1", + "value": "p1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p1", + "value": "p1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "+", + "value": "+", + "keyword": null, + "type": 2, + "flags": 1, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IF", + "value": "IF", + "keyword": "IF", + "type": 1, + "flags": 35, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 83 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p1", + "value": "p1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "<", + "value": "<", + "keyword": null, + "type": 2, + "flags": 2, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "10", + "value": 10, + "keyword": null, + "type": 6, + "flags": 0, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 91 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "THEN", + "value": "THEN", + "keyword": "THEN", + "type": 1, + "flags": 3, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ITERATE", + "value": "ITERATE", + "keyword": "ITERATE", + "type": 1, + "flags": 3, + "position": 103 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 110 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "label1", + "value": "label1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 111 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 117 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 118 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "END", + "value": "END", + "keyword": "END", + "type": 1, + "flags": 1, + "position": 123 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 126 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IF", + "value": "IF", + "keyword": "IF", + "type": 1, + "flags": 35, + "position": 127 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 129 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 130 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LEAVE", + "value": "LEAVE", + "keyword": "LEAVE", + "type": 1, + "flags": 3, + "position": 135 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 140 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "label1", + "value": "label1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 141 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 147 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 148 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "END", + "value": "END", + "keyword": "END", + "type": 1, + "flags": 1, + "position": 151 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 154 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOOP", + "value": "LOOP", + "keyword": "LOOP", + "type": 1, + "flags": 3, + "position": 155 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 159 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "label1", + "value": "label1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 160 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 166 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 167 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": 1, + "flags": 11, + "position": 170 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 173 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@x", + "value": "x", + "keyword": null, + "type": 8, + "flags": 1, + "position": 174 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 176 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 177 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 178 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p1", + "value": "p1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 179 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 181 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 182 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "END", + "value": "END", + "keyword": "END", + "type": 1, + "flags": 1, + "position": 183 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 73, + "idx": 0 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": null, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexNoLabel.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexNoLabel.in new file mode 100644 index 0000000000..1fe9b4827e --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexNoLabel.in @@ -0,0 +1 @@ +SELECT wins FROM players WHERE auth = '[U1:123456789]' LIMIT 1 diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexNoLabel.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexNoLabel.out new file mode 100644 index 0000000000..165a496cd3 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexNoLabel.out @@ -0,0 +1,228 @@ +{ + "query": "SELECT wins FROM players WHERE auth = '[U1:123456789]' LIMIT 1\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SELECT wins FROM players WHERE auth = '[U1:123456789]' LIMIT 1\n", + "len": 63, + "last": 63, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "wins", + "value": "wins", + "keyword": null, + "type": 0, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "players", + "value": "players", + "keyword": null, + "type": 0, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "auth", + "value": "auth", + "keyword": null, + "type": 0, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'[U1:123456789]'", + "value": "[U1:123456789]", + "keyword": null, + "type": 7, + "flags": 1, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LIMIT", + "value": "LIMIT", + "keyword": "LIMIT", + "type": 1, + "flags": 3, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 21, + "idx": 0 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": null, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexNumber.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexNumber.in new file mode 100644 index 0000000000..6fe38851d7 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexNumber.in @@ -0,0 +1,3 @@ +SELECT 12, 34, 5.67, 0x89, -10, --11, +12, .15, 0xFFa, 0xfFA, 0XFfA, -0xFFa, -0xfFA, -0XFfA, 1e-10, 1e10, .5e10, b'10'; +-- invalid number +SELECT 12ex10, b'15'; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexNumber.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexNumber.out new file mode 100644 index 0000000000..5137a02a3c --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexNumber.out @@ -0,0 +1,642 @@ +{ + "query": "SELECT 12, 34, 5.67, 0x89, -10, --11, +12, .15, 0xFFa, 0xfFA, 0XFfA, -0xFFa, -0xfFA, -0XFfA, 1e-10, 1e10, .5e10, b'10';\n-- invalid number\nSELECT 12ex10, b'15';", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SELECT 12, 34, 5.67, 0x89, -10, --11, +12, .15, 0xFFa, 0xfFA, 0XFfA, -0xFFa, -0xfFA, -0XFfA, 1e-10, 1e10, .5e10, b'10';\n-- invalid number\nSELECT 12ex10, b'15';", + "len": 159, + "last": 159, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "12", + "value": 12, + "keyword": null, + "type": 6, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "34", + "value": 34, + "keyword": null, + "type": 6, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "5.67", + "value": 5.67, + "keyword": null, + "type": 6, + "flags": 2, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "0x89", + "value": 137, + "keyword": null, + "type": 6, + "flags": 1, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-10", + "value": -10, + "keyword": null, + "type": 6, + "flags": 8, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "--11", + "value": 11, + "keyword": null, + "type": 6, + "flags": 8, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "+12", + "value": 12, + "keyword": null, + "type": 6, + "flags": 0, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".15", + "value": 0.15, + "keyword": null, + "type": 6, + "flags": 2, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "0xFFa", + "value": 4090, + "keyword": null, + "type": 6, + "flags": 1, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "0xfFA", + "value": 4090, + "keyword": null, + "type": 6, + "flags": 1, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "0XFfA", + "value": 4090, + "keyword": null, + "type": 6, + "flags": 1, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-0xFFa", + "value": -4090, + "keyword": null, + "type": 6, + "flags": 9, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-0xfFA", + "value": -4090, + "keyword": null, + "type": 6, + "flags": 9, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 83 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-0XFfA", + "value": -4090, + "keyword": null, + "type": 6, + "flags": 9, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 91 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1e-10", + "value": 1.0e-10, + "keyword": null, + "type": 6, + "flags": 4, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1e10", + "value": 10000000000.0, + "keyword": null, + "type": 6, + "flags": 4, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 104 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 105 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".5e10", + "value": 5000000000.0, + "keyword": null, + "type": 6, + "flags": 6, + "position": 106 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 111 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "b'10'", + "value": "b'10'", + "keyword": null, + "type": 6, + "flags": 16, + "position": 113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 118 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 119 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-- invalid number", + "value": "-- invalid number", + "keyword": null, + "type": 4, + "flags": 4, + "position": 120 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 137 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 138 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 144 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "12ex10", + "value": "12ex10", + "keyword": null, + "type": 0, + "flags": 0, + "position": 145 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 151 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 152 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "b", + "value": "b", + "keyword": null, + "type": 0, + "flags": 0, + "position": 153 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'15'", + "value": "15", + "keyword": null, + "type": 7, + "flags": 1, + "position": 154 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 158 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 67, + "idx": 0 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": null, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexOperator.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexOperator.in new file mode 100644 index 0000000000..ab544dd7ea --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexOperator.in @@ -0,0 +1 @@ +SELECT 1 + 2 \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexOperator.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexOperator.out new file mode 100644 index 0000000000..68a66ae4f0 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexOperator.out @@ -0,0 +1,111 @@ +{ + "query": "SELECT 1 + 2", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SELECT 1 + 2", + "len": 12, + "last": 12, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "+", + "value": "+", + "keyword": null, + "type": 2, + "flags": 1, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": 6, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 8, + "idx": 0 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": null, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexOperatorStarIsArithmetic.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexOperatorStarIsArithmetic.in new file mode 100644 index 0000000000..a978dde9bb --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexOperatorStarIsArithmetic.in @@ -0,0 +1,50 @@ +SELECT 2*3 +SELECT 2 * 3 +SELECT field * 8 +SELECT 8 * field +SELECT foo * bar +SELECT `escaped_field` * 16 +SELECT 16 * `escaped_field` +SELECT `foo` * `bar` +SELECT `foo`*`bar` +SELECT 1 * (SELECT COUNT(1) FROM nb_rows) +SELECT (SELECT COUNT(1) FROM nb_rows) * 1 +SELECT (SELECT COUNT(1) FROM nb_rows) * (SELECT COUNT(1) FROM nb_rows) +SELECT (1 * 1) * (2 * 2) +SELECT 1 * (2 * (3 * (4 * 5))) +SELECT 2.71 * 3.14 +SELECT 2.71 * -3.14 +SELECT -2.71 * 3.14 +SELECT -2.71 * -3.14 +SELECT 0xABC * 0xCBA +SELECT 0xABC * -0xCBA +SELECT -0xABC * 0xCBA +SELECT -0xABC * -0xCBA + +-- Now same but with comments inside (C style comments could conflicts with operator if lexer is failing) +SELECT 2 * /* comment */3 +SELECT 2/* comment */ * 3 +SELECT 2/* comment with * inside */ * 3 +SELECT /* comment */ field /* comment */ * /* comment */ 8 /* comment */ +SELECT /* comment */ 8 /* comment */ * /* comment */ field /* comment */ +SELECT /* comment */ foo /* comment */ * /* comment */ bar /* comment */ +SELECT /* comment */ `escaped_field` /* comment */ * /* comment */ 16 /* comment */ +SELECT /* comment */ 16 /* comment */ * /* comment */ `escaped_field` /* comment */ +SELECT /* comment */ `foo` /* comment */ * /* comment */ `bar` /* comment */ +SELECT /* `comment` */ `foo` /* `comment` */ * /* `comment` */ `bar` /* `comment` */ +SELECT /* comment */ 1 /* comment */ * /* comment */ (SELECT COUNT(/* comment */1/* comment */) /* comment */ FROM nb_rows) +SELECT /* comment */ (SELECT COUNT(1) /* comment */FROM/* comment */ nb_rows) /* comment */ * /* comment */ 1 +SELECT (SELECT /* comment */ COUNT(1) /* comment */ FROM /* comment */ nb_rows) /* comment */ * /* comment */ (SELECT COUNT(1) FROM nb_rows) +SELECT (1 * 1) /* comment */ * /* comment */ (2 * 2) +SELECT /* comment */ 1 /* comment */ * /* comment */ (2 /* comment */ * /* comment */ (3 /* comment */ * /* comment */ (4 /* comment */ * /* comment */ 5))) /* comment */ +SELECT 2.71 /* comment */ * /* comment */ 3.14 +SELECT 2.71 /* comment */ * /* comment */ -3.14 +SELECT -2.71 /* comment */ * /* comment */ 3.14 +SELECT -2.71 /* comment */ * /* comment */ -3.14 +SELECT 0xABC /* comment */ * /* comment */ 0xCBA +SELECT 0xABC /* comment */ * /* comment */ -0xCBA +SELECT -0xABC /* comment */ * /* comment */ 0xCBA +SELECT -0xABC /* comment */ * /* comment */ -0xCBA +SELECT 1 /* comment with FROM keyword */ * /* comment with USING keyword */1 +SELECT 1 /* comment with ) */ * /* comment with , keyword */1 + diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexOperatorStarIsArithmetic.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexOperatorStarIsArithmetic.out new file mode 100644 index 0000000000..fff4d4f906 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexOperatorStarIsArithmetic.out @@ -0,0 +1,6087 @@ +{ + "query": "SELECT 2*3\nSELECT 2 * 3\nSELECT field * 8\nSELECT 8 * field\nSELECT foo * bar\nSELECT `escaped_field` * 16\nSELECT 16 * `escaped_field`\nSELECT `foo` * `bar`\nSELECT `foo`*`bar`\nSELECT 1 * (SELECT COUNT(1) FROM nb_rows)\nSELECT (SELECT COUNT(1) FROM nb_rows) * 1\nSELECT (SELECT COUNT(1) FROM nb_rows) * (SELECT COUNT(1) FROM nb_rows)\nSELECT (1 * 1) * (2 * 2)\nSELECT 1 * (2 * (3 * (4 * 5)))\nSELECT 2.71 * 3.14\nSELECT 2.71 * -3.14\nSELECT -2.71 * 3.14\nSELECT -2.71 * -3.14\nSELECT 0xABC * 0xCBA\nSELECT 0xABC * -0xCBA\nSELECT -0xABC * 0xCBA\nSELECT -0xABC * -0xCBA\n\n-- Now same but with comments inside (C style comments could conflicts with operator if lexer is failing)\nSELECT 2 * \/* comment *\/3\nSELECT 2\/* comment *\/ * 3\nSELECT 2\/* comment with * inside *\/ * 3\nSELECT \/* comment *\/ field \/* comment *\/ * \/* comment *\/ 8 \/* comment *\/\nSELECT \/* comment *\/ 8 \/* comment *\/ * \/* comment *\/ field \/* comment *\/\nSELECT \/* comment *\/ foo \/* comment *\/ * \/* comment *\/ bar \/* comment *\/\nSELECT \/* comment *\/ `escaped_field` \/* comment *\/ * \/* comment *\/ 16 \/* comment *\/\nSELECT \/* comment *\/ 16 \/* comment *\/ * \/* comment *\/ `escaped_field` \/* comment *\/\nSELECT \/* comment *\/ `foo` \/* comment *\/ * \/* comment *\/ `bar` \/* comment *\/\nSELECT \/* `comment` *\/ `foo` \/* `comment` *\/ * \/* `comment` *\/ `bar` \/* `comment` *\/\nSELECT \/* comment *\/ 1 \/* comment *\/ * \/* comment *\/ (SELECT COUNT(\/* comment *\/1\/* comment *\/) \/* comment *\/ FROM nb_rows)\nSELECT \/* comment *\/ (SELECT COUNT(1) \/* comment *\/FROM\/* comment *\/ nb_rows) \/* comment *\/ * \/* comment *\/ 1\nSELECT (SELECT \/* comment *\/ COUNT(1) \/* comment *\/ FROM \/* comment *\/ nb_rows) \/* comment *\/ * \/* comment *\/ (SELECT COUNT(1) FROM nb_rows)\nSELECT (1 * 1) \/* comment *\/ * \/* comment *\/ (2 * 2)\nSELECT \/* comment *\/ 1 \/* comment *\/ * \/* comment *\/ (2 \/* comment *\/ * \/* comment *\/ (3 \/* comment *\/ * \/* comment *\/ (4 \/* comment *\/ * \/* comment *\/ 5))) \/* comment *\/\nSELECT 2.71 \/* comment *\/ * \/* comment *\/ 3.14\nSELECT 2.71 \/* comment *\/ * \/* comment *\/ -3.14\nSELECT -2.71 \/* comment *\/ * \/* comment *\/ 3.14\nSELECT -2.71 \/* comment *\/ * \/* comment *\/ -3.14\nSELECT 0xABC \/* comment *\/ * \/* comment *\/ 0xCBA\nSELECT 0xABC \/* comment *\/ * \/* comment *\/ -0xCBA\nSELECT -0xABC \/* comment *\/ * \/* comment *\/ 0xCBA\nSELECT -0xABC \/* comment *\/ * \/* comment *\/ -0xCBA\nSELECT 1 \/* comment with FROM keyword *\/ * \/* comment with USING keyword *\/1\nSELECT 1 \/* comment with ) *\/ * \/* comment with , keyword *\/1\n\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SELECT 2*3\nSELECT 2 * 3\nSELECT field * 8\nSELECT 8 * field\nSELECT foo * bar\nSELECT `escaped_field` * 16\nSELECT 16 * `escaped_field`\nSELECT `foo` * `bar`\nSELECT `foo`*`bar`\nSELECT 1 * (SELECT COUNT(1) FROM nb_rows)\nSELECT (SELECT COUNT(1) FROM nb_rows) * 1\nSELECT (SELECT COUNT(1) FROM nb_rows) * (SELECT COUNT(1) FROM nb_rows)\nSELECT (1 * 1) * (2 * 2)\nSELECT 1 * (2 * (3 * (4 * 5)))\nSELECT 2.71 * 3.14\nSELECT 2.71 * -3.14\nSELECT -2.71 * 3.14\nSELECT -2.71 * -3.14\nSELECT 0xABC * 0xCBA\nSELECT 0xABC * -0xCBA\nSELECT -0xABC * 0xCBA\nSELECT -0xABC * -0xCBA\n\n-- Now same but with comments inside (C style comments could conflicts with operator if lexer is failing)\nSELECT 2 * \/* comment *\/3\nSELECT 2\/* comment *\/ * 3\nSELECT 2\/* comment with * inside *\/ * 3\nSELECT \/* comment *\/ field \/* comment *\/ * \/* comment *\/ 8 \/* comment *\/\nSELECT \/* comment *\/ 8 \/* comment *\/ * \/* comment *\/ field \/* comment *\/\nSELECT \/* comment *\/ foo \/* comment *\/ * \/* comment *\/ bar \/* comment *\/\nSELECT \/* comment *\/ `escaped_field` \/* comment *\/ * \/* comment *\/ 16 \/* comment *\/\nSELECT \/* comment *\/ 16 \/* comment *\/ * \/* comment *\/ `escaped_field` \/* comment *\/\nSELECT \/* comment *\/ `foo` \/* comment *\/ * \/* comment *\/ `bar` \/* comment *\/\nSELECT \/* `comment` *\/ `foo` \/* `comment` *\/ * \/* `comment` *\/ `bar` \/* `comment` *\/\nSELECT \/* comment *\/ 1 \/* comment *\/ * \/* comment *\/ (SELECT COUNT(\/* comment *\/1\/* comment *\/) \/* comment *\/ FROM nb_rows)\nSELECT \/* comment *\/ (SELECT COUNT(1) \/* comment *\/FROM\/* comment *\/ nb_rows) \/* comment *\/ * \/* comment *\/ 1\nSELECT (SELECT \/* comment *\/ COUNT(1) \/* comment *\/ FROM \/* comment *\/ nb_rows) \/* comment *\/ * \/* comment *\/ (SELECT COUNT(1) FROM nb_rows)\nSELECT (1 * 1) \/* comment *\/ * \/* comment *\/ (2 * 2)\nSELECT \/* comment *\/ 1 \/* comment *\/ * \/* comment *\/ (2 \/* comment *\/ * \/* comment *\/ (3 \/* comment *\/ * \/* comment *\/ (4 \/* comment *\/ * \/* comment *\/ 5))) \/* comment *\/\nSELECT 2.71 \/* comment *\/ * \/* comment *\/ 3.14\nSELECT 2.71 \/* comment *\/ * \/* comment *\/ -3.14\nSELECT -2.71 \/* comment *\/ * \/* comment *\/ 3.14\nSELECT -2.71 \/* comment *\/ * \/* comment *\/ -3.14\nSELECT 0xABC \/* comment *\/ * \/* comment *\/ 0xCBA\nSELECT 0xABC \/* comment *\/ * \/* comment *\/ -0xCBA\nSELECT -0xABC \/* comment *\/ * \/* comment *\/ 0xCBA\nSELECT -0xABC \/* comment *\/ * \/* comment *\/ -0xCBA\nSELECT 1 \/* comment with FROM keyword *\/ * \/* comment with USING keyword *\/1\nSELECT 1 \/* comment with ) *\/ * \/* comment with , keyword *\/1\n\n", + "len": 2429, + "last": 2429, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": 6, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 1, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3", + "value": 3, + "keyword": null, + "type": 6, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": 6, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 1, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3", + "value": 3, + "keyword": null, + "type": 6, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "field", + "value": "field", + "keyword": "FIELD", + "type": 1, + "flags": 33, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 1, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "8", + "value": 8, + "keyword": null, + "type": 6, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "8", + "value": 8, + "keyword": null, + "type": 6, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 1, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "field", + "value": "field", + "keyword": "FIELD", + "type": 1, + "flags": 33, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "foo", + "value": "foo", + "keyword": null, + "type": 0, + "flags": 0, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 1, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "bar", + "value": "bar", + "keyword": null, + "type": 0, + "flags": 0, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`escaped_field`", + "value": "escaped_field", + "keyword": null, + "type": 8, + "flags": 2, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 97 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 1, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "16", + "value": 16, + "keyword": null, + "type": 6, + "flags": 0, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 102 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 103 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 109 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "16", + "value": 16, + "keyword": null, + "type": 6, + "flags": 0, + "position": 110 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 1, + "position": 113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 114 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`escaped_field`", + "value": "escaped_field", + "keyword": null, + "type": 8, + "flags": 2, + "position": 115 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 130 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 131 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 137 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`foo`", + "value": "foo", + "keyword": null, + "type": 8, + "flags": 2, + "position": 138 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 143 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 1, + "position": 144 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 145 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`bar`", + "value": "bar", + "keyword": null, + "type": 8, + "flags": 2, + "position": 146 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 151 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 152 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 158 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`foo`", + "value": "foo", + "keyword": null, + "type": 8, + "flags": 2, + "position": 159 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 1, + "position": 164 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`bar`", + "value": "bar", + "keyword": null, + "type": 8, + "flags": 2, + "position": 165 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 170 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 171 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 177 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 178 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 179 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 1, + "position": 180 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 181 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 182 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 183 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 189 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COUNT", + "value": "COUNT", + "keyword": "COUNT", + "type": 1, + "flags": 33, + "position": 190 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 195 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 196 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 197 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 198 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 199 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 203 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "nb_rows", + "value": "nb_rows", + "keyword": null, + "type": 0, + "flags": 0, + "position": 204 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 211 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 212 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 213 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 219 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 220 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 221 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 227 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COUNT", + "value": "COUNT", + "keyword": "COUNT", + "type": 1, + "flags": 33, + "position": 228 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 233 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 234 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 235 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 236 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 237 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 241 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "nb_rows", + "value": "nb_rows", + "keyword": null, + "type": 0, + "flags": 0, + "position": 242 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 249 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 250 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 1, + "position": 251 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 252 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 253 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 254 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 255 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 261 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 262 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 263 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 269 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COUNT", + "value": "COUNT", + "keyword": "COUNT", + "type": 1, + "flags": 33, + "position": 270 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 275 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 276 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 277 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 278 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 279 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 283 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "nb_rows", + "value": "nb_rows", + "keyword": null, + "type": 0, + "flags": 0, + "position": 284 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 291 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 292 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 1, + "position": 293 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 294 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 295 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 296 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 302 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COUNT", + "value": "COUNT", + "keyword": "COUNT", + "type": 1, + "flags": 33, + "position": 303 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 308 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 309 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 310 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 311 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 312 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 316 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "nb_rows", + "value": "nb_rows", + "keyword": null, + "type": 0, + "flags": 0, + "position": 317 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 324 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 325 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 326 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 332 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 333 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 334 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 335 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 1, + "position": 336 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 337 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 338 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 339 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 340 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 1, + "position": 341 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 342 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 343 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": 6, + "flags": 0, + "position": 344 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 345 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 1, + "position": 346 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 347 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": 6, + "flags": 0, + "position": 348 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 349 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 350 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 351 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 357 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 358 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 359 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 1, + "position": 360 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 361 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 362 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": 6, + "flags": 0, + "position": 363 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 364 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 1, + "position": 365 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 366 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 367 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3", + "value": 3, + "keyword": null, + "type": 6, + "flags": 0, + "position": 368 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 369 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 1, + "position": 370 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 371 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 372 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "4", + "value": 4, + "keyword": null, + "type": 6, + "flags": 0, + "position": 373 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 374 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 1, + "position": 375 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 376 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "5", + "value": 5, + "keyword": null, + "type": 6, + "flags": 0, + "position": 377 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 378 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 379 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 380 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 381 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 382 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 388 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2.71", + "value": 2.71, + "keyword": null, + "type": 6, + "flags": 2, + "position": 389 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 393 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 1, + "position": 394 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 395 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3.14", + "value": 3.14, + "keyword": null, + "type": 6, + "flags": 2, + "position": 396 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 400 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 401 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 407 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2.71", + "value": 2.71, + "keyword": null, + "type": 6, + "flags": 2, + "position": 408 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 412 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 1, + "position": 413 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 414 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-3.14", + "value": -3.14, + "keyword": null, + "type": 6, + "flags": 10, + "position": 415 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 420 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 421 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 427 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-2.71", + "value": -2.71, + "keyword": null, + "type": 6, + "flags": 10, + "position": 428 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 433 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 1, + "position": 434 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 435 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3.14", + "value": 3.14, + "keyword": null, + "type": 6, + "flags": 2, + "position": 436 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 440 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 441 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 447 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-2.71", + "value": -2.71, + "keyword": null, + "type": 6, + "flags": 10, + "position": 448 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 453 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 1, + "position": 454 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 455 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-3.14", + "value": -3.14, + "keyword": null, + "type": 6, + "flags": 10, + "position": 456 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 461 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 462 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 468 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "0xABC", + "value": 2748, + "keyword": null, + "type": 6, + "flags": 1, + "position": 469 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 474 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 1, + "position": 475 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 476 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "0xCBA", + "value": 3258, + "keyword": null, + "type": 6, + "flags": 1, + "position": 477 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 482 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 483 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 489 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "0xABC", + "value": 2748, + "keyword": null, + "type": 6, + "flags": 1, + "position": 490 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 495 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 1, + "position": 496 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 497 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-0xCBA", + "value": -3258, + "keyword": null, + "type": 6, + "flags": 9, + "position": 498 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 504 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 505 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 511 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-0xABC", + "value": -2748, + "keyword": null, + "type": 6, + "flags": 9, + "position": 512 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 518 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 1, + "position": 519 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 520 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "0xCBA", + "value": 3258, + "keyword": null, + "type": 6, + "flags": 1, + "position": 521 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 526 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 527 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 533 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-0xABC", + "value": -2748, + "keyword": null, + "type": 6, + "flags": 9, + "position": 534 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 540 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 1, + "position": 541 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 542 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-0xCBA", + "value": -3258, + "keyword": null, + "type": 6, + "flags": 9, + "position": 543 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 549 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-- Now same but with comments inside (C style comments could conflicts with operator if lexer is failing)", + "value": "-- Now same but with comments inside (C style comments could conflicts with operator if lexer is failing)", + "keyword": null, + "type": 4, + "flags": 4, + "position": 551 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 656 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 657 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 663 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": 6, + "flags": 0, + "position": 664 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 665 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 1, + "position": 666 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 667 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 668 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3", + "value": 3, + "keyword": null, + "type": 6, + "flags": 0, + "position": 681 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 682 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 683 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 689 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": 6, + "flags": 0, + "position": 690 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 691 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 704 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 1, + "position": 705 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 706 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3", + "value": 3, + "keyword": null, + "type": 6, + "flags": 0, + "position": 707 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 708 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 709 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 715 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": 6, + "flags": 0, + "position": 716 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment with * inside *\/", + "value": "\/* comment with * inside *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 717 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 744 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 1, + "position": 745 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 746 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3", + "value": 3, + "keyword": null, + "type": 6, + "flags": 0, + "position": 747 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 748 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 749 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 755 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 756 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 769 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "field", + "value": "field", + "keyword": "FIELD", + "type": 1, + "flags": 33, + "position": 770 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 775 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 776 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 789 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 1, + "position": 790 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 791 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 792 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 805 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "8", + "value": 8, + "keyword": null, + "type": 6, + "flags": 0, + "position": 806 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 807 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 808 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 821 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 822 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 828 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 829 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 842 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "8", + "value": 8, + "keyword": null, + "type": 6, + "flags": 0, + "position": 843 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 844 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 845 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 858 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 1, + "position": 859 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 860 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 861 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 874 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "field", + "value": "field", + "keyword": "FIELD", + "type": 1, + "flags": 33, + "position": 875 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 880 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 881 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 894 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 895 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 901 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 902 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 915 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "foo", + "value": "foo", + "keyword": null, + "type": 0, + "flags": 0, + "position": 916 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 919 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 920 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 933 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 1, + "position": 934 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 935 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 936 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 949 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "bar", + "value": "bar", + "keyword": null, + "type": 0, + "flags": 0, + "position": 950 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 953 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 954 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 967 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 968 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 974 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 975 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 988 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`escaped_field`", + "value": "escaped_field", + "keyword": null, + "type": 8, + "flags": 2, + "position": 989 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1004 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 1005 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1018 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 1, + "position": 1019 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1020 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 1021 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1034 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "16", + "value": 16, + "keyword": null, + "type": 6, + "flags": 0, + "position": 1035 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1037 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 1038 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1051 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 1052 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1058 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 1059 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1072 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "16", + "value": 16, + "keyword": null, + "type": 6, + "flags": 0, + "position": 1073 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1075 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 1076 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1089 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 1, + "position": 1090 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1091 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 1092 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1105 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`escaped_field`", + "value": "escaped_field", + "keyword": null, + "type": 8, + "flags": 2, + "position": 1106 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 1122 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1135 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 1136 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1142 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 1143 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1156 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`foo`", + "value": "foo", + "keyword": null, + "type": 8, + "flags": 2, + "position": 1157 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1162 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 1163 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1176 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 1, + "position": 1177 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1178 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 1179 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1192 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`bar`", + "value": "bar", + "keyword": null, + "type": 8, + "flags": 2, + "position": 1193 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1198 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 1199 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1212 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 1213 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1219 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* `comment` *\/", + "value": "\/* `comment` *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 1220 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1235 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`foo`", + "value": "foo", + "keyword": null, + "type": 8, + "flags": 2, + "position": 1236 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1241 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* `comment` *\/", + "value": "\/* `comment` *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 1242 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1257 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 1, + "position": 1258 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1259 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* `comment` *\/", + "value": "\/* `comment` *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 1260 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1275 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`bar`", + "value": "bar", + "keyword": null, + "type": 8, + "flags": 2, + "position": 1276 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1281 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* `comment` *\/", + "value": "\/* `comment` *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 1282 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1297 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 1298 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1304 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 1305 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1318 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 1319 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1320 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 1321 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1334 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 1, + "position": 1335 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1336 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 1337 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1350 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 1351 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 1352 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1358 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COUNT", + "value": "COUNT", + "keyword": "COUNT", + "type": 1, + "flags": 33, + "position": 1359 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 1364 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 1365 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 1378 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 1379 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 1392 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1393 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 1394 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1407 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 1408 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1412 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "nb_rows", + "value": "nb_rows", + "keyword": null, + "type": 0, + "flags": 0, + "position": 1413 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 1420 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1421 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 1422 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1428 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 1429 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1442 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 1443 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 1444 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1450 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COUNT", + "value": "COUNT", + "keyword": "COUNT", + "type": 1, + "flags": 33, + "position": 1451 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 1456 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 1457 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 1458 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1459 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 1460 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 1473 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 1477 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1490 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "nb_rows", + "value": "nb_rows", + "keyword": null, + "type": 0, + "flags": 0, + "position": 1491 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 1498 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1499 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 1500 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1513 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 1, + "position": 1514 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1515 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 1516 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1529 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 1530 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1531 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 1532 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1538 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 1539 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 1540 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1546 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 1547 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1560 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COUNT", + "value": "COUNT", + "keyword": "COUNT", + "type": 1, + "flags": 33, + "position": 1561 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 1566 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 1567 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 1568 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1569 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 1570 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1583 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 1584 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1588 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 1589 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1602 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "nb_rows", + "value": "nb_rows", + "keyword": null, + "type": 0, + "flags": 0, + "position": 1603 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 1610 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1611 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 1612 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1625 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 1, + "position": 1626 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1627 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 1628 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1641 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 1642 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 1643 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1649 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COUNT", + "value": "COUNT", + "keyword": "COUNT", + "type": 1, + "flags": 33, + "position": 1650 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 1655 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 1656 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 1657 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1658 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 1659 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1663 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "nb_rows", + "value": "nb_rows", + "keyword": null, + "type": 0, + "flags": 0, + "position": 1664 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 1671 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1672 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 1673 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1679 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 1680 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 1681 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1682 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 1, + "position": 1683 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1684 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 1685 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 1686 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1687 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 1688 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1701 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 1, + "position": 1702 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1703 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 1704 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1717 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 1718 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": 6, + "flags": 0, + "position": 1719 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1720 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 1, + "position": 1721 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1722 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": 6, + "flags": 0, + "position": 1723 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 1724 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1725 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 1726 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1732 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 1733 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1746 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 1747 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1748 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 1749 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1762 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 1, + "position": 1763 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1764 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 1765 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1778 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 1779 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": 6, + "flags": 0, + "position": 1780 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1781 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 1782 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1795 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 1, + "position": 1796 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1797 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 1798 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1811 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 1812 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3", + "value": 3, + "keyword": null, + "type": 6, + "flags": 0, + "position": 1813 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1814 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 1815 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1828 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 1, + "position": 1829 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1830 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 1831 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1844 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 1845 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "4", + "value": 4, + "keyword": null, + "type": 6, + "flags": 0, + "position": 1846 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1847 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 1848 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1861 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 1, + "position": 1862 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1863 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 1864 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1877 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "5", + "value": 5, + "keyword": null, + "type": 6, + "flags": 0, + "position": 1878 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 1879 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 1880 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 1881 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1882 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 1883 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1896 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 1897 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1903 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2.71", + "value": 2.71, + "keyword": null, + "type": 6, + "flags": 2, + "position": 1904 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1908 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 1909 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1922 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 1, + "position": 1923 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1924 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 1925 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1938 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3.14", + "value": 3.14, + "keyword": null, + "type": 6, + "flags": 2, + "position": 1939 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1943 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 1944 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1950 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2.71", + "value": 2.71, + "keyword": null, + "type": 6, + "flags": 2, + "position": 1951 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1955 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 1956 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1969 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 1, + "position": 1970 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1971 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 1972 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1985 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-3.14", + "value": -3.14, + "keyword": null, + "type": 6, + "flags": 10, + "position": 1986 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1991 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 1992 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1998 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-2.71", + "value": -2.71, + "keyword": null, + "type": 6, + "flags": 10, + "position": 1999 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 2004 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 2005 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 2018 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 1, + "position": 2019 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 2020 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 2021 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 2034 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3.14", + "value": 3.14, + "keyword": null, + "type": 6, + "flags": 2, + "position": 2035 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 2039 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 2040 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 2046 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-2.71", + "value": -2.71, + "keyword": null, + "type": 6, + "flags": 10, + "position": 2047 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 2052 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 2053 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 2066 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 1, + "position": 2067 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 2068 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 2069 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 2082 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-3.14", + "value": -3.14, + "keyword": null, + "type": 6, + "flags": 10, + "position": 2083 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 2088 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 2089 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 2095 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "0xABC", + "value": 2748, + "keyword": null, + "type": 6, + "flags": 1, + "position": 2096 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 2101 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 2102 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 2115 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 1, + "position": 2116 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 2117 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 2118 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 2131 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "0xCBA", + "value": 3258, + "keyword": null, + "type": 6, + "flags": 1, + "position": 2132 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 2137 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 2138 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 2144 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "0xABC", + "value": 2748, + "keyword": null, + "type": 6, + "flags": 1, + "position": 2145 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 2150 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 2151 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 2164 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 1, + "position": 2165 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 2166 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 2167 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 2180 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-0xCBA", + "value": -3258, + "keyword": null, + "type": 6, + "flags": 9, + "position": 2181 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 2187 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 2188 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 2194 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-0xABC", + "value": -2748, + "keyword": null, + "type": 6, + "flags": 9, + "position": 2195 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 2201 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 2202 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 2215 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 1, + "position": 2216 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 2217 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 2218 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 2231 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "0xCBA", + "value": 3258, + "keyword": null, + "type": 6, + "flags": 1, + "position": 2232 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 2237 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 2238 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 2244 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-0xABC", + "value": -2748, + "keyword": null, + "type": 6, + "flags": 9, + "position": 2245 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 2251 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 2252 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 2265 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 1, + "position": 2266 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 2267 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 2268 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 2281 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-0xCBA", + "value": -3258, + "keyword": null, + "type": 6, + "flags": 9, + "position": 2282 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 2288 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 2289 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 2295 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 2296 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 2297 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment with FROM keyword *\/", + "value": "\/* comment with FROM keyword *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 2298 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 2329 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 1, + "position": 2330 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 2331 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment with USING keyword *\/", + "value": "\/* comment with USING keyword *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 2332 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 2364 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 2365 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 2366 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 2372 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 2373 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 2374 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment with ) *\/", + "value": "\/* comment with ) *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 2375 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 2395 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 1, + "position": 2396 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 2397 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment with , keyword *\/", + "value": "\/* comment with , keyword *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 2398 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 2426 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 2427 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 672, + "idx": 0 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": null, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexOperatorStarIsWildcard.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexOperatorStarIsWildcard.in new file mode 100644 index 0000000000..087c3b9914 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexOperatorStarIsWildcard.in @@ -0,0 +1,34 @@ +SELECT * FROM +SELECT *FROM +SELECT a.* FROM +SELECT a.*,b.* FROM +SELECT a.*, b.* FROM +SELECT a.*, /* with a comment */ b.* FROM +SELECT a.*,/* with a comment */b.* FROM +SELECT a.* /* comment */ FROM +-- SELECT a.*/* comment */ FROM (This one is not working yet because of https://github.com/phpmyadmin/sql-parser/issues/285. Please uncomment when this issue is fixed.) +SELECT DISTINCT * FROM +SELECT DISTINCT *FROM +SELECT DISTINCT a.* FROM +SELECT DISTINCT a.*,b.* FROM +SELECT DISTINCT a.*, b.* FROM +SELECT DISTINCT a.*, /* with a comment */ b.* FROM +SELECT DISTINCT a.*,/* with a comment */b.* FROM +SELECT DISTINCT a.* /* comment */ FROM +-- SELECT DISTINCT a.*/* comment */ FROM (This one is not working yet because of https://github.com/phpmyadmin/sql-parser/issues/285. Please uncomment when this issue is fixed.) +SELECT `*` FROM table_name +SELECT `*`.* FROM table_name AS `*` +SELECT COUNT(*) FROM table_name +SELECT COUNT( * ) FROM table_name +SELECT COUNT( * /* comment with *,USING,FROM */) FROM table_name +SELECT COUNT(`*`) FROM table_name +SELECT 1 FROM table_name WHERE LABEL LIKE '%*%' +DELETE a.* USING +DELETE a.*, b.* USING +DELETE a.* ,b.* USING +DELETE a.* , b.* USING +DELETE a.* /* comment */ USING +DELETE a.* /* comment */, b.* /*comment*/ USING +DELETE a.* /* comment */ ,b.* /*comment*/ USING +DELETE a.* /* comment */ , b.* /*comment*/ USING + diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexOperatorStarIsWildcard.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexOperatorStarIsWildcard.out new file mode 100644 index 0000000000..c2d62a9696 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexOperatorStarIsWildcard.out @@ -0,0 +1,3477 @@ +{ + "query": "SELECT * FROM\nSELECT *FROM\nSELECT a.* FROM\nSELECT a.*,b.* FROM\nSELECT a.*, b.* FROM\nSELECT a.*, \/* with a comment *\/ b.* FROM\nSELECT a.*,\/* with a comment *\/b.* FROM\nSELECT a.* \/* comment *\/ FROM\n-- SELECT a.*\/* comment *\/ FROM (This one is not working yet because of https:\/\/github.com\/phpmyadmin\/sql-parser\/issues\/285. Please uncomment when this issue is fixed.)\nSELECT DISTINCT * FROM\nSELECT DISTINCT *FROM\nSELECT DISTINCT a.* FROM\nSELECT DISTINCT a.*,b.* FROM\nSELECT DISTINCT a.*, b.* FROM\nSELECT DISTINCT a.*, \/* with a comment *\/ b.* FROM\nSELECT DISTINCT a.*,\/* with a comment *\/b.* FROM\nSELECT DISTINCT a.* \/* comment *\/ FROM\n-- SELECT DISTINCT a.*\/* comment *\/ FROM (This one is not working yet because of https:\/\/github.com\/phpmyadmin\/sql-parser\/issues\/285. Please uncomment when this issue is fixed.)\nSELECT `*` FROM table_name\nSELECT `*`.* FROM table_name AS `*`\nSELECT COUNT(*) FROM table_name\nSELECT COUNT( * ) FROM table_name\nSELECT COUNT( * \/* comment with *,USING,FROM *\/) FROM table_name\nSELECT COUNT(`*`) FROM table_name\nSELECT 1 FROM table_name WHERE LABEL LIKE '%*%'\nDELETE a.* USING\nDELETE a.*, b.* USING\nDELETE a.* ,b.* USING\nDELETE a.* , b.* USING\nDELETE a.* \/* comment *\/ USING\nDELETE a.* \/* comment *\/, b.* \/*comment*\/ USING\nDELETE a.* \/* comment *\/ ,b.* \/*comment*\/ USING\nDELETE a.* \/* comment *\/ , b.* \/*comment*\/ USING\n\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SELECT * FROM\nSELECT *FROM\nSELECT a.* FROM\nSELECT a.*,b.* FROM\nSELECT a.*, b.* FROM\nSELECT a.*, \/* with a comment *\/ b.* FROM\nSELECT a.*,\/* with a comment *\/b.* FROM\nSELECT a.* \/* comment *\/ FROM\n-- SELECT a.*\/* comment *\/ FROM (This one is not working yet because of https:\/\/github.com\/phpmyadmin\/sql-parser\/issues\/285. Please uncomment when this issue is fixed.)\nSELECT DISTINCT * FROM\nSELECT DISTINCT *FROM\nSELECT DISTINCT a.* FROM\nSELECT DISTINCT a.*,b.* FROM\nSELECT DISTINCT a.*, b.* FROM\nSELECT DISTINCT a.*, \/* with a comment *\/ b.* FROM\nSELECT DISTINCT a.*,\/* with a comment *\/b.* FROM\nSELECT DISTINCT a.* \/* comment *\/ FROM\n-- SELECT DISTINCT a.*\/* comment *\/ FROM (This one is not working yet because of https:\/\/github.com\/phpmyadmin\/sql-parser\/issues\/285. Please uncomment when this issue is fixed.)\nSELECT `*` FROM table_name\nSELECT `*`.* FROM table_name AS `*`\nSELECT COUNT(*) FROM table_name\nSELECT COUNT( * ) FROM table_name\nSELECT COUNT( * \/* comment with *,USING,FROM *\/) FROM table_name\nSELECT COUNT(`*`) FROM table_name\nSELECT 1 FROM table_name WHERE LABEL LIKE '%*%'\nDELETE a.* USING\nDELETE a.*, b.* USING\nDELETE a.* ,b.* USING\nDELETE a.* , b.* USING\nDELETE a.* \/* comment *\/ USING\nDELETE a.* \/* comment *\/, b.* \/*comment*\/ USING\nDELETE a.* \/* comment *\/ ,b.* \/*comment*\/ USING\nDELETE a.* \/* comment *\/ , b.* \/*comment*\/ USING\n\n", + "len": 1348, + "last": 1348, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": 0, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": 0, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "b", + "value": "b", + "keyword": null, + "type": 0, + "flags": 0, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": 0, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "b", + "value": "b", + "keyword": null, + "type": 0, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 83 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 90 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": 0, + "flags": 0, + "position": 91 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 95 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* with a comment *\/", + "value": "\/* with a comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 116 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "b", + "value": "b", + "keyword": null, + "type": 0, + "flags": 0, + "position": 117 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 118 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 119 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 120 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 125 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 126 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 132 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": 0, + "flags": 0, + "position": 133 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 134 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 135 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 136 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* with a comment *\/", + "value": "\/* with a comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 137 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "b", + "value": "b", + "keyword": null, + "type": 0, + "flags": 0, + "position": 157 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 158 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 159 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 160 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 161 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 165 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 166 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 172 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": 0, + "flags": 0, + "position": 173 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 174 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 175 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 176 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 177 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 190 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 191 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 195 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-- SELECT a.*\/* comment *\/ FROM (This one is not working yet because of https:\/\/github.com\/phpmyadmin\/sql-parser\/issues\/285. Please uncomment when this issue is fixed.)", + "value": "-- SELECT a.*\/* comment *\/ FROM (This one is not working yet because of https:\/\/github.com\/phpmyadmin\/sql-parser\/issues\/285. Please uncomment when this issue is fixed.)", + "keyword": null, + "type": 4, + "flags": 4, + "position": 196 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 364 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 365 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 371 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DISTINCT", + "value": "DISTINCT", + "keyword": "DISTINCT", + "type": 1, + "flags": 3, + "position": 372 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 380 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 381 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 382 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 383 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 387 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 388 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 394 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DISTINCT", + "value": "DISTINCT", + "keyword": "DISTINCT", + "type": 1, + "flags": 3, + "position": 395 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 403 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 404 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 405 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 409 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 410 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 416 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DISTINCT", + "value": "DISTINCT", + "keyword": "DISTINCT", + "type": 1, + "flags": 3, + "position": 417 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 425 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": 0, + "flags": 0, + "position": 426 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 427 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 428 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 429 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 430 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 434 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 435 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 441 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DISTINCT", + "value": "DISTINCT", + "keyword": "DISTINCT", + "type": 1, + "flags": 3, + "position": 442 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 450 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": 0, + "flags": 0, + "position": 451 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 452 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 453 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 454 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "b", + "value": "b", + "keyword": null, + "type": 0, + "flags": 0, + "position": 455 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 456 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 457 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 458 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 459 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 463 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 464 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 470 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DISTINCT", + "value": "DISTINCT", + "keyword": "DISTINCT", + "type": 1, + "flags": 3, + "position": 471 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 479 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": 0, + "flags": 0, + "position": 480 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 481 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 482 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 483 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 484 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "b", + "value": "b", + "keyword": null, + "type": 0, + "flags": 0, + "position": 485 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 486 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 487 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 488 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 489 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 493 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 494 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 500 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DISTINCT", + "value": "DISTINCT", + "keyword": "DISTINCT", + "type": 1, + "flags": 3, + "position": 501 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 509 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": 0, + "flags": 0, + "position": 510 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 511 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 512 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 513 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 514 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* with a comment *\/", + "value": "\/* with a comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 515 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 535 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "b", + "value": "b", + "keyword": null, + "type": 0, + "flags": 0, + "position": 536 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 537 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 538 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 539 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 540 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 544 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 545 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 551 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DISTINCT", + "value": "DISTINCT", + "keyword": "DISTINCT", + "type": 1, + "flags": 3, + "position": 552 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 560 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": 0, + "flags": 0, + "position": 561 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 562 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 563 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 564 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* with a comment *\/", + "value": "\/* with a comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 565 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "b", + "value": "b", + "keyword": null, + "type": 0, + "flags": 0, + "position": 585 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 586 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 587 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 588 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 589 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 593 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 594 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 600 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DISTINCT", + "value": "DISTINCT", + "keyword": "DISTINCT", + "type": 1, + "flags": 3, + "position": 601 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 609 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": 0, + "flags": 0, + "position": 610 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 611 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 612 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 613 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 614 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 627 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 628 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 632 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-- SELECT DISTINCT a.*\/* comment *\/ FROM (This one is not working yet because of https:\/\/github.com\/phpmyadmin\/sql-parser\/issues\/285. Please uncomment when this issue is fixed.)", + "value": "-- SELECT DISTINCT a.*\/* comment *\/ FROM (This one is not working yet because of https:\/\/github.com\/phpmyadmin\/sql-parser\/issues\/285. Please uncomment when this issue is fixed.)", + "keyword": null, + "type": 4, + "flags": 4, + "position": 633 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 810 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 811 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 817 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`*`", + "value": "*", + "keyword": null, + "type": 8, + "flags": 2, + "position": 818 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 821 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 822 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 826 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table_name", + "value": "table_name", + "keyword": "TABLE_NAME", + "type": 1, + "flags": 1, + "position": 827 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 837 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 838 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 844 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`*`", + "value": "*", + "keyword": null, + "type": 8, + "flags": 2, + "position": 845 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 848 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 849 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 850 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 851 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 855 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table_name", + "value": "table_name", + "keyword": "TABLE_NAME", + "type": 1, + "flags": 1, + "position": 856 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 866 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 867 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 869 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`*`", + "value": "*", + "keyword": null, + "type": 8, + "flags": 2, + "position": 870 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 873 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 874 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 880 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COUNT", + "value": "COUNT", + "keyword": "COUNT", + "type": 1, + "flags": 33, + "position": 881 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 886 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 887 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 888 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 889 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 890 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 894 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table_name", + "value": "table_name", + "keyword": "TABLE_NAME", + "type": 1, + "flags": 1, + "position": 895 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 905 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 906 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 912 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COUNT", + "value": "COUNT", + "keyword": "COUNT", + "type": 1, + "flags": 33, + "position": 913 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 918 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 919 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 920 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 921 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 922 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 923 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 924 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 928 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table_name", + "value": "table_name", + "keyword": "TABLE_NAME", + "type": 1, + "flags": 1, + "position": 929 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 939 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 940 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 946 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COUNT", + "value": "COUNT", + "keyword": "COUNT", + "type": 1, + "flags": 33, + "position": 947 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 952 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 953 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 954 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 955 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment with *,USING,FROM *\/", + "value": "\/* comment with *,USING,FROM *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 956 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 987 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 988 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 989 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 993 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table_name", + "value": "table_name", + "keyword": "TABLE_NAME", + "type": 1, + "flags": 1, + "position": 994 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1004 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 1005 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1011 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COUNT", + "value": "COUNT", + "keyword": "COUNT", + "type": 1, + "flags": 33, + "position": 1012 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 1017 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`*`", + "value": "*", + "keyword": null, + "type": 8, + "flags": 2, + "position": 1018 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 1021 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1022 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 1023 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1027 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table_name", + "value": "table_name", + "keyword": "TABLE_NAME", + "type": 1, + "flags": 1, + "position": 1028 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1038 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 1039 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1045 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 1046 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1047 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 1048 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1052 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table_name", + "value": "table_name", + "keyword": "TABLE_NAME", + "type": 1, + "flags": 1, + "position": 1053 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1063 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 1064 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1069 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LABEL", + "value": "LABEL", + "keyword": null, + "type": 0, + "flags": 0, + "position": 1070 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1075 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LIKE", + "value": "LIKE", + "keyword": "LIKE", + "type": 1, + "flags": 3, + "position": 1076 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1080 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'%*%'", + "value": "%*%", + "keyword": null, + "type": 7, + "flags": 1, + "position": 1081 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1086 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": 1, + "flags": 3, + "position": 1087 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1093 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": 0, + "flags": 0, + "position": 1094 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 1095 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 1096 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1097 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USING", + "value": "USING", + "keyword": "USING", + "type": 1, + "flags": 3, + "position": 1098 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1103 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": 1, + "flags": 3, + "position": 1104 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1110 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": 0, + "flags": 0, + "position": 1111 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 1112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 1113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 1114 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1115 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "b", + "value": "b", + "keyword": null, + "type": 0, + "flags": 0, + "position": 1116 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 1117 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 1118 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1119 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USING", + "value": "USING", + "keyword": "USING", + "type": 1, + "flags": 3, + "position": 1120 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1125 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": 1, + "flags": 3, + "position": 1126 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1132 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": 0, + "flags": 0, + "position": 1133 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 1134 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 1135 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1136 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 1137 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "b", + "value": "b", + "keyword": null, + "type": 0, + "flags": 0, + "position": 1138 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 1139 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 1140 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1141 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USING", + "value": "USING", + "keyword": "USING", + "type": 1, + "flags": 3, + "position": 1142 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1147 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": 1, + "flags": 3, + "position": 1148 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1154 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": 0, + "flags": 0, + "position": 1155 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 1156 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 1157 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1158 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 1159 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1160 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "b", + "value": "b", + "keyword": null, + "type": 0, + "flags": 0, + "position": 1161 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 1162 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 1163 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1164 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USING", + "value": "USING", + "keyword": "USING", + "type": 1, + "flags": 3, + "position": 1165 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1170 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": 1, + "flags": 3, + "position": 1171 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1177 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": 0, + "flags": 0, + "position": 1178 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 1179 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 1180 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1181 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 1182 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1195 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USING", + "value": "USING", + "keyword": "USING", + "type": 1, + "flags": 3, + "position": 1196 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1201 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": 1, + "flags": 3, + "position": 1202 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1208 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": 0, + "flags": 0, + "position": 1209 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 1210 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 1211 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1212 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 1213 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 1226 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1227 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "b", + "value": "b", + "keyword": null, + "type": 0, + "flags": 0, + "position": 1228 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 1229 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 1230 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1231 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/*comment*\/", + "value": "\/*comment*\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 1232 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1243 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USING", + "value": "USING", + "keyword": "USING", + "type": 1, + "flags": 3, + "position": 1244 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1249 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": 1, + "flags": 3, + "position": 1250 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1256 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": 0, + "flags": 0, + "position": 1257 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 1258 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 1259 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1260 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 1261 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1274 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 1275 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "b", + "value": "b", + "keyword": null, + "type": 0, + "flags": 0, + "position": 1276 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 1277 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 1278 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1279 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/*comment*\/", + "value": "\/*comment*\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 1280 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1291 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USING", + "value": "USING", + "keyword": "USING", + "type": 1, + "flags": 3, + "position": 1292 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1297 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": 1, + "flags": 3, + "position": 1298 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1304 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": 0, + "flags": 0, + "position": 1305 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 1306 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 1307 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1308 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 1309 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1322 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 1323 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1324 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "b", + "value": "b", + "keyword": null, + "type": 0, + "flags": 0, + "position": 1325 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 1326 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 1327 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1328 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/*comment*\/", + "value": "\/*comment*\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 1329 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1340 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USING", + "value": "USING", + "keyword": "USING", + "type": 1, + "flags": 3, + "position": 1341 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 1346 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 382, + "idx": 0 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": null, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexString.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexString.in new file mode 100644 index 0000000000..1aa9f71a52 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexString.in @@ -0,0 +1 @@ +SELECT 'foo', "bar", "foo\\ bar" \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexString.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexString.out new file mode 100644 index 0000000000..ef595a3f94 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexString.out @@ -0,0 +1,129 @@ +{ + "query": "SELECT 'foo', \"bar\", \"foo\\\\ bar\"", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SELECT 'foo', \"bar\", \"foo\\\\ bar\"", + "len": 32, + "last": 32, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'foo'", + "value": "foo", + "keyword": null, + "type": 7, + "flags": 1, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"bar\"", + "value": "bar", + "keyword": null, + "type": 7, + "flags": 2, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"foo\\\\ bar\"", + "value": "foo\\ bar", + "keyword": null, + "type": 7, + "flags": 2, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 10, + "idx": 0 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": null, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexStringErr1.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexStringErr1.in new file mode 100644 index 0000000000..861a0b88c4 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexStringErr1.in @@ -0,0 +1 @@ +SELECT 'foo', "bar", "foo\\ bar \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexStringErr1.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexStringErr1.out new file mode 100644 index 0000000000..a3086d5dea --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexStringErr1.out @@ -0,0 +1,136 @@ +{ + "query": "SELECT 'foo', \"bar\", \"foo\\\\ bar", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SELECT 'foo', \"bar\", \"foo\\\\ bar", + "len": 31, + "last": 32, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'foo'", + "value": "foo", + "keyword": null, + "type": 7, + "flags": 1, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"bar\"", + "value": "bar", + "keyword": null, + "type": 7, + "flags": 2, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"foo\\\\ bar", + "value": "foo\\ ba", + "keyword": null, + "type": 7, + "flags": 2, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 10, + "idx": 0 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": null, + "errors": { + "lexer": [ + [ + "Ending quote \" was expected.", + "", + 31, + 0 + ] + ], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexSymbol.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexSymbol.in new file mode 100644 index 0000000000..21f0f54e91 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexSymbol.in @@ -0,0 +1,2 @@ +SET @idx := 1; +SELECT @idx, @`idx`, @'idx', @@hostname \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexSymbol.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexSymbol.out new file mode 100644 index 0000000000..5622cbace6 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexSymbol.out @@ -0,0 +1,237 @@ +{ + "query": "SET @idx := 1;\nSELECT @idx, @`idx`, @'idx', @@hostname", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SET @idx := 1;\nSELECT @idx, @`idx`, @'idx', @@hostname", + "len": 54, + "last": 54, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": 1, + "flags": 11, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 3 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@idx", + "value": "idx", + "keyword": null, + "type": 8, + "flags": 1, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ":=", + "value": ":=", + "keyword": null, + "type": 2, + "flags": 8, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@idx", + "value": "idx", + "keyword": null, + "type": 8, + "flags": 1, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@`idx`", + "value": "idx", + "keyword": null, + "type": 8, + "flags": 1, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@'idx'", + "value": "idx", + "keyword": null, + "type": 8, + "flags": 1, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@@hostname", + "value": "hostname", + "keyword": null, + "type": 8, + "flags": 9, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 22, + "idx": 0 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": null, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexSymbolErr1.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexSymbolErr1.in new file mode 100644 index 0000000000..f61f8ad754 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexSymbolErr1.in @@ -0,0 +1,2 @@ +SET @idx := 1; +SELECT @idx, @`idx`, @'idx \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexSymbolErr1.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexSymbolErr1.out new file mode 100644 index 0000000000..ad595a7f03 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexSymbolErr1.out @@ -0,0 +1,217 @@ +{ + "query": "SET @idx := 1;\nSELECT @idx, @`idx`, @'idx", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SET @idx := 1;\nSELECT @idx, @`idx`, @'idx", + "len": 41, + "last": 42, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": 1, + "flags": 11, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 3 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@idx", + "value": "idx", + "keyword": null, + "type": 8, + "flags": 1, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ":=", + "value": ":=", + "keyword": null, + "type": 2, + "flags": 8, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@idx", + "value": "idx", + "keyword": null, + "type": 8, + "flags": 1, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@`idx`", + "value": "idx", + "keyword": null, + "type": 8, + "flags": 1, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@'idx", + "value": "id", + "keyword": null, + "type": 8, + "flags": 1, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 19, + "idx": 0 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": null, + "errors": { + "lexer": [ + [ + "Ending quote ' was expected.", + "", + 41, + 0 + ] + ], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexSymbolErr2.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexSymbolErr2.in new file mode 100644 index 0000000000..ceb51ab3e9 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexSymbolErr2.in @@ -0,0 +1,2 @@ +SET @idx := 1; +SELECT @idx, @`idx`, @ \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexSymbolErr2.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexSymbolErr2.out new file mode 100644 index 0000000000..f4a62acfb5 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexSymbolErr2.out @@ -0,0 +1,217 @@ +{ + "query": "SET @idx := 1;\nSELECT @idx, @`idx`, @ ", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SET @idx := 1;\nSELECT @idx, @`idx`, @ ", + "len": 38, + "last": 38, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": 1, + "flags": 11, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 3 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@idx", + "value": "idx", + "keyword": null, + "type": 8, + "flags": 1, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ":=", + "value": ":=", + "keyword": null, + "type": 2, + "flags": 8, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@idx", + "value": "idx", + "keyword": null, + "type": 8, + "flags": 1, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@`idx`", + "value": "idx", + "keyword": null, + "type": 8, + "flags": 1, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@", + "value": "", + "keyword": null, + "type": 8, + "flags": 1, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 19, + "idx": 0 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": null, + "errors": { + "lexer": [ + [ + "Variable name was expected.", + " ", + 37, + 0 + ] + ], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexSymbolErr3.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexSymbolErr3.in new file mode 100644 index 0000000000..20bddacb4d --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexSymbolErr3.in @@ -0,0 +1 @@ +SELECT `idx \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexSymbolErr3.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexSymbolErr3.out new file mode 100644 index 0000000000..c11efeab60 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexSymbolErr3.out @@ -0,0 +1,82 @@ +{ + "query": "SELECT `idx", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SELECT `idx", + "len": 11, + "last": 12, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`idx", + "value": "id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 4, + "idx": 0 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": null, + "errors": { + "lexer": [ + [ + "Ending quote ` was expected.", + "", + 11, + 0 + ] + ], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexSymbolUser.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexSymbolUser.in new file mode 100644 index 0000000000..a0be410f19 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexSymbolUser.in @@ -0,0 +1 @@ +CREATE USER 'user'@'hostname' IDENTIFIED BY 'password'; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexSymbolUser.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexSymbolUser.out new file mode 100644 index 0000000000..102d206596 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexSymbolUser.out @@ -0,0 +1,156 @@ +{ + "query": "CREATE USER 'user'@'hostname' IDENTIFIED BY 'password';", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "CREATE USER 'user'@'hostname' IDENTIFIED BY 'password';", + "len": 55, + "last": 55, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USER", + "value": "USER", + "keyword": "USER", + "type": 1, + "flags": 33, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'user'@'hostname'", + "value": "user@hostname", + "keyword": null, + "type": 8, + "flags": 4, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IDENTIFIED", + "value": "IDENTIFIED", + "keyword": "IDENTIFIED", + "type": 1, + "flags": 1, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "BY", + "value": "BY", + "keyword": "BY", + "type": 1, + "flags": 3, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'password'", + "value": "password", + "keyword": null, + "type": 7, + "flags": 1, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 13, + "idx": 0 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": null, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexUtf8.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexUtf8.in new file mode 100644 index 0000000000..9cf478e72e --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexUtf8.in @@ -0,0 +1 @@ +select * from école \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexUtf8.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexUtf8.out new file mode 100644 index 0000000000..bac93b7686 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexUtf8.out @@ -0,0 +1,118 @@ +{ + "query": "select * from école", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": { + "@type": "PhpMyAdmin\\SqlParser\\UtfString", + "str": "select * from école", + "byteIdx": 19, + "charIdx": 18, + "byteLen": 20, + "charLen": 19 + }, + "len": 19, + "last": 19, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "select", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "from", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "école", + "value": "école", + "keyword": null, + "type": 0, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 8, + "idx": 0 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": null, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexWhitespace.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexWhitespace.in new file mode 100644 index 0000000000..a66a81454a --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexWhitespace.in @@ -0,0 +1,10 @@ + + + +SELECT + 'w h i t e s p a c e' + + + + + \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexWhitespace.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexWhitespace.out new file mode 100644 index 0000000000..3d58df126c --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexWhitespace.out @@ -0,0 +1,93 @@ +{ + "query": "\n\n\nSELECT \n\t\t'w h i t e\t\ts p a c e'\n\n\t\t\n\t\t\t\n \n ", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "\n\n\nSELECT \n\t\t'w h i t e\t\ts p a c e'\n\n\t\t\n\t\t\t\n \n ", + "len": 79, + "last": 79, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 3 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " \n\t\t", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'w h i t e\t\ts p a c e'", + "value": "w h i t e\t\ts p a c e", + "keyword": null, + "type": 7, + "flags": 1, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n\t\t\n\t\t\t\n \n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 6, + "idx": 0 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": null, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexWildcardThenComment.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexWildcardThenComment.in new file mode 100644 index 0000000000..1f9e06b25d --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexWildcardThenComment.in @@ -0,0 +1,33 @@ +SELECT */* comment */ + +SELECT /* comment */* + +SELECT 2*/* comment */3 + +SELECT 2/* comment */*3 + +SELECT */* +comment +on +multiple +lines +*/FROM + +DELETE foo.*/* foo */ USING + +DELETE foo.*/* foo */,bar.*/*bar*/ USING + +SELECT `*`/*with comment*/ AS star_field + +SELECT `*`,*/*with comment*/ + +DELETE a.*/*multi +line /* with C open tag +comment inside */ USING + +SELECT 2*/* operator */3 + 3/* operator */*2,/* start wildcard */*/* end wildcard */ + +SELECT `*`/*a*/*/*b*/`*` + +-- invalid queries +/* SELECT */* \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexWildcardThenComment.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexWildcardThenComment.out new file mode 100644 index 0000000000..7682d555bd --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/lexer/lexWildcardThenComment.out @@ -0,0 +1,1020 @@ +{ + "query": "SELECT *\/* comment *\/\n\nSELECT \/* comment *\/*\n\nSELECT 2*\/* comment *\/3\n\nSELECT 2\/* comment *\/*3\n\nSELECT *\/*\ncomment\non\nmultiple\nlines\n*\/FROM\n\nDELETE foo.*\/* foo *\/ USING\n\nDELETE foo.*\/* foo *\/,bar.*\/*bar*\/ USING\n\nSELECT `*`\/*with comment*\/ AS star_field\n\nSELECT `*`,*\/*with comment*\/\n\nDELETE a.*\/*multi\nline \/* with C open tag\ncomment inside *\/ USING\n\nSELECT 2*\/* operator *\/3 + 3\/* operator *\/*2,\/* start wildcard *\/*\/* end wildcard *\/\n\nSELECT `*`\/*a*\/*\/*b*\/`*`\n\n-- invalid queries\n\/* SELECT *\/*", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SELECT *\/* comment *\/\n\nSELECT \/* comment *\/*\n\nSELECT 2*\/* comment *\/3\n\nSELECT 2\/* comment *\/*3\n\nSELECT *\/*\ncomment\non\nmultiple\nlines\n*\/FROM\n\nDELETE foo.*\/* foo *\/ USING\n\nDELETE foo.*\/* foo *\/,bar.*\/*bar*\/ USING\n\nSELECT `*`\/*with comment*\/ AS star_field\n\nSELECT `*`,*\/*with comment*\/\n\nDELETE a.*\/*multi\nline \/* with C open tag\ncomment inside *\/ USING\n\nSELECT 2*\/* operator *\/3 + 3\/* operator *\/*2,\/* start wildcard *\/*\/* end wildcard *\/\n\nSELECT `*`\/*a*\/*\/*b*\/`*`\n\n-- invalid queries\n\/* SELECT *\/*", + "len": 495, + "last": 495, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 1, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 1, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": 6, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 1, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3", + "value": 3, + "keyword": null, + "type": 6, + "flags": 0, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": 6, + "flags": 0, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 1, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3", + "value": 3, + "keyword": null, + "type": 6, + "flags": 0, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 102 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 103 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/*\ncomment\non\nmultiple\nlines\n*\/", + "value": "\/*\ncomment\non\nmultiple\nlines\n*\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 104 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 135 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 139 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": 1, + "flags": 3, + "position": 141 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 147 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "foo", + "value": "foo", + "keyword": null, + "type": 0, + "flags": 0, + "position": 148 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 151 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 152 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* foo *\/", + "value": "\/* foo *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 153 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 162 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USING", + "value": "USING", + "keyword": "USING", + "type": 1, + "flags": 3, + "position": 163 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 168 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": 1, + "flags": 3, + "position": 170 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 176 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "foo", + "value": "foo", + "keyword": null, + "type": 0, + "flags": 0, + "position": 177 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 180 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 181 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* foo *\/", + "value": "\/* foo *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 182 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 191 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "bar", + "value": "bar", + "keyword": null, + "type": 0, + "flags": 0, + "position": 192 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 195 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 196 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/*bar*\/", + "value": "\/*bar*\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 197 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 204 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USING", + "value": "USING", + "keyword": "USING", + "type": 1, + "flags": 3, + "position": 205 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 210 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 212 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 218 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`*`", + "value": "*", + "keyword": null, + "type": 8, + "flags": 2, + "position": 219 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/*with comment*\/", + "value": "\/*with comment*\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 222 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 238 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 239 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 241 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "star_field", + "value": "star_field", + "keyword": null, + "type": 0, + "flags": 0, + "position": 242 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 252 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 254 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 260 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`*`", + "value": "*", + "keyword": null, + "type": 8, + "flags": 2, + "position": 261 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 264 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 1, + "position": 265 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/*with comment*\/", + "value": "\/*with comment*\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 266 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 282 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": 1, + "flags": 3, + "position": 284 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 290 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": 0, + "flags": 0, + "position": 291 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 292 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 293 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/*multi\nline \/* with C open tag\ncomment inside *\/", + "value": "\/*multi\nline \/* with C open tag\ncomment inside *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 294 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 343 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USING", + "value": "USING", + "keyword": "USING", + "type": 1, + "flags": 3, + "position": 344 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 349 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 351 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 357 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": 6, + "flags": 0, + "position": 358 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 1, + "position": 359 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* operator *\/", + "value": "\/* operator *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 360 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3", + "value": 3, + "keyword": null, + "type": 6, + "flags": 0, + "position": 374 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 375 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "+", + "value": "+", + "keyword": null, + "type": 2, + "flags": 1, + "position": 376 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 377 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3", + "value": 3, + "keyword": null, + "type": 6, + "flags": 0, + "position": 378 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* operator *\/", + "value": "\/* operator *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 379 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 1, + "position": 393 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": 6, + "flags": 0, + "position": 394 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 395 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* start wildcard *\/", + "value": "\/* start wildcard *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 396 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 1, + "position": 416 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* end wildcard *\/", + "value": "\/* end wildcard *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 417 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 435 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 437 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 443 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`*`", + "value": "*", + "keyword": null, + "type": 8, + "flags": 2, + "position": 444 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/*a*\/", + "value": "\/*a*\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 447 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 1, + "position": 452 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/*b*\/", + "value": "\/*b*\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 453 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`*`", + "value": "*", + "keyword": null, + "type": 8, + "flags": 2, + "position": 458 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 461 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-- invalid queries", + "value": "-- invalid queries", + "keyword": null, + "type": 4, + "flags": 4, + "position": 463 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 481 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* SELECT *\/", + "value": "\/* SELECT *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 482 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 1, + "position": 494 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 109, + "idx": 0 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": null, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/misc/parseParameter.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/misc/parseParameter.in new file mode 100644 index 0000000000..0a343822b3 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/misc/parseParameter.in @@ -0,0 +1 @@ +INSERT INTO `person` (`firstname`, `lastname`, `email`) VALUES (:firstname, :lastname, :email); \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/misc/parseParameter.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/misc/parseParameter.out new file mode 100644 index 0000000000..5cad6dd2ca --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/misc/parseParameter.out @@ -0,0 +1,702 @@ +{ + "query": "INSERT INTO `person` (`firstname`, `lastname`, `email`) VALUES (:firstname, :lastname, :email);", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "INSERT INTO `person` (`firstname`, `lastname`, `email`) VALUES (:firstname, :lastname, :email);", + "len": 95, + "last": 95, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INSERT", + "value": "INSERT", + "keyword": "INSERT", + "type": 1, + "flags": 35, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": 1, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`person`", + "value": "person", + "keyword": null, + "type": 8, + "flags": 2, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`firstname`", + "value": "firstname", + "keyword": null, + "type": 8, + "flags": 2, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`lastname`", + "value": "lastname", + "keyword": null, + "type": 8, + "flags": 2, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`email`", + "value": "email", + "keyword": null, + "type": 8, + "flags": 2, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": 1, + "flags": 35, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ":firstname", + "value": "firstname", + "keyword": null, + "type": 8, + "flags": 16, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ":lastname", + "value": "lastname", + "keyword": null, + "type": 8, + "flags": 16, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ":email", + "value": "email", + "keyword": null, + "type": 8, + "flags": 16, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 29, + "idx": 29 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "OPTIONS": { + "LOW_PRIORITY": 1, + "DELAYED": 2, + "HIGH_PRIORITY": 3, + "IGNORE": 4 + }, + "into": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "FIELDS_OPTIONS": { + "TERMINATED BY": [ + 1, + "expr" + ], + "OPTIONALLY": 2, + "ENCLOSED BY": [ + 3, + "expr" + ], + "ESCAPED BY": [ + 4, + "expr" + ] + }, + "LINES_OPTIONS": { + "STARTING BY": [ + 1, + "expr" + ], + "TERMINATED BY": [ + 2, + "expr" + ] + }, + "type": null, + "dest": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "person", + "column": null, + "expr": "`person`", + "alias": null, + "function": null, + "subquery": null + }, + "columns": [ + "firstname", + "lastname", + "email" + ], + "values": null, + "fields_options": null, + "fields_keyword": null, + "lines_options": null + }, + "values": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "raw": [ + ":firstname", + ":lastname", + ":email" + ], + "values": [ + "firstname", + "lastname", + "email" + ] + } + ], + "set": null, + "select": null, + "onDuplicateSet": null, + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 26 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parse.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parse.in new file mode 100644 index 0000000000..027b7d63fd --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parse.in @@ -0,0 +1 @@ +SELECT 1; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parse.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parse.out new file mode 100644 index 0000000000..ce9ad3aaff --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parse.out @@ -0,0 +1,584 @@ +{ + "query": "SELECT 1;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SELECT 1;", + "len": 9, + "last": 9, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 5, + "idx": 5 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "1", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [], + "index_hints": null, + "partition": null, + "where": null, + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 2 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parse2.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parse2.in new file mode 100644 index 0000000000..bc7e42ecc0 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parse2.in @@ -0,0 +1 @@ +(SELECT 1);((SELECT 2)); \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parse2.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parse2.out new file mode 100644 index 0000000000..25e9f46203 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parse2.out @@ -0,0 +1,868 @@ +{ + "query": "(SELECT 1);((SELECT 2));", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "(SELECT 1);((SELECT 2));", + "len": 24, + "last": 24, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 1 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": 6, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 15, + "idx": 15 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "1", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [], + "index_hints": null, + "partition": null, + "where": null, + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "2", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [], + "index_hints": null, + "partition": null, + "where": null, + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 5, + "last": 12 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter.in new file mode 100644 index 0000000000..6e2afe8894 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter.in @@ -0,0 +1,3 @@ +ALTER TABLE `actor` + ADD PRIMARY KEY (`actor_id`), + ADD KEY `idx_actor_last_name` (`last_name`); \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter.out new file mode 100644 index 0000000000..6fa3544420 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter.out @@ -0,0 +1,955 @@ +{ + "query": "ALTER TABLE `actor`\n ADD PRIMARY KEY (`actor_id`),\n ADD KEY `idx_actor_last_name` (`last_name`);", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "ALTER TABLE `actor`\n ADD PRIMARY KEY (`actor_id`),\n ADD KEY `idx_actor_last_name` (`last_name`);", + "len": 102, + "last": 102, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": 1, + "flags": 3, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`actor`", + "value": "actor", + "keyword": null, + "type": 8, + "flags": 2, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ADD", + "value": "ADD", + "keyword": "ADD", + "type": 1, + "flags": 3, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PRIMARY KEY", + "value": "PRIMARY KEY", + "keyword": "PRIMARY KEY", + "type": 1, + "flags": 23, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`actor_id`", + "value": "actor_id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ADD", + "value": "ADD", + "keyword": "ADD", + "type": 1, + "flags": 3, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "KEY", + "value": "KEY", + "keyword": "KEY", + "type": 1, + "flags": 19, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`idx_actor_last_name`", + "value": "idx_actor_last_name", + "keyword": null, + "type": 8, + "flags": 2, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`last_name`", + "value": "last_name", + "keyword": null, + "type": 8, + "flags": 2, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 101 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 26, + "idx": 26 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "actor", + "column": null, + "expr": "`actor`", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var" + ], + "CHARSET": [ + 1, + "var" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var" + ], + "DEFAULT CHARSET": [ + 1, + "var" + ], + "UPGRADE": [ + 1, + "var" + ], + "COLLATE": [ + 2, + "var" + ], + "DEFAULT COLLATE": [ + 2, + "var" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 1, + "var=" + ], + "AVG_ROW_LENGTH": [ + 1, + "var" + ], + "MAX_ROWS": [ + 1, + "var" + ], + "ROW_FORMAT": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "ADD": 1, + "ALTER": 1, + "ANALYZE": 1, + "CHANGE": 1, + "CHARSET": 1, + "CHECK": 1, + "COALESCE": 1, + "CONVERT": 1, + "DEFAULT CHARSET": 1, + "DISABLE": 1, + "DISCARD": 1, + "DROP": 1, + "ENABLE": 1, + "IMPORT": 1, + "MODIFY": 1, + "OPTIMIZE": 1, + "ORDER": 1, + "PARTITION": 1, + "REBUILD": 1, + "REMOVE": 1, + "RENAME": 1, + "REORGANIZE": 1, + "REPAIR": 1, + "UPGRADE": 1, + "COLUMN": 2, + "CONSTRAINT": 2, + "DEFAULT": 2, + "TO": 2, + "BY": 2, + "FOREIGN": 2, + "FULLTEXT": 2, + "KEY": 2, + "KEYS": 2, + "PARTITIONING": 2, + "PRIMARY KEY": 2, + "SPATIAL": 2, + "TABLESPACE": 2, + "INDEX": 2, + "CHARACTER SET": 3 + }, + "USER_OPTIONS": { + "ATTRIBUTE": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "REQUIRE": [ + 1, + "var" + ], + "BY": [ + 2, + "expr" + ], + "PASSWORD": [ + 2, + "var" + ], + "WITH": [ + 2, + "var" + ], + "ACCOUNT": 1, + "DEFAULT": 1, + "LOCK": 2, + "UNLOCK": 2, + "IDENTIFIED": 3 + }, + "VIEW_OPTIONS": { + "AS": 1 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "ADD", + "2": "PRIMARY KEY" + } + }, + "field": null, + "unknown": [ + { + "@type": "@12" + }, + { + "@type": "@13" + }, + { + "@type": "@14" + } + ] + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var" + ], + "CHARSET": [ + 1, + "var" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var" + ], + "DEFAULT CHARSET": [ + 1, + "var" + ], + "UPGRADE": [ + 1, + "var" + ], + "COLLATE": [ + 2, + "var" + ], + "DEFAULT COLLATE": [ + 2, + "var" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 1, + "var=" + ], + "AVG_ROW_LENGTH": [ + 1, + "var" + ], + "MAX_ROWS": [ + 1, + "var" + ], + "ROW_FORMAT": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "ADD": 1, + "ALTER": 1, + "ANALYZE": 1, + "CHANGE": 1, + "CHARSET": 1, + "CHECK": 1, + "COALESCE": 1, + "CONVERT": 1, + "DEFAULT CHARSET": 1, + "DISABLE": 1, + "DISCARD": 1, + "DROP": 1, + "ENABLE": 1, + "IMPORT": 1, + "MODIFY": 1, + "OPTIMIZE": 1, + "ORDER": 1, + "PARTITION": 1, + "REBUILD": 1, + "REMOVE": 1, + "RENAME": 1, + "REORGANIZE": 1, + "REPAIR": 1, + "UPGRADE": 1, + "COLUMN": 2, + "CONSTRAINT": 2, + "DEFAULT": 2, + "TO": 2, + "BY": 2, + "FOREIGN": 2, + "FULLTEXT": 2, + "KEY": 2, + "KEYS": 2, + "PARTITIONING": 2, + "PRIMARY KEY": 2, + "SPATIAL": 2, + "TABLESPACE": 2, + "INDEX": 2, + "CHARACTER SET": 3 + }, + "USER_OPTIONS": { + "ATTRIBUTE": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "REQUIRE": [ + 1, + "var" + ], + "BY": [ + 2, + "expr" + ], + "PASSWORD": [ + 2, + "var" + ], + "WITH": [ + 2, + "var" + ], + "ACCOUNT": 1, + "DEFAULT": 1, + "LOCK": 2, + "UNLOCK": 2, + "IDENTIFIED": 3 + }, + "VIEW_OPTIONS": { + "AS": 1 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "ADD", + "2": "KEY" + } + }, + "field": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "idx_actor_last_name", + "expr": "`idx_actor_last_name`", + "alias": null, + "function": null, + "subquery": null + }, + "unknown": [ + { + "@type": "@23" + }, + { + "@type": "@24" + }, + { + "@type": "@25" + } + ] + } + ], + "OPTIONS": { + "ONLINE": 1, + "OFFLINE": 1, + "IGNORE": 2, + "DATABASE": 3, + "EVENT": 3, + "FUNCTION": 3, + "PROCEDURE": 3, + "SERVER": 3, + "TABLE": 3, + "TABLESPACE": 3, + "USER": 3, + "VIEW": 3 + }, + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 0, + "last": 24 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter10.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter10.in new file mode 100644 index 0000000000..69c2f607c9 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter10.in @@ -0,0 +1 @@ +ALTER TABLE `database`.`table` MODIFY `field` INT(11) AUTO_INCREMENT PRIMARY KEY; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter10.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter10.out new file mode 100644 index 0000000000..96e3a6df91 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter10.out @@ -0,0 +1,782 @@ +{ + "query": "ALTER TABLE `database`.`table` MODIFY `field` INT(11) AUTO_INCREMENT PRIMARY KEY;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "ALTER TABLE `database`.`table` MODIFY `field` INT(11) AUTO_INCREMENT PRIMARY KEY;", + "len": 81, + "last": 81, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": 1, + "flags": 3, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`database`", + "value": "database", + "keyword": null, + "type": 8, + "flags": 2, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`table`", + "value": "table", + "keyword": null, + "type": 8, + "flags": 2, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "MODIFY", + "value": "MODIFY", + "keyword": "MODIFY", + "type": 1, + "flags": 1, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`field`", + "value": "field", + "keyword": null, + "type": 8, + "flags": 2, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INT", + "value": "INT", + "keyword": "INT", + "type": 1, + "flags": 11, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "11", + "value": 11, + "keyword": null, + "type": 6, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AUTO_INCREMENT", + "value": "AUTO_INCREMENT", + "keyword": "AUTO_INCREMENT", + "type": 1, + "flags": 1, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PRIMARY KEY", + "value": "PRIMARY KEY", + "keyword": "PRIMARY KEY", + "type": 1, + "flags": 23, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 22, + "idx": 22 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": "database", + "table": "table", + "column": null, + "expr": "`database`.`table`", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var" + ], + "CHARSET": [ + 1, + "var" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var" + ], + "DEFAULT CHARSET": [ + 1, + "var" + ], + "UPGRADE": [ + 1, + "var" + ], + "COLLATE": [ + 2, + "var" + ], + "DEFAULT COLLATE": [ + 2, + "var" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 1, + "var=" + ], + "AVG_ROW_LENGTH": [ + 1, + "var" + ], + "MAX_ROWS": [ + 1, + "var" + ], + "ROW_FORMAT": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "ADD": 1, + "ALTER": 1, + "ANALYZE": 1, + "CHANGE": 1, + "CHARSET": 1, + "CHECK": 1, + "COALESCE": 1, + "CONVERT": 1, + "DEFAULT CHARSET": 1, + "DISABLE": 1, + "DISCARD": 1, + "DROP": 1, + "ENABLE": 1, + "IMPORT": 1, + "MODIFY": 1, + "OPTIMIZE": 1, + "ORDER": 1, + "PARTITION": 1, + "REBUILD": 1, + "REMOVE": 1, + "RENAME": 1, + "REORGANIZE": 1, + "REPAIR": 1, + "UPGRADE": 1, + "COLUMN": 2, + "CONSTRAINT": 2, + "DEFAULT": 2, + "TO": 2, + "BY": 2, + "FOREIGN": 2, + "FULLTEXT": 2, + "KEY": 2, + "KEYS": 2, + "PARTITIONING": 2, + "PRIMARY KEY": 2, + "SPATIAL": 2, + "TABLESPACE": 2, + "INDEX": 2, + "CHARACTER SET": 3 + }, + "USER_OPTIONS": { + "ATTRIBUTE": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "REQUIRE": [ + 1, + "var" + ], + "BY": [ + 2, + "expr" + ], + "PASSWORD": [ + 2, + "var" + ], + "WITH": [ + 2, + "var" + ], + "ACCOUNT": 1, + "DEFAULT": 1, + "LOCK": 2, + "UNLOCK": 2, + "IDENTIFIED": 3 + }, + "VIEW_OPTIONS": { + "AS": 1 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "MODIFY" + } + }, + "field": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "field", + "expr": "`field`", + "alias": null, + "function": null, + "subquery": null + }, + "unknown": [ + { + "@type": "@14" + }, + { + "@type": "@15" + }, + { + "@type": "@16" + }, + { + "@type": "@17" + }, + { + "@type": "@18" + }, + { + "@type": "@19" + }, + { + "@type": "@20" + }, + { + "@type": "@21" + } + ] + } + ], + "OPTIONS": { + "ONLINE": 1, + "OFFLINE": 1, + "IGNORE": 2, + "DATABASE": 3, + "EVENT": 3, + "FUNCTION": 3, + "PROCEDURE": 3, + "SERVER": 3, + "TABLE": 3, + "TABLESPACE": 3, + "USER": 3, + "VIEW": 3 + }, + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 0, + "last": 20 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter11.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter11.in new file mode 100644 index 0000000000..2af686e646 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter11.in @@ -0,0 +1 @@ +ALTER TABLE `actor` ADD `last_update2` SET ('value1','value2','value3') NOT NULL AFTER last_update \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter11.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter11.out new file mode 100644 index 0000000000..05b36ac1c9 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter11.out @@ -0,0 +1,812 @@ +{ + "query": "ALTER TABLE `actor` ADD `last_update2` SET ('value1','value2','value3') NOT NULL AFTER last_update", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "ALTER TABLE `actor` ADD `last_update2` SET ('value1','value2','value3') NOT NULL AFTER last_update", + "len": 98, + "last": 98, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": 1, + "flags": 3, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`actor`", + "value": "actor", + "keyword": null, + "type": 8, + "flags": 2, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ADD", + "value": "ADD", + "keyword": "ADD", + "type": 1, + "flags": 3, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`last_update2`", + "value": "last_update2", + "keyword": null, + "type": 8, + "flags": 2, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": 1, + "flags": 11, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'value1'", + "value": "value1", + "keyword": null, + "type": 7, + "flags": 1, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'value2'", + "value": "value2", + "keyword": null, + "type": 7, + "flags": 1, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'value3'", + "value": "value3", + "keyword": null, + "type": 7, + "flags": 1, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": 1, + "flags": 7, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AFTER", + "value": "AFTER", + "keyword": "AFTER", + "type": 1, + "flags": 1, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "last_update", + "value": "last_update", + "keyword": null, + "type": 0, + "flags": 0, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 26, + "idx": 26 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "actor", + "column": null, + "expr": "`actor`", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var" + ], + "CHARSET": [ + 1, + "var" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var" + ], + "DEFAULT CHARSET": [ + 1, + "var" + ], + "UPGRADE": [ + 1, + "var" + ], + "COLLATE": [ + 2, + "var" + ], + "DEFAULT COLLATE": [ + 2, + "var" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 1, + "var=" + ], + "AVG_ROW_LENGTH": [ + 1, + "var" + ], + "MAX_ROWS": [ + 1, + "var" + ], + "ROW_FORMAT": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "ADD": 1, + "ALTER": 1, + "ANALYZE": 1, + "CHANGE": 1, + "CHARSET": 1, + "CHECK": 1, + "COALESCE": 1, + "CONVERT": 1, + "DEFAULT CHARSET": 1, + "DISABLE": 1, + "DISCARD": 1, + "DROP": 1, + "ENABLE": 1, + "IMPORT": 1, + "MODIFY": 1, + "OPTIMIZE": 1, + "ORDER": 1, + "PARTITION": 1, + "REBUILD": 1, + "REMOVE": 1, + "RENAME": 1, + "REORGANIZE": 1, + "REPAIR": 1, + "UPGRADE": 1, + "COLUMN": 2, + "CONSTRAINT": 2, + "DEFAULT": 2, + "TO": 2, + "BY": 2, + "FOREIGN": 2, + "FULLTEXT": 2, + "KEY": 2, + "KEYS": 2, + "PARTITIONING": 2, + "PRIMARY KEY": 2, + "SPATIAL": 2, + "TABLESPACE": 2, + "INDEX": 2, + "CHARACTER SET": 3 + }, + "USER_OPTIONS": { + "ATTRIBUTE": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "REQUIRE": [ + 1, + "var" + ], + "BY": [ + 2, + "expr" + ], + "PASSWORD": [ + 2, + "var" + ], + "WITH": [ + 2, + "var" + ], + "ACCOUNT": 1, + "DEFAULT": 1, + "LOCK": 2, + "UNLOCK": 2, + "IDENTIFIED": 3 + }, + "VIEW_OPTIONS": { + "AS": 1 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "ADD" + } + }, + "field": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "last_update2", + "expr": "`last_update2`", + "alias": null, + "function": null, + "subquery": null + }, + "unknown": [ + { + "@type": "@12" + }, + { + "@type": "@22" + }, + { + "@type": "@23" + }, + { + "@type": "@24" + }, + { + "@type": "@25" + }, + { + "@type": "@26" + } + ] + } + ], + "OPTIONS": { + "ONLINE": 1, + "OFFLINE": 1, + "IGNORE": 2, + "DATABASE": 3, + "EVENT": 3, + "FUNCTION": 3, + "PROCEDURE": 3, + "SERVER": 3, + "TABLE": 3, + "TABLESPACE": 3, + "USER": 3, + "VIEW": 3 + }, + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 0, + "last": 25 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter12.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter12.in new file mode 100644 index 0000000000..8e3adead50 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter12.in @@ -0,0 +1 @@ +ALTER TABLE actor ALTER last_update2 SET DEFAULT 'value1'; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter12.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter12.out new file mode 100644 index 0000000000..65bdab9eaa --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter12.out @@ -0,0 +1,716 @@ +{ + "query": "ALTER TABLE actor ALTER last_update2 SET DEFAULT 'value1';", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "ALTER TABLE actor ALTER last_update2 SET DEFAULT 'value1';", + "len": 58, + "last": 58, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": 1, + "flags": 3, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "actor", + "value": "actor", + "keyword": null, + "type": 0, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": 1, + "flags": 3, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "last_update2", + "value": "last_update2", + "keyword": null, + "type": 0, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": 1, + "flags": 11, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT", + "value": "DEFAULT", + "keyword": "DEFAULT", + "type": 1, + "flags": 35, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'value1'", + "value": "value1", + "keyword": null, + "type": 7, + "flags": 1, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 17, + "idx": 17 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "actor", + "column": null, + "expr": "actor", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var" + ], + "CHARSET": [ + 1, + "var" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var" + ], + "DEFAULT CHARSET": [ + 1, + "var" + ], + "UPGRADE": [ + 1, + "var" + ], + "COLLATE": [ + 2, + "var" + ], + "DEFAULT COLLATE": [ + 2, + "var" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 1, + "var=" + ], + "AVG_ROW_LENGTH": [ + 1, + "var" + ], + "MAX_ROWS": [ + 1, + "var" + ], + "ROW_FORMAT": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "ADD": 1, + "ALTER": 1, + "ANALYZE": 1, + "CHANGE": 1, + "CHARSET": 1, + "CHECK": 1, + "COALESCE": 1, + "CONVERT": 1, + "DEFAULT CHARSET": 1, + "DISABLE": 1, + "DISCARD": 1, + "DROP": 1, + "ENABLE": 1, + "IMPORT": 1, + "MODIFY": 1, + "OPTIMIZE": 1, + "ORDER": 1, + "PARTITION": 1, + "REBUILD": 1, + "REMOVE": 1, + "RENAME": 1, + "REORGANIZE": 1, + "REPAIR": 1, + "UPGRADE": 1, + "COLUMN": 2, + "CONSTRAINT": 2, + "DEFAULT": 2, + "TO": 2, + "BY": 2, + "FOREIGN": 2, + "FULLTEXT": 2, + "KEY": 2, + "KEYS": 2, + "PARTITIONING": 2, + "PRIMARY KEY": 2, + "SPATIAL": 2, + "TABLESPACE": 2, + "INDEX": 2, + "CHARACTER SET": 3 + }, + "USER_OPTIONS": { + "ATTRIBUTE": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "REQUIRE": [ + 1, + "var" + ], + "BY": [ + 2, + "expr" + ], + "PASSWORD": [ + 2, + "var" + ], + "WITH": [ + 2, + "var" + ], + "ACCOUNT": 1, + "DEFAULT": 1, + "LOCK": 2, + "UNLOCK": 2, + "IDENTIFIED": 3 + }, + "VIEW_OPTIONS": { + "AS": 1 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "ALTER" + } + }, + "field": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "last_update2", + "expr": "last_update2", + "alias": null, + "function": null, + "subquery": null + }, + "unknown": [ + { + "@type": "@12" + } + ] + } + ], + "OPTIONS": { + "ONLINE": 1, + "OFFLINE": 1, + "IGNORE": 2, + "DATABASE": 3, + "EVENT": 3, + "FUNCTION": 3, + "PROCEDURE": 3, + "SERVER": 3, + "TABLE": 3, + "TABLESPACE": 3, + "USER": 3, + "VIEW": 3 + }, + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 0, + "last": 15 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter13.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter13.in new file mode 100644 index 0000000000..c995c73628 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter13.in @@ -0,0 +1 @@ +ALTER TABLE `actor` ADD `last_update2` SET ('value1','value2','value3') \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter13.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter13.out new file mode 100644 index 0000000000..80ebda83f6 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter13.out @@ -0,0 +1,743 @@ +{ + "query": "ALTER TABLE `actor` ADD `last_update2` SET ('value1','value2','value3')", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "ALTER TABLE `actor` ADD `last_update2` SET ('value1','value2','value3')", + "len": 71, + "last": 71, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": 1, + "flags": 3, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`actor`", + "value": "actor", + "keyword": null, + "type": 8, + "flags": 2, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ADD", + "value": "ADD", + "keyword": "ADD", + "type": 1, + "flags": 3, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`last_update2`", + "value": "last_update2", + "keyword": null, + "type": 8, + "flags": 2, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": 1, + "flags": 11, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'value1'", + "value": "value1", + "keyword": null, + "type": 7, + "flags": 1, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'value2'", + "value": "value2", + "keyword": null, + "type": 7, + "flags": 1, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'value3'", + "value": "value3", + "keyword": null, + "type": 7, + "flags": 1, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 20, + "idx": 21 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "actor", + "column": null, + "expr": "`actor`", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var" + ], + "CHARSET": [ + 1, + "var" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var" + ], + "DEFAULT CHARSET": [ + 1, + "var" + ], + "UPGRADE": [ + 1, + "var" + ], + "COLLATE": [ + 2, + "var" + ], + "DEFAULT COLLATE": [ + 2, + "var" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 1, + "var=" + ], + "AVG_ROW_LENGTH": [ + 1, + "var" + ], + "MAX_ROWS": [ + 1, + "var" + ], + "ROW_FORMAT": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "ADD": 1, + "ALTER": 1, + "ANALYZE": 1, + "CHANGE": 1, + "CHARSET": 1, + "CHECK": 1, + "COALESCE": 1, + "CONVERT": 1, + "DEFAULT CHARSET": 1, + "DISABLE": 1, + "DISCARD": 1, + "DROP": 1, + "ENABLE": 1, + "IMPORT": 1, + "MODIFY": 1, + "OPTIMIZE": 1, + "ORDER": 1, + "PARTITION": 1, + "REBUILD": 1, + "REMOVE": 1, + "RENAME": 1, + "REORGANIZE": 1, + "REPAIR": 1, + "UPGRADE": 1, + "COLUMN": 2, + "CONSTRAINT": 2, + "DEFAULT": 2, + "TO": 2, + "BY": 2, + "FOREIGN": 2, + "FULLTEXT": 2, + "KEY": 2, + "KEYS": 2, + "PARTITIONING": 2, + "PRIMARY KEY": 2, + "SPATIAL": 2, + "TABLESPACE": 2, + "INDEX": 2, + "CHARACTER SET": 3 + }, + "USER_OPTIONS": { + "ATTRIBUTE": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "REQUIRE": [ + 1, + "var" + ], + "BY": [ + 2, + "expr" + ], + "PASSWORD": [ + 2, + "var" + ], + "WITH": [ + 2, + "var" + ], + "ACCOUNT": 1, + "DEFAULT": 1, + "LOCK": 2, + "UNLOCK": 2, + "IDENTIFIED": 3 + }, + "VIEW_OPTIONS": { + "AS": 1 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "ADD" + } + }, + "field": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "last_update2", + "expr": "`last_update2`", + "alias": null, + "function": null, + "subquery": null + }, + "unknown": [ + { + "@type": "@12" + } + ] + } + ], + "OPTIONS": { + "ONLINE": 1, + "OFFLINE": 1, + "IGNORE": 2, + "DATABASE": 3, + "EVENT": 3, + "FUNCTION": 3, + "PROCEDURE": 3, + "SERVER": 3, + "TABLE": 3, + "TABLESPACE": 3, + "USER": 3, + "VIEW": 3 + }, + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 0, + "last": 20 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter2.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter2.in new file mode 100644 index 0000000000..cdfc9480c8 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter2.in @@ -0,0 +1,2 @@ +ALTER /* */ TABLE /* */ table +CONVERT /* */ TO /* */ CHARACTER /* */ SET /* */ utf8; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter2.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter2.out new file mode 100644 index 0000000000..065cf346ff --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter2.out @@ -0,0 +1,802 @@ +{ + "query": "ALTER \/* *\/ TABLE \/* *\/ table\nCONVERT \/* *\/ TO \/* *\/ CHARACTER \/* *\/ SET \/* *\/ utf8;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "ALTER \/* *\/ TABLE \/* *\/ table\nCONVERT \/* *\/ TO \/* *\/ CHARACTER \/* *\/ SET \/* *\/ utf8;", + "len": 84, + "last": 84, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* *\/", + "value": "\/* *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": 1, + "flags": 3, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* *\/", + "value": "\/* *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table", + "value": "TABLE", + "keyword": "TABLE", + "type": 1, + "flags": 3, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CONVERT", + "value": "CONVERT", + "keyword": "CONVERT", + "type": 1, + "flags": 35, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* *\/", + "value": "\/* *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TO", + "value": "TO", + "keyword": "TO", + "type": 1, + "flags": 3, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* *\/", + "value": "\/* *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CHARACTER", + "value": "CHARACTER", + "keyword": "CHARACTER", + "type": 1, + "flags": 11, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* *\/", + "value": "\/* *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": 1, + "flags": 11, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* *\/", + "value": "\/* *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "utf8", + "value": "utf8", + "keyword": null, + "type": 0, + "flags": 0, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 83 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 29, + "idx": 29 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": null, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var" + ], + "CHARSET": [ + 1, + "var" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var" + ], + "DEFAULT CHARSET": [ + 1, + "var" + ], + "UPGRADE": [ + 1, + "var" + ], + "COLLATE": [ + 2, + "var" + ], + "DEFAULT COLLATE": [ + 2, + "var" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 1, + "var=" + ], + "AVG_ROW_LENGTH": [ + 1, + "var" + ], + "MAX_ROWS": [ + 1, + "var" + ], + "ROW_FORMAT": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "ADD": 1, + "ALTER": 1, + "ANALYZE": 1, + "CHANGE": 1, + "CHARSET": 1, + "CHECK": 1, + "COALESCE": 1, + "CONVERT": 1, + "DEFAULT CHARSET": 1, + "DISABLE": 1, + "DISCARD": 1, + "DROP": 1, + "ENABLE": 1, + "IMPORT": 1, + "MODIFY": 1, + "OPTIMIZE": 1, + "ORDER": 1, + "PARTITION": 1, + "REBUILD": 1, + "REMOVE": 1, + "RENAME": 1, + "REORGANIZE": 1, + "REPAIR": 1, + "UPGRADE": 1, + "COLUMN": 2, + "CONSTRAINT": 2, + "DEFAULT": 2, + "TO": 2, + "BY": 2, + "FOREIGN": 2, + "FULLTEXT": 2, + "KEY": 2, + "KEYS": 2, + "PARTITIONING": 2, + "PRIMARY KEY": 2, + "SPATIAL": 2, + "TABLESPACE": 2, + "INDEX": 2, + "CHARACTER SET": 3 + }, + "USER_OPTIONS": { + "ATTRIBUTE": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "REQUIRE": [ + 1, + "var" + ], + "BY": [ + 2, + "expr" + ], + "PASSWORD": [ + 2, + "var" + ], + "WITH": [ + 2, + "var" + ], + "ACCOUNT": 1, + "DEFAULT": 1, + "LOCK": 2, + "UNLOCK": 2, + "IDENTIFIED": 3 + }, + "VIEW_OPTIONS": { + "AS": 1 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": "TO" + } + }, + "field": null, + "unknown": [ + { + "@type": "@20" + }, + { + "@type": "@21" + }, + { + "@type": "@23" + } + ] + } + ], + "OPTIONS": { + "ONLINE": 1, + "OFFLINE": 1, + "IGNORE": 2, + "DATABASE": 3, + "EVENT": 3, + "FUNCTION": 3, + "PROCEDURE": 3, + "SERVER": 3, + "TABLE": 3, + "TABLESPACE": 3, + "USER": 3, + "VIEW": 3 + }, + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE", + "13": "TABLE" + } + }, + "first": 0, + "last": 27 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "This option conflicts with \"TABLE\".", + { + "@type": "@10" + }, + 0 + ], + [ + "A new statement was found, but no delimiter between it and the previous one.", + { + "@type": "@24" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter3.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter3.in new file mode 100644 index 0000000000..eebf6970f7 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter3.in @@ -0,0 +1,3 @@ +ALTER TABLE `tbl` CHANGE `uid` `uid` INT( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT + +ALTER TABLE `tbl` CHANGE `field_1` `field_2` INT( 10 ) UNSIGNED NOT NULL \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter3.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter3.out new file mode 100644 index 0000000000..576d6db5ad --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter3.out @@ -0,0 +1,1045 @@ +{ + "query": "ALTER TABLE `tbl` CHANGE `uid` `uid` INT( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT\n\nALTER TABLE `tbl` CHANGE `field_1` `field_2` INT( 10 ) UNSIGNED NOT NULL", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "ALTER TABLE `tbl` CHANGE `uid` `uid` INT( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT\n\nALTER TABLE `tbl` CHANGE `field_1` `field_2` INT( 10 ) UNSIGNED NOT NULL", + "len": 153, + "last": 153, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": 1, + "flags": 3, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`tbl`", + "value": "tbl", + "keyword": null, + "type": 8, + "flags": 2, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CHANGE", + "value": "CHANGE", + "keyword": "CHANGE", + "type": 1, + "flags": 3, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`uid`", + "value": "uid", + "keyword": null, + "type": 8, + "flags": 2, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`uid`", + "value": "uid", + "keyword": null, + "type": 8, + "flags": 2, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INT", + "value": "INT", + "keyword": "INT", + "type": 1, + "flags": 11, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "10", + "value": 10, + "keyword": null, + "type": 6, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNSIGNED", + "value": "UNSIGNED", + "keyword": "UNSIGNED", + "type": 1, + "flags": 3, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": 1, + "flags": 7, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AUTO_INCREMENT", + "value": "AUTO_INCREMENT", + "keyword": "AUTO_INCREMENT", + "type": 1, + "flags": 1, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": 1, + "flags": 3, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": 1, + "flags": 3, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`tbl`", + "value": "tbl", + "keyword": null, + "type": 8, + "flags": 2, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CHANGE", + "value": "CHANGE", + "keyword": "CHANGE", + "type": 1, + "flags": 3, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 105 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`field_1`", + "value": "field_1", + "keyword": null, + "type": 8, + "flags": 2, + "position": 106 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 115 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`field_2`", + "value": "field_2", + "keyword": null, + "type": 8, + "flags": 2, + "position": 116 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 125 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INT", + "value": "INT", + "keyword": "INT", + "type": 1, + "flags": 11, + "position": 126 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 129 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 130 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "10", + "value": 10, + "keyword": null, + "type": 6, + "flags": 0, + "position": 131 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 133 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 134 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 135 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNSIGNED", + "value": "UNSIGNED", + "keyword": "UNSIGNED", + "type": 1, + "flags": 3, + "position": 136 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 144 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": 1, + "flags": 7, + "position": 145 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 48, + "idx": 48 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "tbl", + "column": null, + "expr": "`tbl`", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var" + ], + "CHARSET": [ + 1, + "var" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var" + ], + "DEFAULT CHARSET": [ + 1, + "var" + ], + "UPGRADE": [ + 1, + "var" + ], + "COLLATE": [ + 2, + "var" + ], + "DEFAULT COLLATE": [ + 2, + "var" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 1, + "var=" + ], + "AVG_ROW_LENGTH": [ + 1, + "var" + ], + "MAX_ROWS": [ + 1, + "var" + ], + "ROW_FORMAT": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "ADD": 1, + "ALTER": 1, + "ANALYZE": 1, + "CHANGE": 1, + "CHARSET": 1, + "CHECK": 1, + "COALESCE": 1, + "CONVERT": 1, + "DEFAULT CHARSET": 1, + "DISABLE": 1, + "DISCARD": 1, + "DROP": 1, + "ENABLE": 1, + "IMPORT": 1, + "MODIFY": 1, + "OPTIMIZE": 1, + "ORDER": 1, + "PARTITION": 1, + "REBUILD": 1, + "REMOVE": 1, + "RENAME": 1, + "REORGANIZE": 1, + "REPAIR": 1, + "UPGRADE": 1, + "COLUMN": 2, + "CONSTRAINT": 2, + "DEFAULT": 2, + "TO": 2, + "BY": 2, + "FOREIGN": 2, + "FULLTEXT": 2, + "KEY": 2, + "KEYS": 2, + "PARTITIONING": 2, + "PRIMARY KEY": 2, + "SPATIAL": 2, + "TABLESPACE": 2, + "INDEX": 2, + "CHARACTER SET": 3 + }, + "USER_OPTIONS": { + "ATTRIBUTE": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "REQUIRE": [ + 1, + "var" + ], + "BY": [ + 2, + "expr" + ], + "PASSWORD": [ + 2, + "var" + ], + "WITH": [ + 2, + "var" + ], + "ACCOUNT": 1, + "DEFAULT": 1, + "LOCK": 2, + "UNLOCK": 2, + "IDENTIFIED": 3 + }, + "VIEW_OPTIONS": { + "AS": 1 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "CHANGE" + } + }, + "field": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "uid", + "expr": "`uid`", + "alias": null, + "function": null, + "subquery": null + }, + "unknown": [ + { + "@type": "@12" + }, + { + "@type": "@13" + }, + { + "@type": "@14" + }, + { + "@type": "@15" + }, + { + "@type": "@16" + }, + { + "@type": "@17" + }, + { + "@type": "@18" + }, + { + "@type": "@19" + }, + { + "@type": "@20" + }, + { + "@type": "@21" + }, + { + "@type": "@22" + }, + { + "@type": "@23" + }, + { + "@type": "@24" + }, + { + "@type": "@25" + }, + { + "@type": "@26" + } + ] + } + ], + "OPTIONS": { + "ONLINE": 1, + "OFFLINE": 1, + "IGNORE": 2, + "DATABASE": 3, + "EVENT": 3, + "FUNCTION": 3, + "PROCEDURE": 3, + "SERVER": 3, + "TABLE": 3, + "TABLESPACE": 3, + "USER": 3, + "VIEW": 3 + }, + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 0, + "last": 47 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "A new statement was found, but no delimiter between it and the previous one.", + { + "@type": "@27" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter4.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter4.in new file mode 100644 index 0000000000..47d67df727 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter4.in @@ -0,0 +1 @@ +ALTER TABLE my_table COMMENT='Comment of table'; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter4.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter4.out new file mode 100644 index 0000000000..3f29f37d87 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter4.out @@ -0,0 +1,641 @@ +{ + "query": "ALTER TABLE my_table COMMENT='Comment of table';", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "ALTER TABLE my_table COMMENT='Comment of table';", + "len": 48, + "last": 48, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": 1, + "flags": 3, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "my_table", + "value": "my_table", + "keyword": null, + "type": 0, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COMMENT", + "value": "COMMENT", + "keyword": "COMMENT", + "type": 1, + "flags": 1, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'Comment of table'", + "value": "Comment of table", + "keyword": null, + "type": 7, + "flags": 1, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 11, + "idx": 11 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "my_table", + "column": null, + "expr": "my_table", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var" + ], + "CHARSET": [ + 1, + "var" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var" + ], + "DEFAULT CHARSET": [ + 1, + "var" + ], + "UPGRADE": [ + 1, + "var" + ], + "COLLATE": [ + 2, + "var" + ], + "DEFAULT COLLATE": [ + 2, + "var" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 1, + "var=" + ], + "AVG_ROW_LENGTH": [ + 1, + "var" + ], + "MAX_ROWS": [ + 1, + "var" + ], + "ROW_FORMAT": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "ADD": 1, + "ALTER": 1, + "ANALYZE": 1, + "CHANGE": 1, + "CHARSET": 1, + "CHECK": 1, + "COALESCE": 1, + "CONVERT": 1, + "DEFAULT CHARSET": 1, + "DISABLE": 1, + "DISCARD": 1, + "DROP": 1, + "ENABLE": 1, + "IMPORT": 1, + "MODIFY": 1, + "OPTIMIZE": 1, + "ORDER": 1, + "PARTITION": 1, + "REBUILD": 1, + "REMOVE": 1, + "RENAME": 1, + "REORGANIZE": 1, + "REPAIR": 1, + "UPGRADE": 1, + "COLUMN": 2, + "CONSTRAINT": 2, + "DEFAULT": 2, + "TO": 2, + "BY": 2, + "FOREIGN": 2, + "FULLTEXT": 2, + "KEY": 2, + "KEYS": 2, + "PARTITIONING": 2, + "PRIMARY KEY": 2, + "SPATIAL": 2, + "TABLESPACE": 2, + "INDEX": 2, + "CHARACTER SET": 3 + }, + "USER_OPTIONS": { + "ATTRIBUTE": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "REQUIRE": [ + 1, + "var" + ], + "BY": [ + 2, + "expr" + ], + "PASSWORD": [ + 2, + "var" + ], + "WITH": [ + 2, + "var" + ], + "ACCOUNT": 1, + "DEFAULT": 1, + "LOCK": 2, + "UNLOCK": 2, + "IDENTIFIED": 3 + }, + "VIEW_OPTIONS": { + "AS": 1 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "COMMENT", + "equals": true, + "expr": "'Comment of table'", + "value": "Comment of table" + } + } + }, + "field": null, + "unknown": [] + } + ], + "OPTIONS": { + "ONLINE": 1, + "OFFLINE": 1, + "IGNORE": 2, + "DATABASE": 3, + "EVENT": 3, + "FUNCTION": 3, + "PROCEDURE": 3, + "SERVER": 3, + "TABLE": 3, + "TABLESPACE": 3, + "USER": 3, + "VIEW": 3 + }, + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 0, + "last": 9 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter5.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter5.in new file mode 100644 index 0000000000..4205f9729e --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter5.in @@ -0,0 +1 @@ +ALTER DATABASE `abc` CHARACTER SET = 'utf8' \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter5.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter5.out new file mode 100644 index 0000000000..5e79b6179b --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter5.out @@ -0,0 +1,650 @@ +{ + "query": "ALTER DATABASE `abc` CHARACTER SET = 'utf8'", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "ALTER DATABASE `abc` CHARACTER SET = 'utf8'", + "len": 43, + "last": 43, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DATABASE", + "value": "DATABASE", + "keyword": "DATABASE", + "type": 1, + "flags": 35, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`abc`", + "value": "abc", + "keyword": null, + "type": 8, + "flags": 2, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CHARACTER SET", + "value": "CHARACTER SET", + "keyword": "CHARACTER SET", + "type": 1, + "flags": 7, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'utf8'", + "value": "utf8", + "keyword": null, + "type": 7, + "flags": 1, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 12, + "idx": 12 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "abc", + "column": null, + "expr": "`abc`", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var" + ], + "CHARSET": [ + 1, + "var" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var" + ], + "DEFAULT CHARSET": [ + 1, + "var" + ], + "UPGRADE": [ + 1, + "var" + ], + "COLLATE": [ + 2, + "var" + ], + "DEFAULT COLLATE": [ + 2, + "var" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 1, + "var=" + ], + "AVG_ROW_LENGTH": [ + 1, + "var" + ], + "MAX_ROWS": [ + 1, + "var" + ], + "ROW_FORMAT": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "ADD": 1, + "ALTER": 1, + "ANALYZE": 1, + "CHANGE": 1, + "CHARSET": 1, + "CHECK": 1, + "COALESCE": 1, + "CONVERT": 1, + "DEFAULT CHARSET": 1, + "DISABLE": 1, + "DISCARD": 1, + "DROP": 1, + "ENABLE": 1, + "IMPORT": 1, + "MODIFY": 1, + "OPTIMIZE": 1, + "ORDER": 1, + "PARTITION": 1, + "REBUILD": 1, + "REMOVE": 1, + "RENAME": 1, + "REORGANIZE": 1, + "REPAIR": 1, + "UPGRADE": 1, + "COLUMN": 2, + "CONSTRAINT": 2, + "DEFAULT": 2, + "TO": 2, + "BY": 2, + "FOREIGN": 2, + "FULLTEXT": 2, + "KEY": 2, + "KEYS": 2, + "PARTITIONING": 2, + "PRIMARY KEY": 2, + "SPATIAL": 2, + "TABLESPACE": 2, + "INDEX": 2, + "CHARACTER SET": 3 + }, + "USER_OPTIONS": { + "ATTRIBUTE": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "REQUIRE": [ + 1, + "var" + ], + "BY": [ + 2, + "expr" + ], + "PASSWORD": [ + 2, + "var" + ], + "WITH": [ + 2, + "var" + ], + "ACCOUNT": 1, + "DEFAULT": 1, + "LOCK": 2, + "UNLOCK": 2, + "IDENTIFIED": 3 + }, + "VIEW_OPTIONS": { + "AS": 1 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "CHARACTER SET", + "equals": true, + "expr": "'utf8'", + "value": "utf8" + } + } + }, + "field": null, + "unknown": [] + } + ], + "OPTIONS": { + "ONLINE": 1, + "OFFLINE": 1, + "IGNORE": 2, + "DATABASE": 3, + "EVENT": 3, + "FUNCTION": 3, + "PROCEDURE": 3, + "SERVER": 3, + "TABLE": 3, + "TABLESPACE": 3, + "USER": 3, + "VIEW": 3 + }, + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "DATABASE" + } + }, + "first": 0, + "last": 11 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter6.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter6.in new file mode 100644 index 0000000000..aea7b9feba --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter6.in @@ -0,0 +1 @@ +ALTER VIEW `abc` AS SELECT `a` FROM `b` \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter6.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter6.out new file mode 100644 index 0000000000..aac05693ec --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter6.out @@ -0,0 +1,706 @@ +{ + "query": "ALTER VIEW `abc` AS SELECT `a` FROM `b`", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "ALTER VIEW `abc` AS SELECT `a` FROM `b`", + "len": 39, + "last": 39, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VIEW", + "value": "VIEW", + "keyword": "VIEW", + "type": 1, + "flags": 1, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`abc`", + "value": "abc", + "keyword": null, + "type": 8, + "flags": 2, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`a`", + "value": "a", + "keyword": null, + "type": 8, + "flags": 2, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`b`", + "value": "b", + "keyword": null, + "type": 8, + "flags": 2, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 16, + "idx": 16 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "abc", + "column": null, + "expr": "`abc`", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var" + ], + "CHARSET": [ + 1, + "var" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var" + ], + "DEFAULT CHARSET": [ + 1, + "var" + ], + "UPGRADE": [ + 1, + "var" + ], + "COLLATE": [ + 2, + "var" + ], + "DEFAULT COLLATE": [ + 2, + "var" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 1, + "var=" + ], + "AVG_ROW_LENGTH": [ + 1, + "var" + ], + "MAX_ROWS": [ + 1, + "var" + ], + "ROW_FORMAT": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "ADD": 1, + "ALTER": 1, + "ANALYZE": 1, + "CHANGE": 1, + "CHARSET": 1, + "CHECK": 1, + "COALESCE": 1, + "CONVERT": 1, + "DEFAULT CHARSET": 1, + "DISABLE": 1, + "DISCARD": 1, + "DROP": 1, + "ENABLE": 1, + "IMPORT": 1, + "MODIFY": 1, + "OPTIMIZE": 1, + "ORDER": 1, + "PARTITION": 1, + "REBUILD": 1, + "REMOVE": 1, + "RENAME": 1, + "REORGANIZE": 1, + "REPAIR": 1, + "UPGRADE": 1, + "COLUMN": 2, + "CONSTRAINT": 2, + "DEFAULT": 2, + "TO": 2, + "BY": 2, + "FOREIGN": 2, + "FULLTEXT": 2, + "KEY": 2, + "KEYS": 2, + "PARTITIONING": 2, + "PRIMARY KEY": 2, + "SPATIAL": 2, + "TABLESPACE": 2, + "INDEX": 2, + "CHARACTER SET": 3 + }, + "USER_OPTIONS": { + "ATTRIBUTE": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "REQUIRE": [ + 1, + "var" + ], + "BY": [ + 2, + "expr" + ], + "PASSWORD": [ + 2, + "var" + ], + "WITH": [ + 2, + "var" + ], + "ACCOUNT": 1, + "DEFAULT": 1, + "LOCK": 2, + "UNLOCK": 2, + "IDENTIFIED": 3 + }, + "VIEW_OPTIONS": { + "AS": 1 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "AS" + } + }, + "field": null, + "unknown": [ + { + "@type": "@9" + }, + { + "@type": "@10" + }, + { + "@type": "@11" + }, + { + "@type": "@12" + }, + { + "@type": "@13" + }, + { + "@type": "@14" + }, + { + "@type": "@15" + }, + { + "@type": "@16" + } + ] + } + ], + "OPTIONS": { + "ONLINE": 1, + "OFFLINE": 1, + "IGNORE": 2, + "DATABASE": 3, + "EVENT": 3, + "FUNCTION": 3, + "PROCEDURE": 3, + "SERVER": 3, + "TABLE": 3, + "TABLESPACE": 3, + "USER": 3, + "VIEW": 3 + }, + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "VIEW" + } + }, + "first": 0, + "last": 15 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter7.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter7.in new file mode 100644 index 0000000000..5921e763a5 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter7.in @@ -0,0 +1 @@ +ALTER TABLE `tbl` CHANGE `uid` `uid` INT( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT, CHANGE `field_1` `field_2` INT( 10 ) UNSIGNED NOT NULL \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter7.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter7.out new file mode 100644 index 0000000000..f665519dcb --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter7.out @@ -0,0 +1,1188 @@ +{ + "query": "ALTER TABLE `tbl` CHANGE `uid` `uid` INT( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT, CHANGE `field_1` `field_2` INT( 10 ) UNSIGNED NOT NULL", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "ALTER TABLE `tbl` CHANGE `uid` `uid` INT( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT, CHANGE `field_1` `field_2` INT( 10 ) UNSIGNED NOT NULL", + "len": 135, + "last": 135, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": 1, + "flags": 3, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`tbl`", + "value": "tbl", + "keyword": null, + "type": 8, + "flags": 2, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CHANGE", + "value": "CHANGE", + "keyword": "CHANGE", + "type": 1, + "flags": 3, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`uid`", + "value": "uid", + "keyword": null, + "type": 8, + "flags": 2, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`uid`", + "value": "uid", + "keyword": null, + "type": 8, + "flags": 2, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INT", + "value": "INT", + "keyword": "INT", + "type": 1, + "flags": 11, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "10", + "value": 10, + "keyword": null, + "type": 6, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNSIGNED", + "value": "UNSIGNED", + "keyword": "UNSIGNED", + "type": 1, + "flags": 3, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": 1, + "flags": 7, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AUTO_INCREMENT", + "value": "AUTO_INCREMENT", + "keyword": "AUTO_INCREMENT", + "type": 1, + "flags": 1, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CHANGE", + "value": "CHANGE", + "keyword": "CHANGE", + "type": 1, + "flags": 3, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`field_1`", + "value": "field_1", + "keyword": null, + "type": 8, + "flags": 2, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 97 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`field_2`", + "value": "field_2", + "keyword": null, + "type": 8, + "flags": 2, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INT", + "value": "INT", + "keyword": "INT", + "type": 1, + "flags": 11, + "position": 108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 111 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "10", + "value": 10, + "keyword": null, + "type": 6, + "flags": 0, + "position": 113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 115 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 116 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 117 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNSIGNED", + "value": "UNSIGNED", + "keyword": "UNSIGNED", + "type": 1, + "flags": 3, + "position": 118 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 126 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": 1, + "flags": 7, + "position": 127 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 43, + "idx": 43 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "tbl", + "column": null, + "expr": "`tbl`", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var" + ], + "CHARSET": [ + 1, + "var" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var" + ], + "DEFAULT CHARSET": [ + 1, + "var" + ], + "UPGRADE": [ + 1, + "var" + ], + "COLLATE": [ + 2, + "var" + ], + "DEFAULT COLLATE": [ + 2, + "var" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 1, + "var=" + ], + "AVG_ROW_LENGTH": [ + 1, + "var" + ], + "MAX_ROWS": [ + 1, + "var" + ], + "ROW_FORMAT": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "ADD": 1, + "ALTER": 1, + "ANALYZE": 1, + "CHANGE": 1, + "CHARSET": 1, + "CHECK": 1, + "COALESCE": 1, + "CONVERT": 1, + "DEFAULT CHARSET": 1, + "DISABLE": 1, + "DISCARD": 1, + "DROP": 1, + "ENABLE": 1, + "IMPORT": 1, + "MODIFY": 1, + "OPTIMIZE": 1, + "ORDER": 1, + "PARTITION": 1, + "REBUILD": 1, + "REMOVE": 1, + "RENAME": 1, + "REORGANIZE": 1, + "REPAIR": 1, + "UPGRADE": 1, + "COLUMN": 2, + "CONSTRAINT": 2, + "DEFAULT": 2, + "TO": 2, + "BY": 2, + "FOREIGN": 2, + "FULLTEXT": 2, + "KEY": 2, + "KEYS": 2, + "PARTITIONING": 2, + "PRIMARY KEY": 2, + "SPATIAL": 2, + "TABLESPACE": 2, + "INDEX": 2, + "CHARACTER SET": 3 + }, + "USER_OPTIONS": { + "ATTRIBUTE": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "REQUIRE": [ + 1, + "var" + ], + "BY": [ + 2, + "expr" + ], + "PASSWORD": [ + 2, + "var" + ], + "WITH": [ + 2, + "var" + ], + "ACCOUNT": 1, + "DEFAULT": 1, + "LOCK": 2, + "UNLOCK": 2, + "IDENTIFIED": 3 + }, + "VIEW_OPTIONS": { + "AS": 1 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "CHANGE" + } + }, + "field": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "uid", + "expr": "`uid`", + "alias": null, + "function": null, + "subquery": null + }, + "unknown": [ + { + "@type": "@12" + }, + { + "@type": "@13" + }, + { + "@type": "@14" + }, + { + "@type": "@15" + }, + { + "@type": "@16" + }, + { + "@type": "@17" + }, + { + "@type": "@18" + }, + { + "@type": "@19" + }, + { + "@type": "@20" + }, + { + "@type": "@21" + }, + { + "@type": "@22" + }, + { + "@type": "@23" + }, + { + "@type": "@24" + }, + { + "@type": "@25" + } + ] + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var" + ], + "CHARSET": [ + 1, + "var" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var" + ], + "DEFAULT CHARSET": [ + 1, + "var" + ], + "UPGRADE": [ + 1, + "var" + ], + "COLLATE": [ + 2, + "var" + ], + "DEFAULT COLLATE": [ + 2, + "var" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 1, + "var=" + ], + "AVG_ROW_LENGTH": [ + 1, + "var" + ], + "MAX_ROWS": [ + 1, + "var" + ], + "ROW_FORMAT": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "ADD": 1, + "ALTER": 1, + "ANALYZE": 1, + "CHANGE": 1, + "CHARSET": 1, + "CHECK": 1, + "COALESCE": 1, + "CONVERT": 1, + "DEFAULT CHARSET": 1, + "DISABLE": 1, + "DISCARD": 1, + "DROP": 1, + "ENABLE": 1, + "IMPORT": 1, + "MODIFY": 1, + "OPTIMIZE": 1, + "ORDER": 1, + "PARTITION": 1, + "REBUILD": 1, + "REMOVE": 1, + "RENAME": 1, + "REORGANIZE": 1, + "REPAIR": 1, + "UPGRADE": 1, + "COLUMN": 2, + "CONSTRAINT": 2, + "DEFAULT": 2, + "TO": 2, + "BY": 2, + "FOREIGN": 2, + "FULLTEXT": 2, + "KEY": 2, + "KEYS": 2, + "PARTITIONING": 2, + "PRIMARY KEY": 2, + "SPATIAL": 2, + "TABLESPACE": 2, + "INDEX": 2, + "CHARACTER SET": 3 + }, + "USER_OPTIONS": { + "ATTRIBUTE": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "REQUIRE": [ + 1, + "var" + ], + "BY": [ + 2, + "expr" + ], + "PASSWORD": [ + 2, + "var" + ], + "WITH": [ + 2, + "var" + ], + "ACCOUNT": 1, + "DEFAULT": 1, + "LOCK": 2, + "UNLOCK": 2, + "IDENTIFIED": 3 + }, + "VIEW_OPTIONS": { + "AS": 1 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "CHANGE" + } + }, + "field": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "field_1", + "expr": "`field_1`", + "alias": null, + "function": null, + "subquery": null + }, + "unknown": [ + { + "@type": "@32" + }, + { + "@type": "@33" + }, + { + "@type": "@34" + }, + { + "@type": "@35" + }, + { + "@type": "@36" + }, + { + "@type": "@37" + }, + { + "@type": "@38" + }, + { + "@type": "@39" + }, + { + "@type": "@40" + }, + { + "@type": "@41" + }, + { + "@type": "@42" + }, + { + "@type": "@43" + } + ] + } + ], + "OPTIONS": { + "ONLINE": 1, + "OFFLINE": 1, + "IGNORE": 2, + "DATABASE": 3, + "EVENT": 3, + "FUNCTION": 3, + "PROCEDURE": 3, + "SERVER": 3, + "TABLE": 3, + "TABLESPACE": 3, + "USER": 3, + "VIEW": 3 + }, + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 0, + "last": 42 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter8.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter8.in new file mode 100644 index 0000000000..17b72cbafd --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter8.in @@ -0,0 +1 @@ +ALTER TABLE `api_tab_user` CHANGE `rank_id` `rank_id` INT(4) NOT NULL DEFAULT '4'; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter8.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter8.out new file mode 100644 index 0000000000..83aa4a8fdb --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter8.out @@ -0,0 +1,812 @@ +{ + "query": "ALTER TABLE `api_tab_user` CHANGE `rank_id` `rank_id` INT(4) NOT NULL DEFAULT '4';", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "ALTER TABLE `api_tab_user` CHANGE `rank_id` `rank_id` INT(4) NOT NULL DEFAULT '4';", + "len": 82, + "last": 82, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": 1, + "flags": 3, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`api_tab_user`", + "value": "api_tab_user", + "keyword": null, + "type": 8, + "flags": 2, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CHANGE", + "value": "CHANGE", + "keyword": "CHANGE", + "type": 1, + "flags": 3, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`rank_id`", + "value": "rank_id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`rank_id`", + "value": "rank_id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INT", + "value": "INT", + "keyword": "INT", + "type": 1, + "flags": 11, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "4", + "value": 4, + "keyword": null, + "type": 6, + "flags": 0, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": 1, + "flags": 7, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT", + "value": "DEFAULT", + "keyword": "DEFAULT", + "type": 1, + "flags": 35, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'4'", + "value": "4", + "keyword": null, + "type": 7, + "flags": 1, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 24, + "idx": 24 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "api_tab_user", + "column": null, + "expr": "`api_tab_user`", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var" + ], + "CHARSET": [ + 1, + "var" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var" + ], + "DEFAULT CHARSET": [ + 1, + "var" + ], + "UPGRADE": [ + 1, + "var" + ], + "COLLATE": [ + 2, + "var" + ], + "DEFAULT COLLATE": [ + 2, + "var" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 1, + "var=" + ], + "AVG_ROW_LENGTH": [ + 1, + "var" + ], + "MAX_ROWS": [ + 1, + "var" + ], + "ROW_FORMAT": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "ADD": 1, + "ALTER": 1, + "ANALYZE": 1, + "CHANGE": 1, + "CHARSET": 1, + "CHECK": 1, + "COALESCE": 1, + "CONVERT": 1, + "DEFAULT CHARSET": 1, + "DISABLE": 1, + "DISCARD": 1, + "DROP": 1, + "ENABLE": 1, + "IMPORT": 1, + "MODIFY": 1, + "OPTIMIZE": 1, + "ORDER": 1, + "PARTITION": 1, + "REBUILD": 1, + "REMOVE": 1, + "RENAME": 1, + "REORGANIZE": 1, + "REPAIR": 1, + "UPGRADE": 1, + "COLUMN": 2, + "CONSTRAINT": 2, + "DEFAULT": 2, + "TO": 2, + "BY": 2, + "FOREIGN": 2, + "FULLTEXT": 2, + "KEY": 2, + "KEYS": 2, + "PARTITIONING": 2, + "PRIMARY KEY": 2, + "SPATIAL": 2, + "TABLESPACE": 2, + "INDEX": 2, + "CHARACTER SET": 3 + }, + "USER_OPTIONS": { + "ATTRIBUTE": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "REQUIRE": [ + 1, + "var" + ], + "BY": [ + 2, + "expr" + ], + "PASSWORD": [ + 2, + "var" + ], + "WITH": [ + 2, + "var" + ], + "ACCOUNT": 1, + "DEFAULT": 1, + "LOCK": 2, + "UNLOCK": 2, + "IDENTIFIED": 3 + }, + "VIEW_OPTIONS": { + "AS": 1 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "CHANGE" + } + }, + "field": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "rank_id", + "expr": "`rank_id`", + "alias": null, + "function": null, + "subquery": null + }, + "unknown": [ + { + "@type": "@12" + }, + { + "@type": "@13" + }, + { + "@type": "@14" + }, + { + "@type": "@15" + }, + { + "@type": "@16" + }, + { + "@type": "@17" + }, + { + "@type": "@18" + }, + { + "@type": "@19" + }, + { + "@type": "@20" + }, + { + "@type": "@21" + }, + { + "@type": "@22" + }, + { + "@type": "@23" + } + ] + } + ], + "OPTIONS": { + "ONLINE": 1, + "OFFLINE": 1, + "IGNORE": 2, + "DATABASE": 3, + "EVENT": 3, + "FUNCTION": 3, + "PROCEDURE": 3, + "SERVER": 3, + "TABLE": 3, + "TABLESPACE": 3, + "USER": 3, + "VIEW": 3 + }, + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 0, + "last": 22 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter9.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter9.in new file mode 100644 index 0000000000..51e0cebcec --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter9.in @@ -0,0 +1 @@ +ALTER TABLE place CHANGE COLUMN plc_location_type gplc_location_type ENUM('LOCATION') CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci' NOT NULL; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter9.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter9.out new file mode 100644 index 0000000000..c2b6c0de1d --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlter9.out @@ -0,0 +1,879 @@ +{ + "query": "ALTER TABLE place CHANGE COLUMN plc_location_type gplc_location_type ENUM('LOCATION') CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci' NOT NULL;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "ALTER TABLE place CHANGE COLUMN plc_location_type gplc_location_type ENUM('LOCATION') CHARACTER SET 'utf8' COLLATE 'utf8_unicode_ci' NOT NULL;", + "len": 142, + "last": 142, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": 1, + "flags": 3, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "place", + "value": "place", + "keyword": null, + "type": 0, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CHANGE", + "value": "CHANGE", + "keyword": "CHANGE", + "type": 1, + "flags": 3, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COLUMN", + "value": "COLUMN", + "keyword": "COLUMN", + "type": 1, + "flags": 3, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "plc_location_type", + "value": "plc_location_type", + "keyword": null, + "type": 0, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "gplc_location_type", + "value": "gplc_location_type", + "keyword": null, + "type": 0, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ENUM", + "value": "ENUM", + "keyword": "ENUM", + "type": 1, + "flags": 9, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'LOCATION'", + "value": "LOCATION", + "keyword": null, + "type": 7, + "flags": 1, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CHARACTER SET", + "value": "CHARACTER SET", + "keyword": "CHARACTER SET", + "type": 1, + "flags": 7, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'utf8'", + "value": "utf8", + "keyword": null, + "type": 7, + "flags": 1, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 106 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COLLATE", + "value": "COLLATE", + "keyword": "COLLATE", + "type": 1, + "flags": 3, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 114 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'utf8_unicode_ci'", + "value": "utf8_unicode_ci", + "keyword": null, + "type": 7, + "flags": 1, + "position": 115 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 132 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": 1, + "flags": 7, + "position": 133 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 141 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 30, + "idx": 30 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "place", + "column": null, + "expr": "place", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var" + ], + "CHARSET": [ + 1, + "var" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var" + ], + "DEFAULT CHARSET": [ + 1, + "var" + ], + "UPGRADE": [ + 1, + "var" + ], + "COLLATE": [ + 2, + "var" + ], + "DEFAULT COLLATE": [ + 2, + "var" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 1, + "var=" + ], + "AVG_ROW_LENGTH": [ + 1, + "var" + ], + "MAX_ROWS": [ + 1, + "var" + ], + "ROW_FORMAT": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "ADD": 1, + "ALTER": 1, + "ANALYZE": 1, + "CHANGE": 1, + "CHARSET": 1, + "CHECK": 1, + "COALESCE": 1, + "CONVERT": 1, + "DEFAULT CHARSET": 1, + "DISABLE": 1, + "DISCARD": 1, + "DROP": 1, + "ENABLE": 1, + "IMPORT": 1, + "MODIFY": 1, + "OPTIMIZE": 1, + "ORDER": 1, + "PARTITION": 1, + "REBUILD": 1, + "REMOVE": 1, + "RENAME": 1, + "REORGANIZE": 1, + "REPAIR": 1, + "UPGRADE": 1, + "COLUMN": 2, + "CONSTRAINT": 2, + "DEFAULT": 2, + "TO": 2, + "BY": 2, + "FOREIGN": 2, + "FULLTEXT": 2, + "KEY": 2, + "KEYS": 2, + "PARTITIONING": 2, + "PRIMARY KEY": 2, + "SPATIAL": 2, + "TABLESPACE": 2, + "INDEX": 2, + "CHARACTER SET": 3 + }, + "USER_OPTIONS": { + "ATTRIBUTE": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "REQUIRE": [ + 1, + "var" + ], + "BY": [ + 2, + "expr" + ], + "PASSWORD": [ + 2, + "var" + ], + "WITH": [ + 2, + "var" + ], + "ACCOUNT": 1, + "DEFAULT": 1, + "LOCK": 2, + "UNLOCK": 2, + "IDENTIFIED": 3 + }, + "VIEW_OPTIONS": { + "AS": 1 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "CHANGE", + "2": "COLUMN" + } + }, + "field": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "plc_location_type", + "expr": "plc_location_type", + "alias": null, + "function": null, + "subquery": null + }, + "unknown": [ + { + "@type": "@14" + }, + { + "@type": "@15" + }, + { + "@type": "@16" + }, + { + "@type": "@17" + }, + { + "@type": "@18" + }, + { + "@type": "@19" + }, + { + "@type": "@20" + }, + { + "@type": "@21" + }, + { + "@type": "@22" + }, + { + "@type": "@23" + }, + { + "@type": "@24" + }, + { + "@type": "@25" + }, + { + "@type": "@26" + }, + { + "@type": "@27" + }, + { + "@type": "@28" + }, + { + "@type": "@29" + } + ] + } + ], + "OPTIONS": { + "ONLINE": 1, + "OFFLINE": 1, + "IGNORE": 2, + "DATABASE": 3, + "EVENT": 3, + "FUNCTION": 3, + "PROCEDURE": 3, + "SERVER": 3, + "TABLE": 3, + "TABLESPACE": 3, + "USER": 3, + "VIEW": 3 + }, + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 0, + "last": 28 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterErr.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterErr.in new file mode 100644 index 0000000000..4652a1700a --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterErr.in @@ -0,0 +1,2 @@ +-- missing comma between alter operations +ALTER TABLE `tbl` CHANGE `uid` `uid` INT( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT CHANGE `field_1` `field_2` INT( 10 ) UNSIGNED NOT NULL \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterErr.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterErr.out new file mode 100644 index 0000000000..d299ee9b6f --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterErr.out @@ -0,0 +1,1009 @@ +{ + "query": "-- missing comma between alter operations\nALTER TABLE `tbl` CHANGE `uid` `uid` INT( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT CHANGE `field_1` `field_2` INT( 10 ) UNSIGNED NOT NULL", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "-- missing comma between alter operations\nALTER TABLE `tbl` CHANGE `uid` `uid` INT( 10 ) UNSIGNED NOT NULL AUTO_INCREMENT CHANGE `field_1` `field_2` INT( 10 ) UNSIGNED NOT NULL", + "len": 176, + "last": 176, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-- missing comma between alter operations", + "value": "-- missing comma between alter operations", + "keyword": null, + "type": 4, + "flags": 4, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": 1, + "flags": 3, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": 1, + "flags": 3, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`tbl`", + "value": "tbl", + "keyword": null, + "type": 8, + "flags": 2, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CHANGE", + "value": "CHANGE", + "keyword": "CHANGE", + "type": 1, + "flags": 3, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`uid`", + "value": "uid", + "keyword": null, + "type": 8, + "flags": 2, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`uid`", + "value": "uid", + "keyword": null, + "type": 8, + "flags": 2, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INT", + "value": "INT", + "keyword": "INT", + "type": 1, + "flags": 11, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 83 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "10", + "value": 10, + "keyword": null, + "type": 6, + "flags": 0, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNSIGNED", + "value": "UNSIGNED", + "keyword": "UNSIGNED", + "type": 1, + "flags": 3, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 97 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": 1, + "flags": 7, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 106 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AUTO_INCREMENT", + "value": "AUTO_INCREMENT", + "keyword": "AUTO_INCREMENT", + "type": 1, + "flags": 1, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CHANGE", + "value": "CHANGE", + "keyword": "CHANGE", + "type": 1, + "flags": 3, + "position": 122 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 128 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`field_1`", + "value": "field_1", + "keyword": null, + "type": 8, + "flags": 2, + "position": 129 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 138 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`field_2`", + "value": "field_2", + "keyword": null, + "type": 8, + "flags": 2, + "position": 139 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 148 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INT", + "value": "INT", + "keyword": "INT", + "type": 1, + "flags": 11, + "position": 149 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 152 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 153 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "10", + "value": 10, + "keyword": null, + "type": 6, + "flags": 0, + "position": 154 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 156 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 157 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 158 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNSIGNED", + "value": "UNSIGNED", + "keyword": "UNSIGNED", + "type": 1, + "flags": 3, + "position": 159 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 167 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": 1, + "flags": 7, + "position": 168 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 44, + "idx": 44 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "tbl", + "column": null, + "expr": "`tbl`", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var" + ], + "CHARSET": [ + 1, + "var" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var" + ], + "DEFAULT CHARSET": [ + 1, + "var" + ], + "UPGRADE": [ + 1, + "var" + ], + "COLLATE": [ + 2, + "var" + ], + "DEFAULT COLLATE": [ + 2, + "var" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 1, + "var=" + ], + "AVG_ROW_LENGTH": [ + 1, + "var" + ], + "MAX_ROWS": [ + 1, + "var" + ], + "ROW_FORMAT": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "ADD": 1, + "ALTER": 1, + "ANALYZE": 1, + "CHANGE": 1, + "CHARSET": 1, + "CHECK": 1, + "COALESCE": 1, + "CONVERT": 1, + "DEFAULT CHARSET": 1, + "DISABLE": 1, + "DISCARD": 1, + "DROP": 1, + "ENABLE": 1, + "IMPORT": 1, + "MODIFY": 1, + "OPTIMIZE": 1, + "ORDER": 1, + "PARTITION": 1, + "REBUILD": 1, + "REMOVE": 1, + "RENAME": 1, + "REORGANIZE": 1, + "REPAIR": 1, + "UPGRADE": 1, + "COLUMN": 2, + "CONSTRAINT": 2, + "DEFAULT": 2, + "TO": 2, + "BY": 2, + "FOREIGN": 2, + "FULLTEXT": 2, + "KEY": 2, + "KEYS": 2, + "PARTITIONING": 2, + "PRIMARY KEY": 2, + "SPATIAL": 2, + "TABLESPACE": 2, + "INDEX": 2, + "CHARACTER SET": 3 + }, + "USER_OPTIONS": { + "ATTRIBUTE": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "REQUIRE": [ + 1, + "var" + ], + "BY": [ + 2, + "expr" + ], + "PASSWORD": [ + 2, + "var" + ], + "WITH": [ + 2, + "var" + ], + "ACCOUNT": 1, + "DEFAULT": 1, + "LOCK": 2, + "UNLOCK": 2, + "IDENTIFIED": 3 + }, + "VIEW_OPTIONS": { + "AS": 1 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "CHANGE" + } + }, + "field": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "uid", + "expr": "`uid`", + "alias": null, + "function": null, + "subquery": null + }, + "unknown": [ + { + "@type": "@14" + }, + { + "@type": "@15" + }, + { + "@type": "@16" + }, + { + "@type": "@17" + }, + { + "@type": "@18" + }, + { + "@type": "@19" + }, + { + "@type": "@20" + }, + { + "@type": "@21" + }, + { + "@type": "@22" + }, + { + "@type": "@23" + }, + { + "@type": "@24" + }, + { + "@type": "@25" + }, + { + "@type": "@26" + }, + { + "@type": "@27" + }, + { + "@type": "@28" + } + ] + } + ], + "OPTIONS": { + "ONLINE": 1, + "OFFLINE": 1, + "IGNORE": 2, + "DATABASE": 3, + "EVENT": 3, + "FUNCTION": 3, + "PROCEDURE": 3, + "SERVER": 3, + "TABLE": 3, + "TABLESPACE": 3, + "USER": 3, + "VIEW": 3 + }, + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 0, + "last": 43 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Missing comma before start of a new alter operation.", + { + "@type": "@29" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterErr2.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterErr2.in new file mode 100644 index 0000000000..5d5ab08f03 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterErr2.in @@ -0,0 +1,2 @@ +-- missing comma between alter operations +ALTER TABLE tb_foo CHANGE inmsg inmsg date NULL AFTER outmsg2 CHANGE inmsg2 inmsg2 time NULL AFTER inmsg; diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterErr2.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterErr2.out new file mode 100644 index 0000000000..76fb149c70 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterErr2.out @@ -0,0 +1,940 @@ +{ + "query": "-- missing comma between alter operations\nALTER TABLE tb_foo CHANGE inmsg inmsg date NULL AFTER outmsg2 CHANGE inmsg2 inmsg2 time NULL AFTER inmsg;\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "-- missing comma between alter operations\nALTER TABLE tb_foo CHANGE inmsg inmsg date NULL AFTER outmsg2 CHANGE inmsg2 inmsg2 time NULL AFTER inmsg;\n", + "len": 148, + "last": 148, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-- missing comma between alter operations", + "value": "-- missing comma between alter operations", + "keyword": null, + "type": 4, + "flags": 4, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": 1, + "flags": 3, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": 1, + "flags": 3, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "tb_foo", + "value": "tb_foo", + "keyword": null, + "type": 0, + "flags": 0, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CHANGE", + "value": "CHANGE", + "keyword": "CHANGE", + "type": 1, + "flags": 3, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "inmsg", + "value": "inmsg", + "keyword": null, + "type": 0, + "flags": 0, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "inmsg", + "value": "inmsg", + "keyword": null, + "type": 0, + "flags": 0, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "date", + "value": "date", + "keyword": "DATE", + "type": 1, + "flags": 41, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NULL", + "value": "NULL", + "keyword": "NULL", + "type": 1, + "flags": 3, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AFTER", + "value": "AFTER", + "keyword": "AFTER", + "type": 1, + "flags": 1, + "position": 90 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 95 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "outmsg2", + "value": "outmsg2", + "keyword": null, + "type": 0, + "flags": 0, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 103 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CHANGE", + "value": "CHANGE", + "keyword": "CHANGE", + "type": 1, + "flags": 3, + "position": 104 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 110 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "inmsg2", + "value": "inmsg2", + "keyword": null, + "type": 0, + "flags": 0, + "position": 111 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 117 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "inmsg2", + "value": "inmsg2", + "keyword": null, + "type": 0, + "flags": 0, + "position": 118 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 124 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "time", + "value": "time", + "keyword": "TIME", + "type": 1, + "flags": 41, + "position": 125 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 129 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NULL", + "value": "NULL", + "keyword": "NULL", + "type": 1, + "flags": 3, + "position": 130 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 134 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AFTER", + "value": "AFTER", + "keyword": "AFTER", + "type": 1, + "flags": 1, + "position": 135 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 140 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "inmsg", + "value": "inmsg", + "keyword": null, + "type": 0, + "flags": 0, + "position": 141 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 146 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 147 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 38, + "idx": 38 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "tb_foo", + "column": null, + "expr": "tb_foo", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var" + ], + "CHARSET": [ + 1, + "var" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var" + ], + "DEFAULT CHARSET": [ + 1, + "var" + ], + "UPGRADE": [ + 1, + "var" + ], + "COLLATE": [ + 2, + "var" + ], + "DEFAULT COLLATE": [ + 2, + "var" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 1, + "var=" + ], + "AVG_ROW_LENGTH": [ + 1, + "var" + ], + "MAX_ROWS": [ + 1, + "var" + ], + "ROW_FORMAT": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "ADD": 1, + "ALTER": 1, + "ANALYZE": 1, + "CHANGE": 1, + "CHARSET": 1, + "CHECK": 1, + "COALESCE": 1, + "CONVERT": 1, + "DEFAULT CHARSET": 1, + "DISABLE": 1, + "DISCARD": 1, + "DROP": 1, + "ENABLE": 1, + "IMPORT": 1, + "MODIFY": 1, + "OPTIMIZE": 1, + "ORDER": 1, + "PARTITION": 1, + "REBUILD": 1, + "REMOVE": 1, + "RENAME": 1, + "REORGANIZE": 1, + "REPAIR": 1, + "UPGRADE": 1, + "COLUMN": 2, + "CONSTRAINT": 2, + "DEFAULT": 2, + "TO": 2, + "BY": 2, + "FOREIGN": 2, + "FULLTEXT": 2, + "KEY": 2, + "KEYS": 2, + "PARTITIONING": 2, + "PRIMARY KEY": 2, + "SPATIAL": 2, + "TABLESPACE": 2, + "INDEX": 2, + "CHARACTER SET": 3 + }, + "USER_OPTIONS": { + "ATTRIBUTE": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "REQUIRE": [ + 1, + "var" + ], + "BY": [ + 2, + "expr" + ], + "PASSWORD": [ + 2, + "var" + ], + "WITH": [ + 2, + "var" + ], + "ACCOUNT": 1, + "DEFAULT": 1, + "LOCK": 2, + "UNLOCK": 2, + "IDENTIFIED": 3 + }, + "VIEW_OPTIONS": { + "AS": 1 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "CHANGE" + } + }, + "field": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "inmsg", + "expr": "inmsg", + "alias": null, + "function": null, + "subquery": null + }, + "unknown": [ + { + "@type": "@14" + }, + { + "@type": "@15" + }, + { + "@type": "@16" + }, + { + "@type": "@17" + }, + { + "@type": "@18" + }, + { + "@type": "@19" + }, + { + "@type": "@20" + }, + { + "@type": "@21" + }, + { + "@type": "@22" + }, + { + "@type": "@23" + } + ] + } + ], + "OPTIONS": { + "ONLINE": 1, + "OFFLINE": 1, + "IGNORE": 2, + "DATABASE": 3, + "EVENT": 3, + "FUNCTION": 3, + "PROCEDURE": 3, + "SERVER": 3, + "TABLE": 3, + "TABLESPACE": 3, + "USER": 3, + "VIEW": 3 + }, + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 0, + "last": 35 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Missing comma before start of a new alter operation.", + { + "@type": "@24" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterErr3.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterErr3.in new file mode 100644 index 0000000000..63ae92f030 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterErr3.in @@ -0,0 +1,2 @@ +-- missing comma between alter operations +ALTER TABLE `database`.`table` MODIFY `field` INT(11) AUTO_INCREMENT PRIMARY KEY; diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterErr3.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterErr3.out new file mode 100644 index 0000000000..10f20848de --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterErr3.out @@ -0,0 +1,809 @@ +{ + "query": "-- missing comma between alter operations\nALTER TABLE `database`.`table` MODIFY `field` INT(11) AUTO_INCREMENT PRIMARY KEY;\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "-- missing comma between alter operations\nALTER TABLE `database`.`table` MODIFY `field` INT(11) AUTO_INCREMENT PRIMARY KEY;\n", + "len": 124, + "last": 124, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-- missing comma between alter operations", + "value": "-- missing comma between alter operations", + "keyword": null, + "type": 4, + "flags": 4, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": 1, + "flags": 3, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": 1, + "flags": 3, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`database`", + "value": "database", + "keyword": null, + "type": 8, + "flags": 2, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`table`", + "value": "table", + "keyword": null, + "type": 8, + "flags": 2, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "MODIFY", + "value": "MODIFY", + "keyword": "MODIFY", + "type": 1, + "flags": 1, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`field`", + "value": "field", + "keyword": null, + "type": 8, + "flags": 2, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INT", + "value": "INT", + "keyword": "INT", + "type": 1, + "flags": 11, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 91 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "11", + "value": 11, + "keyword": null, + "type": 6, + "flags": 0, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 95 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AUTO_INCREMENT", + "value": "AUTO_INCREMENT", + "keyword": "AUTO_INCREMENT", + "type": 1, + "flags": 1, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 110 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PRIMARY KEY", + "value": "PRIMARY KEY", + "keyword": "PRIMARY KEY", + "type": 1, + "flags": 23, + "position": 111 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 122 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 123 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 25, + "idx": 25 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": "database", + "table": "table", + "column": null, + "expr": "`database`.`table`", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var" + ], + "CHARSET": [ + 1, + "var" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var" + ], + "DEFAULT CHARSET": [ + 1, + "var" + ], + "UPGRADE": [ + 1, + "var" + ], + "COLLATE": [ + 2, + "var" + ], + "DEFAULT COLLATE": [ + 2, + "var" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 1, + "var=" + ], + "AVG_ROW_LENGTH": [ + 1, + "var" + ], + "MAX_ROWS": [ + 1, + "var" + ], + "ROW_FORMAT": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "ADD": 1, + "ALTER": 1, + "ANALYZE": 1, + "CHANGE": 1, + "CHARSET": 1, + "CHECK": 1, + "COALESCE": 1, + "CONVERT": 1, + "DEFAULT CHARSET": 1, + "DISABLE": 1, + "DISCARD": 1, + "DROP": 1, + "ENABLE": 1, + "IMPORT": 1, + "MODIFY": 1, + "OPTIMIZE": 1, + "ORDER": 1, + "PARTITION": 1, + "REBUILD": 1, + "REMOVE": 1, + "RENAME": 1, + "REORGANIZE": 1, + "REPAIR": 1, + "UPGRADE": 1, + "COLUMN": 2, + "CONSTRAINT": 2, + "DEFAULT": 2, + "TO": 2, + "BY": 2, + "FOREIGN": 2, + "FULLTEXT": 2, + "KEY": 2, + "KEYS": 2, + "PARTITIONING": 2, + "PRIMARY KEY": 2, + "SPATIAL": 2, + "TABLESPACE": 2, + "INDEX": 2, + "CHARACTER SET": 3 + }, + "USER_OPTIONS": { + "ATTRIBUTE": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "REQUIRE": [ + 1, + "var" + ], + "BY": [ + 2, + "expr" + ], + "PASSWORD": [ + 2, + "var" + ], + "WITH": [ + 2, + "var" + ], + "ACCOUNT": 1, + "DEFAULT": 1, + "LOCK": 2, + "UNLOCK": 2, + "IDENTIFIED": 3 + }, + "VIEW_OPTIONS": { + "AS": 1 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "MODIFY" + } + }, + "field": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "field", + "expr": "`field`", + "alias": null, + "function": null, + "subquery": null + }, + "unknown": [ + { + "@type": "@16" + }, + { + "@type": "@17" + }, + { + "@type": "@18" + }, + { + "@type": "@19" + }, + { + "@type": "@20" + }, + { + "@type": "@21" + }, + { + "@type": "@22" + }, + { + "@type": "@23" + } + ] + } + ], + "OPTIONS": { + "ONLINE": 1, + "OFFLINE": 1, + "IGNORE": 2, + "DATABASE": 3, + "EVENT": 3, + "FUNCTION": 3, + "PROCEDURE": 3, + "SERVER": 3, + "TABLE": 3, + "TABLESPACE": 3, + "USER": 3, + "VIEW": 3 + }, + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 0, + "last": 22 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterErr4.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterErr4.in new file mode 100644 index 0000000000..7d5229b511 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterErr4.in @@ -0,0 +1 @@ +ALTER TABLE actor ALTER last_update2 SET DEFAULT value1'; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterErr4.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterErr4.out new file mode 100644 index 0000000000..833bccb303 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterErr4.out @@ -0,0 +1,726 @@ +{ + "query": "ALTER TABLE actor ALTER last_update2 SET DEFAULT value1';", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "ALTER TABLE actor ALTER last_update2 SET DEFAULT value1';", + "len": 57, + "last": 58, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": 1, + "flags": 3, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "actor", + "value": "actor", + "keyword": null, + "type": 0, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": 1, + "flags": 3, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "last_update2", + "value": "last_update2", + "keyword": null, + "type": 0, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": 1, + "flags": 11, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT", + "value": "DEFAULT", + "keyword": "DEFAULT", + "type": 1, + "flags": 35, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "value1", + "value": "value1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "';", + "value": "", + "keyword": null, + "type": 7, + "flags": 1, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 17, + "idx": 17 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "actor", + "column": null, + "expr": "actor", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var" + ], + "CHARSET": [ + 1, + "var" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var" + ], + "DEFAULT CHARSET": [ + 1, + "var" + ], + "UPGRADE": [ + 1, + "var" + ], + "COLLATE": [ + 2, + "var" + ], + "DEFAULT COLLATE": [ + 2, + "var" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 1, + "var=" + ], + "AVG_ROW_LENGTH": [ + 1, + "var" + ], + "MAX_ROWS": [ + 1, + "var" + ], + "ROW_FORMAT": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "ADD": 1, + "ALTER": 1, + "ANALYZE": 1, + "CHANGE": 1, + "CHARSET": 1, + "CHECK": 1, + "COALESCE": 1, + "CONVERT": 1, + "DEFAULT CHARSET": 1, + "DISABLE": 1, + "DISCARD": 1, + "DROP": 1, + "ENABLE": 1, + "IMPORT": 1, + "MODIFY": 1, + "OPTIMIZE": 1, + "ORDER": 1, + "PARTITION": 1, + "REBUILD": 1, + "REMOVE": 1, + "RENAME": 1, + "REORGANIZE": 1, + "REPAIR": 1, + "UPGRADE": 1, + "COLUMN": 2, + "CONSTRAINT": 2, + "DEFAULT": 2, + "TO": 2, + "BY": 2, + "FOREIGN": 2, + "FULLTEXT": 2, + "KEY": 2, + "KEYS": 2, + "PARTITIONING": 2, + "PRIMARY KEY": 2, + "SPATIAL": 2, + "TABLESPACE": 2, + "INDEX": 2, + "CHARACTER SET": 3 + }, + "USER_OPTIONS": { + "ATTRIBUTE": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "REQUIRE": [ + 1, + "var" + ], + "BY": [ + 2, + "expr" + ], + "PASSWORD": [ + 2, + "var" + ], + "WITH": [ + 2, + "var" + ], + "ACCOUNT": 1, + "DEFAULT": 1, + "LOCK": 2, + "UNLOCK": 2, + "IDENTIFIED": 3 + }, + "VIEW_OPTIONS": { + "AS": 1 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "ALTER" + } + }, + "field": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "last_update2", + "expr": "last_update2", + "alias": null, + "function": null, + "subquery": null + }, + "unknown": [ + { + "@type": "@12" + }, + { + "@type": "@17" + } + ] + } + ], + "OPTIONS": { + "ONLINE": 1, + "OFFLINE": 1, + "IGNORE": 2, + "DATABASE": 3, + "EVENT": 3, + "FUNCTION": 3, + "PROCEDURE": 3, + "SERVER": 3, + "TABLE": 3, + "TABLESPACE": 3, + "USER": 3, + "VIEW": 3 + }, + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 0, + "last": 16 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [ + [ + "Ending quote ' was expected.", + "", + 57, + 0 + ] + ], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterTableCharacterSet1.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterTableCharacterSet1.in new file mode 100644 index 0000000000..5796c04507 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterTableCharacterSet1.in @@ -0,0 +1 @@ +ALTER TABLE `d` DEFAULT CHARSET=hp8 COLLATE hp8_english_ci; diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterTableCharacterSet1.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterTableCharacterSet1.out new file mode 100644 index 0000000000..a0b305f570 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterTableCharacterSet1.out @@ -0,0 +1,700 @@ +{ + "query": "ALTER TABLE `d` DEFAULT CHARSET=hp8 COLLATE hp8_english_ci;\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "ALTER TABLE `d` DEFAULT CHARSET=hp8 COLLATE hp8_english_ci;\n", + "len": 60, + "last": 60, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": 1, + "flags": 3, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`d`", + "value": "d", + "keyword": null, + "type": 8, + "flags": 2, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT CHARSET", + "value": "DEFAULT CHARSET", + "keyword": "DEFAULT CHARSET", + "type": 1, + "flags": 7, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "hp8", + "value": "hp8", + "keyword": null, + "type": 0, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COLLATE", + "value": "COLLATE", + "keyword": "COLLATE", + "type": 1, + "flags": 3, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "hp8_english_ci", + "value": "hp8_english_ci", + "keyword": null, + "type": 0, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 16, + "idx": 16 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "d", + "column": null, + "expr": "`d`", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var" + ], + "CHARSET": [ + 1, + "var" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var" + ], + "DEFAULT CHARSET": [ + 1, + "var" + ], + "UPGRADE": [ + 1, + "var" + ], + "COLLATE": [ + 2, + "var" + ], + "DEFAULT COLLATE": [ + 2, + "var" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 1, + "var=" + ], + "AVG_ROW_LENGTH": [ + 1, + "var" + ], + "MAX_ROWS": [ + 1, + "var" + ], + "ROW_FORMAT": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "ADD": 1, + "ALTER": 1, + "ANALYZE": 1, + "CHANGE": 1, + "CHARSET": 1, + "CHECK": 1, + "COALESCE": 1, + "CONVERT": 1, + "DEFAULT CHARSET": 1, + "DISABLE": 1, + "DISCARD": 1, + "DROP": 1, + "ENABLE": 1, + "IMPORT": 1, + "MODIFY": 1, + "OPTIMIZE": 1, + "ORDER": 1, + "PARTITION": 1, + "REBUILD": 1, + "REMOVE": 1, + "RENAME": 1, + "REORGANIZE": 1, + "REPAIR": 1, + "UPGRADE": 1, + "COLUMN": 2, + "CONSTRAINT": 2, + "DEFAULT": 2, + "TO": 2, + "BY": 2, + "FOREIGN": 2, + "FULLTEXT": 2, + "KEY": 2, + "KEYS": 2, + "PARTITIONING": 2, + "PRIMARY KEY": 2, + "SPATIAL": 2, + "TABLESPACE": 2, + "INDEX": 2, + "CHARACTER SET": 3 + }, + "USER_OPTIONS": { + "ATTRIBUTE": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "REQUIRE": [ + 1, + "var" + ], + "BY": [ + 2, + "expr" + ], + "PASSWORD": [ + 2, + "var" + ], + "WITH": [ + 2, + "var" + ], + "ACCOUNT": 1, + "DEFAULT": 1, + "LOCK": 2, + "UNLOCK": 2, + "IDENTIFIED": 3 + }, + "VIEW_OPTIONS": { + "AS": 1 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "DEFAULT CHARSET" + } + }, + "field": null, + "unknown": [ + { + "@type": "@9" + }, + { + "@type": "@10" + }, + { + "@type": "@11" + }, + { + "@type": "@12" + }, + { + "@type": "@13" + }, + { + "@type": "@14" + } + ] + } + ], + "OPTIONS": { + "ONLINE": 1, + "OFFLINE": 1, + "IGNORE": 2, + "DATABASE": 3, + "EVENT": 3, + "FUNCTION": 3, + "PROCEDURE": 3, + "SERVER": 3, + "TABLE": 3, + "TABLESPACE": 3, + "USER": 3, + "VIEW": 3 + }, + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 0, + "last": 13 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterTableCharacterSet2.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterTableCharacterSet2.in new file mode 100644 index 0000000000..42854df9b0 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterTableCharacterSet2.in @@ -0,0 +1,2 @@ +ALTER TABLE `d` CHARSET=hp8 + diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterTableCharacterSet2.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterTableCharacterSet2.out new file mode 100644 index 0000000000..643667d85a --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterTableCharacterSet2.out @@ -0,0 +1,646 @@ +{ + "query": "ALTER TABLE `d` CHARSET=hp8\n\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "ALTER TABLE `d` CHARSET=hp8\n\n", + "len": 29, + "last": 29, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": 1, + "flags": 3, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`d`", + "value": "d", + "keyword": null, + "type": 8, + "flags": 2, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CHARSET", + "value": "CHARSET", + "keyword": "CHARSET", + "type": 1, + "flags": 33, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "hp8", + "value": "hp8", + "keyword": null, + "type": 0, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 11, + "idx": 11 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "d", + "column": null, + "expr": "`d`", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var" + ], + "CHARSET": [ + 1, + "var" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var" + ], + "DEFAULT CHARSET": [ + 1, + "var" + ], + "UPGRADE": [ + 1, + "var" + ], + "COLLATE": [ + 2, + "var" + ], + "DEFAULT COLLATE": [ + 2, + "var" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 1, + "var=" + ], + "AVG_ROW_LENGTH": [ + 1, + "var" + ], + "MAX_ROWS": [ + 1, + "var" + ], + "ROW_FORMAT": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "ADD": 1, + "ALTER": 1, + "ANALYZE": 1, + "CHANGE": 1, + "CHARSET": 1, + "CHECK": 1, + "COALESCE": 1, + "CONVERT": 1, + "DEFAULT CHARSET": 1, + "DISABLE": 1, + "DISCARD": 1, + "DROP": 1, + "ENABLE": 1, + "IMPORT": 1, + "MODIFY": 1, + "OPTIMIZE": 1, + "ORDER": 1, + "PARTITION": 1, + "REBUILD": 1, + "REMOVE": 1, + "RENAME": 1, + "REORGANIZE": 1, + "REPAIR": 1, + "UPGRADE": 1, + "COLUMN": 2, + "CONSTRAINT": 2, + "DEFAULT": 2, + "TO": 2, + "BY": 2, + "FOREIGN": 2, + "FULLTEXT": 2, + "KEY": 2, + "KEYS": 2, + "PARTITIONING": 2, + "PRIMARY KEY": 2, + "SPATIAL": 2, + "TABLESPACE": 2, + "INDEX": 2, + "CHARACTER SET": 3 + }, + "USER_OPTIONS": { + "ATTRIBUTE": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "REQUIRE": [ + 1, + "var" + ], + "BY": [ + 2, + "expr" + ], + "PASSWORD": [ + 2, + "var" + ], + "WITH": [ + 2, + "var" + ], + "ACCOUNT": 1, + "DEFAULT": 1, + "LOCK": 2, + "UNLOCK": 2, + "IDENTIFIED": 3 + }, + "VIEW_OPTIONS": { + "AS": 1 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "CHARSET" + } + }, + "field": null, + "unknown": [ + { + "@type": "@9" + }, + { + "@type": "@10" + }, + { + "@type": "@11" + } + ] + } + ], + "OPTIONS": { + "ONLINE": 1, + "OFFLINE": 1, + "IGNORE": 2, + "DATABASE": 3, + "EVENT": 3, + "FUNCTION": 3, + "PROCEDURE": 3, + "SERVER": 3, + "TABLE": 3, + "TABLESPACE": 3, + "USER": 3, + "VIEW": 3 + }, + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 0, + "last": 10 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterTableCharacterSet3.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterTableCharacterSet3.in new file mode 100644 index 0000000000..535272242f --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterTableCharacterSet3.in @@ -0,0 +1 @@ +ALTER TABLE `d` CHARSET=hp8; diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterTableCharacterSet3.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterTableCharacterSet3.out new file mode 100644 index 0000000000..dc99d5079d --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterTableCharacterSet3.out @@ -0,0 +1,652 @@ +{ + "query": "ALTER TABLE `d` CHARSET=hp8;\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "ALTER TABLE `d` CHARSET=hp8;\n", + "len": 29, + "last": 29, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": 1, + "flags": 3, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`d`", + "value": "d", + "keyword": null, + "type": 8, + "flags": 2, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CHARSET", + "value": "CHARSET", + "keyword": "CHARSET", + "type": 1, + "flags": 33, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "hp8", + "value": "hp8", + "keyword": null, + "type": 0, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 12, + "idx": 12 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "d", + "column": null, + "expr": "`d`", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var" + ], + "CHARSET": [ + 1, + "var" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var" + ], + "DEFAULT CHARSET": [ + 1, + "var" + ], + "UPGRADE": [ + 1, + "var" + ], + "COLLATE": [ + 2, + "var" + ], + "DEFAULT COLLATE": [ + 2, + "var" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 1, + "var=" + ], + "AVG_ROW_LENGTH": [ + 1, + "var" + ], + "MAX_ROWS": [ + 1, + "var" + ], + "ROW_FORMAT": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "ADD": 1, + "ALTER": 1, + "ANALYZE": 1, + "CHANGE": 1, + "CHARSET": 1, + "CHECK": 1, + "COALESCE": 1, + "CONVERT": 1, + "DEFAULT CHARSET": 1, + "DISABLE": 1, + "DISCARD": 1, + "DROP": 1, + "ENABLE": 1, + "IMPORT": 1, + "MODIFY": 1, + "OPTIMIZE": 1, + "ORDER": 1, + "PARTITION": 1, + "REBUILD": 1, + "REMOVE": 1, + "RENAME": 1, + "REORGANIZE": 1, + "REPAIR": 1, + "UPGRADE": 1, + "COLUMN": 2, + "CONSTRAINT": 2, + "DEFAULT": 2, + "TO": 2, + "BY": 2, + "FOREIGN": 2, + "FULLTEXT": 2, + "KEY": 2, + "KEYS": 2, + "PARTITIONING": 2, + "PRIMARY KEY": 2, + "SPATIAL": 2, + "TABLESPACE": 2, + "INDEX": 2, + "CHARACTER SET": 3 + }, + "USER_OPTIONS": { + "ATTRIBUTE": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "REQUIRE": [ + 1, + "var" + ], + "BY": [ + 2, + "expr" + ], + "PASSWORD": [ + 2, + "var" + ], + "WITH": [ + 2, + "var" + ], + "ACCOUNT": 1, + "DEFAULT": 1, + "LOCK": 2, + "UNLOCK": 2, + "IDENTIFIED": 3 + }, + "VIEW_OPTIONS": { + "AS": 1 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "CHARSET" + } + }, + "field": null, + "unknown": [ + { + "@type": "@9" + }, + { + "@type": "@10" + } + ] + } + ], + "OPTIONS": { + "ONLINE": 1, + "OFFLINE": 1, + "IGNORE": 2, + "DATABASE": 3, + "EVENT": 3, + "FUNCTION": 3, + "PROCEDURE": 3, + "SERVER": 3, + "TABLE": 3, + "TABLESPACE": 3, + "USER": 3, + "VIEW": 3 + }, + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 0, + "last": 9 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterTableCharacterSet4.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterTableCharacterSet4.in new file mode 100644 index 0000000000..8285dc84da --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterTableCharacterSet4.in @@ -0,0 +1,2 @@ +ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name; + diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterTableCharacterSet4.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterTableCharacterSet4.out new file mode 100644 index 0000000000..64d7db5a7d --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterTableCharacterSet4.out @@ -0,0 +1,705 @@ +{ + "query": "ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;\n\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name;\n\n", + "len": 61, + "last": 61, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": 1, + "flags": 3, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "tbl_name", + "value": "tbl_name", + "keyword": null, + "type": 0, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CONVERT", + "value": "CONVERT", + "keyword": "CONVERT", + "type": 1, + "flags": 35, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TO", + "value": "TO", + "keyword": "TO", + "type": 1, + "flags": 3, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CHARACTER SET", + "value": "CHARACTER SET", + "keyword": "CHARACTER SET", + "type": 1, + "flags": 7, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "charset_name", + "value": "charset_name", + "keyword": null, + "type": 0, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 16, + "idx": 16 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "tbl_name", + "column": null, + "expr": "tbl_name", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var" + ], + "CHARSET": [ + 1, + "var" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var" + ], + "DEFAULT CHARSET": [ + 1, + "var" + ], + "UPGRADE": [ + 1, + "var" + ], + "COLLATE": [ + 2, + "var" + ], + "DEFAULT COLLATE": [ + 2, + "var" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 1, + "var=" + ], + "AVG_ROW_LENGTH": [ + 1, + "var" + ], + "MAX_ROWS": [ + 1, + "var" + ], + "ROW_FORMAT": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "ADD": 1, + "ALTER": 1, + "ANALYZE": 1, + "CHANGE": 1, + "CHARSET": 1, + "CHECK": 1, + "COALESCE": 1, + "CONVERT": 1, + "DEFAULT CHARSET": 1, + "DISABLE": 1, + "DISCARD": 1, + "DROP": 1, + "ENABLE": 1, + "IMPORT": 1, + "MODIFY": 1, + "OPTIMIZE": 1, + "ORDER": 1, + "PARTITION": 1, + "REBUILD": 1, + "REMOVE": 1, + "RENAME": 1, + "REORGANIZE": 1, + "REPAIR": 1, + "UPGRADE": 1, + "COLUMN": 2, + "CONSTRAINT": 2, + "DEFAULT": 2, + "TO": 2, + "BY": 2, + "FOREIGN": 2, + "FULLTEXT": 2, + "KEY": 2, + "KEYS": 2, + "PARTITIONING": 2, + "PRIMARY KEY": 2, + "SPATIAL": 2, + "TABLESPACE": 2, + "INDEX": 2, + "CHARACTER SET": 3 + }, + "USER_OPTIONS": { + "ATTRIBUTE": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "REQUIRE": [ + 1, + "var" + ], + "BY": [ + 2, + "expr" + ], + "PASSWORD": [ + 2, + "var" + ], + "WITH": [ + 2, + "var" + ], + "ACCOUNT": 1, + "DEFAULT": 1, + "LOCK": 2, + "UNLOCK": 2, + "IDENTIFIED": 3 + }, + "VIEW_OPTIONS": { + "AS": 1 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "CONVERT", + "2": "TO", + "3": "CHARACTER SET" + } + }, + "field": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "charset_name", + "expr": "charset_name", + "alias": null, + "function": null, + "subquery": null + }, + "unknown": [] + } + ], + "OPTIONS": { + "ONLINE": 1, + "OFFLINE": 1, + "IGNORE": 2, + "DATABASE": 3, + "EVENT": 3, + "FUNCTION": 3, + "PROCEDURE": 3, + "SERVER": 3, + "TABLE": 3, + "TABLESPACE": 3, + "USER": 3, + "VIEW": 3 + }, + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 0, + "last": 13 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterTableCharacterSet5.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterTableCharacterSet5.in new file mode 100644 index 0000000000..1ebca8704a --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterTableCharacterSet5.in @@ -0,0 +1,2 @@ +ALTER TABLE `d` CHARACTER SET utf8; + diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterTableCharacterSet5.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterTableCharacterSet5.out new file mode 100644 index 0000000000..cb3a04c94e --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterTableCharacterSet5.out @@ -0,0 +1,667 @@ +{ + "query": "ALTER TABLE `d` CHARACTER SET utf8;\n\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "ALTER TABLE `d` CHARACTER SET utf8;\n\n", + "len": 37, + "last": 37, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": 1, + "flags": 3, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`d`", + "value": "d", + "keyword": null, + "type": 8, + "flags": 2, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CHARACTER SET", + "value": "CHARACTER SET", + "keyword": "CHARACTER SET", + "type": 1, + "flags": 7, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "utf8", + "value": "utf8", + "keyword": null, + "type": 0, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 12, + "idx": 12 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "d", + "column": null, + "expr": "`d`", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var" + ], + "CHARSET": [ + 1, + "var" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var" + ], + "DEFAULT CHARSET": [ + 1, + "var" + ], + "UPGRADE": [ + 1, + "var" + ], + "COLLATE": [ + 2, + "var" + ], + "DEFAULT COLLATE": [ + 2, + "var" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 1, + "var=" + ], + "AVG_ROW_LENGTH": [ + 1, + "var" + ], + "MAX_ROWS": [ + 1, + "var" + ], + "ROW_FORMAT": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "ADD": 1, + "ALTER": 1, + "ANALYZE": 1, + "CHANGE": 1, + "CHARSET": 1, + "CHECK": 1, + "COALESCE": 1, + "CONVERT": 1, + "DEFAULT CHARSET": 1, + "DISABLE": 1, + "DISCARD": 1, + "DROP": 1, + "ENABLE": 1, + "IMPORT": 1, + "MODIFY": 1, + "OPTIMIZE": 1, + "ORDER": 1, + "PARTITION": 1, + "REBUILD": 1, + "REMOVE": 1, + "RENAME": 1, + "REORGANIZE": 1, + "REPAIR": 1, + "UPGRADE": 1, + "COLUMN": 2, + "CONSTRAINT": 2, + "DEFAULT": 2, + "TO": 2, + "BY": 2, + "FOREIGN": 2, + "FULLTEXT": 2, + "KEY": 2, + "KEYS": 2, + "PARTITIONING": 2, + "PRIMARY KEY": 2, + "SPATIAL": 2, + "TABLESPACE": 2, + "INDEX": 2, + "CHARACTER SET": 3 + }, + "USER_OPTIONS": { + "ATTRIBUTE": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "REQUIRE": [ + 1, + "var" + ], + "BY": [ + 2, + "expr" + ], + "PASSWORD": [ + 2, + "var" + ], + "WITH": [ + 2, + "var" + ], + "ACCOUNT": 1, + "DEFAULT": 1, + "LOCK": 2, + "UNLOCK": 2, + "IDENTIFIED": 3 + }, + "VIEW_OPTIONS": { + "AS": 1 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "CHARACTER SET" + } + }, + "field": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "utf8", + "expr": "utf8", + "alias": null, + "function": null, + "subquery": null + }, + "unknown": [] + } + ], + "OPTIONS": { + "ONLINE": 1, + "OFFLINE": 1, + "IGNORE": 2, + "DATABASE": 3, + "EVENT": 3, + "FUNCTION": 3, + "PROCEDURE": 3, + "SERVER": 3, + "TABLE": 3, + "TABLESPACE": 3, + "USER": 3, + "VIEW": 3 + }, + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 0, + "last": 9 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterTableCharacterSet6.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterTableCharacterSet6.in new file mode 100644 index 0000000000..cff88fd4a9 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterTableCharacterSet6.in @@ -0,0 +1,2 @@ +ALTER TABLE `d` CHARACTER SET utf8 COLLATE utf8_general_ci; + diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterTableCharacterSet6.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterTableCharacterSet6.out new file mode 100644 index 0000000000..48ead70fda --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterTableCharacterSet6.out @@ -0,0 +1,713 @@ +{ + "query": "ALTER TABLE `d` CHARACTER SET utf8 COLLATE utf8_general_ci;\n\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "ALTER TABLE `d` CHARACTER SET utf8 COLLATE utf8_general_ci;\n\n", + "len": 61, + "last": 61, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": 1, + "flags": 3, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`d`", + "value": "d", + "keyword": null, + "type": 8, + "flags": 2, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CHARACTER SET", + "value": "CHARACTER SET", + "keyword": "CHARACTER SET", + "type": 1, + "flags": 7, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "utf8", + "value": "utf8", + "keyword": null, + "type": 0, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COLLATE", + "value": "COLLATE", + "keyword": "COLLATE", + "type": 1, + "flags": 3, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "utf8_general_ci", + "value": "utf8_general_ci", + "keyword": null, + "type": 0, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 16, + "idx": 16 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "d", + "column": null, + "expr": "`d`", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var" + ], + "CHARSET": [ + 1, + "var" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var" + ], + "DEFAULT CHARSET": [ + 1, + "var" + ], + "UPGRADE": [ + 1, + "var" + ], + "COLLATE": [ + 2, + "var" + ], + "DEFAULT COLLATE": [ + 2, + "var" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 1, + "var=" + ], + "AVG_ROW_LENGTH": [ + 1, + "var" + ], + "MAX_ROWS": [ + 1, + "var" + ], + "ROW_FORMAT": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "ADD": 1, + "ALTER": 1, + "ANALYZE": 1, + "CHANGE": 1, + "CHARSET": 1, + "CHECK": 1, + "COALESCE": 1, + "CONVERT": 1, + "DEFAULT CHARSET": 1, + "DISABLE": 1, + "DISCARD": 1, + "DROP": 1, + "ENABLE": 1, + "IMPORT": 1, + "MODIFY": 1, + "OPTIMIZE": 1, + "ORDER": 1, + "PARTITION": 1, + "REBUILD": 1, + "REMOVE": 1, + "RENAME": 1, + "REORGANIZE": 1, + "REPAIR": 1, + "UPGRADE": 1, + "COLUMN": 2, + "CONSTRAINT": 2, + "DEFAULT": 2, + "TO": 2, + "BY": 2, + "FOREIGN": 2, + "FULLTEXT": 2, + "KEY": 2, + "KEYS": 2, + "PARTITIONING": 2, + "PRIMARY KEY": 2, + "SPATIAL": 2, + "TABLESPACE": 2, + "INDEX": 2, + "CHARACTER SET": 3 + }, + "USER_OPTIONS": { + "ATTRIBUTE": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "REQUIRE": [ + 1, + "var" + ], + "BY": [ + 2, + "expr" + ], + "PASSWORD": [ + 2, + "var" + ], + "WITH": [ + 2, + "var" + ], + "ACCOUNT": 1, + "DEFAULT": 1, + "LOCK": 2, + "UNLOCK": 2, + "IDENTIFIED": 3 + }, + "VIEW_OPTIONS": { + "AS": 1 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "CHARACTER SET" + } + }, + "field": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "utf8", + "expr": "utf8", + "alias": null, + "function": null, + "subquery": null + }, + "unknown": [ + { + "@type": "@12" + }, + { + "@type": "@13" + }, + { + "@type": "@14" + } + ] + } + ], + "OPTIONS": { + "ONLINE": 1, + "OFFLINE": 1, + "IGNORE": 2, + "DATABASE": 3, + "EVENT": 3, + "FUNCTION": 3, + "PROCEDURE": 3, + "SERVER": 3, + "TABLE": 3, + "TABLESPACE": 3, + "USER": 3, + "VIEW": 3 + }, + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 0, + "last": 13 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterTableCharacterSet7.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterTableCharacterSet7.in new file mode 100644 index 0000000000..2e06d7c6f7 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterTableCharacterSet7.in @@ -0,0 +1,2 @@ +ALTER TABLE `d` CHARACTER SET utf8 COLLATE utf8_general_ci; + diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterTableCharacterSet7.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterTableCharacterSet7.out new file mode 100644 index 0000000000..cf3c5d8123 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterTableCharacterSet7.out @@ -0,0 +1,713 @@ +{ + "query": "ALTER TABLE `d` CHARACTER SET utf8 COLLATE utf8_general_ci;\n\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "ALTER TABLE `d` CHARACTER SET utf8 COLLATE utf8_general_ci;\n\n", + "len": 75, + "last": 75, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": 1, + "flags": 3, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`d`", + "value": "d", + "keyword": null, + "type": 8, + "flags": 2, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CHARACTER SET", + "value": "CHARACTER SET", + "keyword": "CHARACTER SET", + "type": 1, + "flags": 7, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "utf8", + "value": "utf8", + "keyword": null, + "type": 0, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COLLATE", + "value": "COLLATE", + "keyword": "COLLATE", + "type": 1, + "flags": 3, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "utf8_general_ci", + "value": "utf8_general_ci", + "keyword": null, + "type": 0, + "flags": 0, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 16, + "idx": 16 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "d", + "column": null, + "expr": "`d`", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var" + ], + "CHARSET": [ + 1, + "var" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var" + ], + "DEFAULT CHARSET": [ + 1, + "var" + ], + "UPGRADE": [ + 1, + "var" + ], + "COLLATE": [ + 2, + "var" + ], + "DEFAULT COLLATE": [ + 2, + "var" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 1, + "var=" + ], + "AVG_ROW_LENGTH": [ + 1, + "var" + ], + "MAX_ROWS": [ + 1, + "var" + ], + "ROW_FORMAT": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "ADD": 1, + "ALTER": 1, + "ANALYZE": 1, + "CHANGE": 1, + "CHARSET": 1, + "CHECK": 1, + "COALESCE": 1, + "CONVERT": 1, + "DEFAULT CHARSET": 1, + "DISABLE": 1, + "DISCARD": 1, + "DROP": 1, + "ENABLE": 1, + "IMPORT": 1, + "MODIFY": 1, + "OPTIMIZE": 1, + "ORDER": 1, + "PARTITION": 1, + "REBUILD": 1, + "REMOVE": 1, + "RENAME": 1, + "REORGANIZE": 1, + "REPAIR": 1, + "UPGRADE": 1, + "COLUMN": 2, + "CONSTRAINT": 2, + "DEFAULT": 2, + "TO": 2, + "BY": 2, + "FOREIGN": 2, + "FULLTEXT": 2, + "KEY": 2, + "KEYS": 2, + "PARTITIONING": 2, + "PRIMARY KEY": 2, + "SPATIAL": 2, + "TABLESPACE": 2, + "INDEX": 2, + "CHARACTER SET": 3 + }, + "USER_OPTIONS": { + "ATTRIBUTE": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "REQUIRE": [ + 1, + "var" + ], + "BY": [ + 2, + "expr" + ], + "PASSWORD": [ + 2, + "var" + ], + "WITH": [ + 2, + "var" + ], + "ACCOUNT": 1, + "DEFAULT": 1, + "LOCK": 2, + "UNLOCK": 2, + "IDENTIFIED": 3 + }, + "VIEW_OPTIONS": { + "AS": 1 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "CHARACTER SET" + } + }, + "field": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "utf8", + "expr": "utf8", + "alias": null, + "function": null, + "subquery": null + }, + "unknown": [ + { + "@type": "@12" + }, + { + "@type": "@13" + }, + { + "@type": "@14" + } + ] + } + ], + "OPTIONS": { + "ONLINE": 1, + "OFFLINE": 1, + "IGNORE": 2, + "DATABASE": 3, + "EVENT": 3, + "FUNCTION": 3, + "PROCEDURE": 3, + "SERVER": 3, + "TABLE": 3, + "TABLESPACE": 3, + "USER": 3, + "VIEW": 3 + }, + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 0, + "last": 13 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterTableSetAutoIncrementError.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterTableSetAutoIncrementError.in new file mode 100644 index 0000000000..2d7993c1a4 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterTableSetAutoIncrementError.in @@ -0,0 +1 @@ +ALTER TABLE t1 AUTO_INCREMENT diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterTableSetAutoIncrementError.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterTableSetAutoIncrementError.out new file mode 100644 index 0000000000..f7a1ba44c3 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterTableSetAutoIncrementError.out @@ -0,0 +1,631 @@ +{ + "query": "ALTER TABLE t1 AUTO_INCREMENT\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "ALTER TABLE t1 AUTO_INCREMENT\n", + "len": 30, + "last": 30, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": 1, + "flags": 3, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t1", + "value": "t1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AUTO_INCREMENT", + "value": "AUTO_INCREMENT", + "keyword": "AUTO_INCREMENT", + "type": 1, + "flags": 1, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 9, + "idx": 9 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "t1", + "column": null, + "expr": "t1", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var" + ], + "CHARSET": [ + 1, + "var" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var" + ], + "DEFAULT CHARSET": [ + 1, + "var" + ], + "UPGRADE": [ + 1, + "var" + ], + "COLLATE": [ + 2, + "var" + ], + "DEFAULT COLLATE": [ + 2, + "var" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 1, + "var=" + ], + "AVG_ROW_LENGTH": [ + 1, + "var" + ], + "MAX_ROWS": [ + 1, + "var" + ], + "ROW_FORMAT": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "ADD": 1, + "ALTER": 1, + "ANALYZE": 1, + "CHANGE": 1, + "CHARSET": 1, + "CHECK": 1, + "COALESCE": 1, + "CONVERT": 1, + "DEFAULT CHARSET": 1, + "DISABLE": 1, + "DISCARD": 1, + "DROP": 1, + "ENABLE": 1, + "IMPORT": 1, + "MODIFY": 1, + "OPTIMIZE": 1, + "ORDER": 1, + "PARTITION": 1, + "REBUILD": 1, + "REMOVE": 1, + "RENAME": 1, + "REORGANIZE": 1, + "REPAIR": 1, + "UPGRADE": 1, + "COLUMN": 2, + "CONSTRAINT": 2, + "DEFAULT": 2, + "TO": 2, + "BY": 2, + "FOREIGN": 2, + "FULLTEXT": 2, + "KEY": 2, + "KEYS": 2, + "PARTITIONING": 2, + "PRIMARY KEY": 2, + "SPATIAL": 2, + "TABLESPACE": 2, + "INDEX": 2, + "CHARACTER SET": 3 + }, + "USER_OPTIONS": { + "ATTRIBUTE": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "REQUIRE": [ + 1, + "var" + ], + "BY": [ + 2, + "expr" + ], + "PASSWORD": [ + 2, + "var" + ], + "WITH": [ + 2, + "var" + ], + "ACCOUNT": 1, + "DEFAULT": 1, + "LOCK": 2, + "UNLOCK": 2, + "IDENTIFIED": 3 + }, + "VIEW_OPTIONS": { + "AS": 1 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "AUTO_INCREMENT", + "equals": true, + "expr": "", + "value": "" + } + } + }, + "field": null, + "unknown": [] + } + ], + "OPTIONS": { + "ONLINE": 1, + "OFFLINE": 1, + "IGNORE": 2, + "DATABASE": 3, + "EVENT": 3, + "FUNCTION": 3, + "PROCEDURE": 3, + "SERVER": 3, + "TABLE": 3, + "TABLESPACE": 3, + "USER": 3, + "VIEW": 3 + }, + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 0, + "last": 8 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Value\/Expression for the option AUTO_INCREMENT was expected.", + { + "@type": "@9" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterUser.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterUser.in new file mode 100644 index 0000000000..db5975d94b --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterUser.in @@ -0,0 +1,2 @@ +ALTER USER 'jeffrey'@'localhost' + IDENTIFIED BY 'new_password' PASSWORD EXPIRE; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterUser.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterUser.out new file mode 100644 index 0000000000..5d40c9c734 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterUser.out @@ -0,0 +1,740 @@ +{ + "query": "ALTER USER 'jeffrey'@'localhost'\n IDENTIFIED BY 'new_password' PASSWORD EXPIRE;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "ALTER USER 'jeffrey'@'localhost'\n IDENTIFIED BY 'new_password' PASSWORD EXPIRE;", + "len": 80, + "last": 80, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USER", + "value": "USER", + "keyword": "USER", + "type": 1, + "flags": 33, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'jeffrey'@'localhost'", + "value": "jeffrey@localhost", + "keyword": null, + "type": 8, + "flags": 4, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IDENTIFIED", + "value": "IDENTIFIED", + "keyword": "IDENTIFIED", + "type": 1, + "flags": 1, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "BY", + "value": "BY", + "keyword": "BY", + "type": 1, + "flags": 3, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'new_password'", + "value": "new_password", + "keyword": null, + "type": 7, + "flags": 1, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PASSWORD", + "value": "PASSWORD", + "keyword": "PASSWORD", + "type": 1, + "flags": 33, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "EXPIRE", + "value": "EXPIRE", + "keyword": "EXPIRE", + "type": 1, + "flags": 1, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 17, + "idx": 17 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "jeffrey@localhost", + "column": null, + "expr": "'jeffrey'@'localhost'", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var" + ], + "CHARSET": [ + 1, + "var" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var" + ], + "DEFAULT CHARSET": [ + 1, + "var" + ], + "UPGRADE": [ + 1, + "var" + ], + "COLLATE": [ + 2, + "var" + ], + "DEFAULT COLLATE": [ + 2, + "var" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 1, + "var=" + ], + "AVG_ROW_LENGTH": [ + 1, + "var" + ], + "MAX_ROWS": [ + 1, + "var" + ], + "ROW_FORMAT": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "ADD": 1, + "ALTER": 1, + "ANALYZE": 1, + "CHANGE": 1, + "CHARSET": 1, + "CHECK": 1, + "COALESCE": 1, + "CONVERT": 1, + "DEFAULT CHARSET": 1, + "DISABLE": 1, + "DISCARD": 1, + "DROP": 1, + "ENABLE": 1, + "IMPORT": 1, + "MODIFY": 1, + "OPTIMIZE": 1, + "ORDER": 1, + "PARTITION": 1, + "REBUILD": 1, + "REMOVE": 1, + "RENAME": 1, + "REORGANIZE": 1, + "REPAIR": 1, + "UPGRADE": 1, + "COLUMN": 2, + "CONSTRAINT": 2, + "DEFAULT": 2, + "TO": 2, + "BY": 2, + "FOREIGN": 2, + "FULLTEXT": 2, + "KEY": 2, + "KEYS": 2, + "PARTITIONING": 2, + "PRIMARY KEY": 2, + "SPATIAL": 2, + "TABLESPACE": 2, + "INDEX": 2, + "CHARACTER SET": 3 + }, + "USER_OPTIONS": { + "ATTRIBUTE": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "REQUIRE": [ + 1, + "var" + ], + "BY": [ + 2, + "expr" + ], + "PASSWORD": [ + 2, + "var" + ], + "WITH": [ + 2, + "var" + ], + "ACCOUNT": 1, + "DEFAULT": 1, + "LOCK": 2, + "UNLOCK": 2, + "IDENTIFIED": 3 + }, + "VIEW_OPTIONS": { + "AS": 1 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": { + "name": "BY", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "new_password", + "expr": "'new_password'PASSWORD", + "alias": null, + "function": null, + "subquery": null + }, + "value": "'new_password'PASSWORD" + }, + "3": "IDENTIFIED" + } + }, + "field": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "EXPIRE", + "expr": "EXPIRE", + "alias": null, + "function": null, + "subquery": null + }, + "unknown": [] + } + ], + "OPTIONS": { + "ONLINE": 1, + "OFFLINE": 1, + "IGNORE": 2, + "DATABASE": 3, + "EVENT": 3, + "FUNCTION": 3, + "PROCEDURE": 3, + "SERVER": 3, + "TABLE": 3, + "TABLESPACE": 3, + "USER": 3, + "VIEW": 3 + }, + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "USER" + } + }, + "first": 0, + "last": 15 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterUser1.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterUser1.in new file mode 100644 index 0000000000..629df955eb --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterUser1.in @@ -0,0 +1 @@ +ALTER USER trevor REQUIRE NONE; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterUser1.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterUser1.out new file mode 100644 index 0000000000..5fc8c962a5 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterUser1.out @@ -0,0 +1,641 @@ +{ + "query": "ALTER USER trevor REQUIRE NONE;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "ALTER USER trevor REQUIRE NONE;", + "len": 31, + "last": 31, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USER", + "value": "USER", + "keyword": "USER", + "type": 1, + "flags": 33, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "trevor", + "value": "trevor", + "keyword": null, + "type": 0, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "REQUIRE", + "value": "REQUIRE", + "keyword": "REQUIRE", + "type": 1, + "flags": 3, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NONE", + "value": "NONE", + "keyword": "NONE", + "type": 1, + "flags": 1, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 11, + "idx": 11 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "trevor", + "column": null, + "expr": "trevor", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var" + ], + "CHARSET": [ + 1, + "var" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var" + ], + "DEFAULT CHARSET": [ + 1, + "var" + ], + "UPGRADE": [ + 1, + "var" + ], + "COLLATE": [ + 2, + "var" + ], + "DEFAULT COLLATE": [ + 2, + "var" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 1, + "var=" + ], + "AVG_ROW_LENGTH": [ + 1, + "var" + ], + "MAX_ROWS": [ + 1, + "var" + ], + "ROW_FORMAT": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "ADD": 1, + "ALTER": 1, + "ANALYZE": 1, + "CHANGE": 1, + "CHARSET": 1, + "CHECK": 1, + "COALESCE": 1, + "CONVERT": 1, + "DEFAULT CHARSET": 1, + "DISABLE": 1, + "DISCARD": 1, + "DROP": 1, + "ENABLE": 1, + "IMPORT": 1, + "MODIFY": 1, + "OPTIMIZE": 1, + "ORDER": 1, + "PARTITION": 1, + "REBUILD": 1, + "REMOVE": 1, + "RENAME": 1, + "REORGANIZE": 1, + "REPAIR": 1, + "UPGRADE": 1, + "COLUMN": 2, + "CONSTRAINT": 2, + "DEFAULT": 2, + "TO": 2, + "BY": 2, + "FOREIGN": 2, + "FULLTEXT": 2, + "KEY": 2, + "KEYS": 2, + "PARTITIONING": 2, + "PRIMARY KEY": 2, + "SPATIAL": 2, + "TABLESPACE": 2, + "INDEX": 2, + "CHARACTER SET": 3 + }, + "USER_OPTIONS": { + "ATTRIBUTE": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "REQUIRE": [ + 1, + "var" + ], + "BY": [ + 2, + "expr" + ], + "PASSWORD": [ + 2, + "var" + ], + "WITH": [ + 2, + "var" + ], + "ACCOUNT": 1, + "DEFAULT": 1, + "LOCK": 2, + "UNLOCK": 2, + "IDENTIFIED": 3 + }, + "VIEW_OPTIONS": { + "AS": 1 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "REQUIRE", + "equals": false, + "expr": "NONE", + "value": "NONE" + } + } + }, + "field": null, + "unknown": [] + } + ], + "OPTIONS": { + "ONLINE": 1, + "OFFLINE": 1, + "IGNORE": 2, + "DATABASE": 3, + "EVENT": 3, + "FUNCTION": 3, + "PROCEDURE": 3, + "SERVER": 3, + "TABLE": 3, + "TABLESPACE": 3, + "USER": 3, + "VIEW": 3 + }, + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "USER" + } + }, + "first": 0, + "last": 9 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterUser2.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterUser2.in new file mode 100644 index 0000000000..1642aa7c7e --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterUser2.in @@ -0,0 +1 @@ +ALTER USER 'user'@'localhost' ACCOUNT LOCK; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterUser2.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterUser2.out new file mode 100644 index 0000000000..10b15d28de --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterUser2.out @@ -0,0 +1,637 @@ +{ + "query": "ALTER USER 'user'@'localhost' ACCOUNT LOCK;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "ALTER USER 'user'@'localhost' ACCOUNT LOCK;", + "len": 43, + "last": 43, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USER", + "value": "USER", + "keyword": "USER", + "type": 1, + "flags": 33, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'user'@'localhost'", + "value": "user@localhost", + "keyword": null, + "type": 8, + "flags": 4, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ACCOUNT", + "value": "ACCOUNT", + "keyword": "ACCOUNT", + "type": 1, + "flags": 1, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOCK", + "value": "LOCK", + "keyword": "LOCK", + "type": 1, + "flags": 3, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 11, + "idx": 11 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "user@localhost", + "column": null, + "expr": "'user'@'localhost'", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var" + ], + "CHARSET": [ + 1, + "var" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var" + ], + "DEFAULT CHARSET": [ + 1, + "var" + ], + "UPGRADE": [ + 1, + "var" + ], + "COLLATE": [ + 2, + "var" + ], + "DEFAULT COLLATE": [ + 2, + "var" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 1, + "var=" + ], + "AVG_ROW_LENGTH": [ + 1, + "var" + ], + "MAX_ROWS": [ + 1, + "var" + ], + "ROW_FORMAT": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "ADD": 1, + "ALTER": 1, + "ANALYZE": 1, + "CHANGE": 1, + "CHARSET": 1, + "CHECK": 1, + "COALESCE": 1, + "CONVERT": 1, + "DEFAULT CHARSET": 1, + "DISABLE": 1, + "DISCARD": 1, + "DROP": 1, + "ENABLE": 1, + "IMPORT": 1, + "MODIFY": 1, + "OPTIMIZE": 1, + "ORDER": 1, + "PARTITION": 1, + "REBUILD": 1, + "REMOVE": 1, + "RENAME": 1, + "REORGANIZE": 1, + "REPAIR": 1, + "UPGRADE": 1, + "COLUMN": 2, + "CONSTRAINT": 2, + "DEFAULT": 2, + "TO": 2, + "BY": 2, + "FOREIGN": 2, + "FULLTEXT": 2, + "KEY": 2, + "KEYS": 2, + "PARTITIONING": 2, + "PRIMARY KEY": 2, + "SPATIAL": 2, + "TABLESPACE": 2, + "INDEX": 2, + "CHARACTER SET": 3 + }, + "USER_OPTIONS": { + "ATTRIBUTE": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "REQUIRE": [ + 1, + "var" + ], + "BY": [ + 2, + "expr" + ], + "PASSWORD": [ + 2, + "var" + ], + "WITH": [ + 2, + "var" + ], + "ACCOUNT": 1, + "DEFAULT": 1, + "LOCK": 2, + "UNLOCK": 2, + "IDENTIFIED": 3 + }, + "VIEW_OPTIONS": { + "AS": 1 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "ACCOUNT", + "2": "LOCK" + } + }, + "field": null, + "unknown": [] + } + ], + "OPTIONS": { + "ONLINE": 1, + "OFFLINE": 1, + "IGNORE": 2, + "DATABASE": 3, + "EVENT": 3, + "FUNCTION": 3, + "PROCEDURE": 3, + "SERVER": 3, + "TABLE": 3, + "TABLESPACE": 3, + "USER": 3, + "VIEW": 3 + }, + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "USER" + } + }, + "first": 0, + "last": 9 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterUser3.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterUser3.in new file mode 100644 index 0000000000..5bae224bde --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterUser3.in @@ -0,0 +1 @@ +ALTER USER 'testosama' REQUIRE SSL WITH MAX_CONNECTIONS_PER_HOUR 20; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterUser3.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterUser3.out new file mode 100644 index 0000000000..cafeea9e1b --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterUser3.out @@ -0,0 +1,705 @@ +{ + "query": "ALTER USER 'testosama' REQUIRE SSL WITH MAX_CONNECTIONS_PER_HOUR 20;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "ALTER USER 'testosama' REQUIRE SSL WITH MAX_CONNECTIONS_PER_HOUR 20;", + "len": 68, + "last": 68, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USER", + "value": "USER", + "keyword": "USER", + "type": 1, + "flags": 33, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'testosama'", + "value": "testosama", + "keyword": null, + "type": 7, + "flags": 1, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "REQUIRE", + "value": "REQUIRE", + "keyword": "REQUIRE", + "type": 1, + "flags": 3, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SSL", + "value": "SSL", + "keyword": "SSL", + "type": 1, + "flags": 3, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WITH", + "value": "WITH", + "keyword": "WITH", + "type": 1, + "flags": 3, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "MAX_CONNECTIONS_PER_HOUR", + "value": "MAX_CONNECTIONS_PER_HOUR", + "keyword": "MAX_CONNECTIONS_PER_HOUR", + "type": 1, + "flags": 1, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "20", + "value": 20, + "keyword": null, + "type": 6, + "flags": 0, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 17, + "idx": 17 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "testosama", + "column": null, + "expr": "'testosama'", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var" + ], + "CHARSET": [ + 1, + "var" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var" + ], + "DEFAULT CHARSET": [ + 1, + "var" + ], + "UPGRADE": [ + 1, + "var" + ], + "COLLATE": [ + 2, + "var" + ], + "DEFAULT COLLATE": [ + 2, + "var" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 1, + "var=" + ], + "AVG_ROW_LENGTH": [ + 1, + "var" + ], + "MAX_ROWS": [ + 1, + "var" + ], + "ROW_FORMAT": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "ADD": 1, + "ALTER": 1, + "ANALYZE": 1, + "CHANGE": 1, + "CHARSET": 1, + "CHECK": 1, + "COALESCE": 1, + "CONVERT": 1, + "DEFAULT CHARSET": 1, + "DISABLE": 1, + "DISCARD": 1, + "DROP": 1, + "ENABLE": 1, + "IMPORT": 1, + "MODIFY": 1, + "OPTIMIZE": 1, + "ORDER": 1, + "PARTITION": 1, + "REBUILD": 1, + "REMOVE": 1, + "RENAME": 1, + "REORGANIZE": 1, + "REPAIR": 1, + "UPGRADE": 1, + "COLUMN": 2, + "CONSTRAINT": 2, + "DEFAULT": 2, + "TO": 2, + "BY": 2, + "FOREIGN": 2, + "FULLTEXT": 2, + "KEY": 2, + "KEYS": 2, + "PARTITIONING": 2, + "PRIMARY KEY": 2, + "SPATIAL": 2, + "TABLESPACE": 2, + "INDEX": 2, + "CHARACTER SET": 3 + }, + "USER_OPTIONS": { + "ATTRIBUTE": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "REQUIRE": [ + 1, + "var" + ], + "BY": [ + 2, + "expr" + ], + "PASSWORD": [ + 2, + "var" + ], + "WITH": [ + 2, + "var" + ], + "ACCOUNT": 1, + "DEFAULT": 1, + "LOCK": 2, + "UNLOCK": 2, + "IDENTIFIED": 3 + }, + "VIEW_OPTIONS": { + "AS": 1 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "REQUIRE", + "equals": false, + "expr": "SSL", + "value": "SSL" + }, + "2": { + "name": "WITH", + "equals": false, + "expr": "MAX_CONNECTIONS_PER_HOUR", + "value": "MAX_CONNECTIONS_PER_HOUR" + } + } + }, + "field": null, + "unknown": [ + { + "@type": "@16" + } + ] + } + ], + "OPTIONS": { + "ONLINE": 1, + "OFFLINE": 1, + "IGNORE": 2, + "DATABASE": 3, + "EVENT": 3, + "FUNCTION": 3, + "PROCEDURE": 3, + "SERVER": 3, + "TABLE": 3, + "TABLESPACE": 3, + "USER": 3, + "VIEW": 3 + }, + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "USER" + } + }, + "first": 0, + "last": 15 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterUser4.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterUser4.in new file mode 100644 index 0000000000..4b1836f8a4 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterUser4.in @@ -0,0 +1,2 @@ +ALTER USER 'user' + WITH MAX_QUERIES_PER_HOUR 500 MAX_UPDATES_PER_HOUR 100; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterUser4.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterUser4.out new file mode 100644 index 0000000000..69ab341081 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterUser4.out @@ -0,0 +1,711 @@ +{ + "query": "ALTER USER 'user'\n WITH MAX_QUERIES_PER_HOUR 500 MAX_UPDATES_PER_HOUR 100;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "ALTER USER 'user'\n WITH MAX_QUERIES_PER_HOUR 500 MAX_UPDATES_PER_HOUR 100;", + "len": 75, + "last": 75, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USER", + "value": "USER", + "keyword": "USER", + "type": 1, + "flags": 33, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'user'", + "value": "user", + "keyword": null, + "type": 7, + "flags": 1, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WITH", + "value": "WITH", + "keyword": "WITH", + "type": 1, + "flags": 3, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "MAX_QUERIES_PER_HOUR", + "value": "MAX_QUERIES_PER_HOUR", + "keyword": "MAX_QUERIES_PER_HOUR", + "type": 1, + "flags": 1, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "500", + "value": 500, + "keyword": null, + "type": 6, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "MAX_UPDATES_PER_HOUR", + "value": "MAX_UPDATES_PER_HOUR", + "keyword": "MAX_UPDATES_PER_HOUR", + "type": 1, + "flags": 1, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "100", + "value": 100, + "keyword": null, + "type": 6, + "flags": 0, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 17, + "idx": 17 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "user", + "column": null, + "expr": "'user'", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var" + ], + "CHARSET": [ + 1, + "var" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var" + ], + "DEFAULT CHARSET": [ + 1, + "var" + ], + "UPGRADE": [ + 1, + "var" + ], + "COLLATE": [ + 2, + "var" + ], + "DEFAULT COLLATE": [ + 2, + "var" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 1, + "var=" + ], + "AVG_ROW_LENGTH": [ + 1, + "var" + ], + "MAX_ROWS": [ + 1, + "var" + ], + "ROW_FORMAT": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "ADD": 1, + "ALTER": 1, + "ANALYZE": 1, + "CHANGE": 1, + "CHARSET": 1, + "CHECK": 1, + "COALESCE": 1, + "CONVERT": 1, + "DEFAULT CHARSET": 1, + "DISABLE": 1, + "DISCARD": 1, + "DROP": 1, + "ENABLE": 1, + "IMPORT": 1, + "MODIFY": 1, + "OPTIMIZE": 1, + "ORDER": 1, + "PARTITION": 1, + "REBUILD": 1, + "REMOVE": 1, + "RENAME": 1, + "REORGANIZE": 1, + "REPAIR": 1, + "UPGRADE": 1, + "COLUMN": 2, + "CONSTRAINT": 2, + "DEFAULT": 2, + "TO": 2, + "BY": 2, + "FOREIGN": 2, + "FULLTEXT": 2, + "KEY": 2, + "KEYS": 2, + "PARTITIONING": 2, + "PRIMARY KEY": 2, + "SPATIAL": 2, + "TABLESPACE": 2, + "INDEX": 2, + "CHARACTER SET": 3 + }, + "USER_OPTIONS": { + "ATTRIBUTE": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "REQUIRE": [ + 1, + "var" + ], + "BY": [ + 2, + "expr" + ], + "PASSWORD": [ + 2, + "var" + ], + "WITH": [ + 2, + "var" + ], + "ACCOUNT": 1, + "DEFAULT": 1, + "LOCK": 2, + "UNLOCK": 2, + "IDENTIFIED": 3 + }, + "VIEW_OPTIONS": { + "AS": 1 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": { + "name": "WITH", + "equals": false, + "expr": "MAX_QUERIES_PER_HOUR", + "value": "MAX_QUERIES_PER_HOUR" + } + } + }, + "field": null, + "unknown": [ + { + "@type": "@12" + }, + { + "@type": "@13" + }, + { + "@type": "@14" + }, + { + "@type": "@15" + }, + { + "@type": "@16" + } + ] + } + ], + "OPTIONS": { + "ONLINE": 1, + "OFFLINE": 1, + "IGNORE": 2, + "DATABASE": 3, + "EVENT": 3, + "FUNCTION": 3, + "PROCEDURE": 3, + "SERVER": 3, + "TABLE": 3, + "TABLESPACE": 3, + "USER": 3, + "VIEW": 3 + }, + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "USER" + } + }, + "first": 0, + "last": 15 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterUser5.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterUser5.in new file mode 100644 index 0000000000..706e837c3a --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterUser5.in @@ -0,0 +1 @@ +ALTER USER 'user' PASSWORD EXPIRE NEVER \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterUser5.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterUser5.out new file mode 100644 index 0000000000..ba184e7a32 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterUser5.out @@ -0,0 +1,672 @@ +{ + "query": "ALTER USER 'user' PASSWORD EXPIRE NEVER", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "ALTER USER 'user' PASSWORD EXPIRE NEVER", + "len": 39, + "last": 39, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USER", + "value": "USER", + "keyword": "USER", + "type": 1, + "flags": 33, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'user'", + "value": "user", + "keyword": null, + "type": 7, + "flags": 1, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PASSWORD", + "value": "PASSWORD", + "keyword": "PASSWORD", + "type": 1, + "flags": 33, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "EXPIRE", + "value": "EXPIRE", + "keyword": "EXPIRE", + "type": 1, + "flags": 1, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NEVER", + "value": "NEVER", + "keyword": "NEVER", + "type": 1, + "flags": 1, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 12, + "idx": 12 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "user", + "column": null, + "expr": "'user'", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var" + ], + "CHARSET": [ + 1, + "var" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var" + ], + "DEFAULT CHARSET": [ + 1, + "var" + ], + "UPGRADE": [ + 1, + "var" + ], + "COLLATE": [ + 2, + "var" + ], + "DEFAULT COLLATE": [ + 2, + "var" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 1, + "var=" + ], + "AVG_ROW_LENGTH": [ + 1, + "var" + ], + "MAX_ROWS": [ + 1, + "var" + ], + "ROW_FORMAT": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "ADD": 1, + "ALTER": 1, + "ANALYZE": 1, + "CHANGE": 1, + "CHARSET": 1, + "CHECK": 1, + "COALESCE": 1, + "CONVERT": 1, + "DEFAULT CHARSET": 1, + "DISABLE": 1, + "DISCARD": 1, + "DROP": 1, + "ENABLE": 1, + "IMPORT": 1, + "MODIFY": 1, + "OPTIMIZE": 1, + "ORDER": 1, + "PARTITION": 1, + "REBUILD": 1, + "REMOVE": 1, + "RENAME": 1, + "REORGANIZE": 1, + "REPAIR": 1, + "UPGRADE": 1, + "COLUMN": 2, + "CONSTRAINT": 2, + "DEFAULT": 2, + "TO": 2, + "BY": 2, + "FOREIGN": 2, + "FULLTEXT": 2, + "KEY": 2, + "KEYS": 2, + "PARTITIONING": 2, + "PRIMARY KEY": 2, + "SPATIAL": 2, + "TABLESPACE": 2, + "INDEX": 2, + "CHARACTER SET": 3 + }, + "USER_OPTIONS": { + "ATTRIBUTE": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "REQUIRE": [ + 1, + "var" + ], + "BY": [ + 2, + "expr" + ], + "PASSWORD": [ + 2, + "var" + ], + "WITH": [ + 2, + "var" + ], + "ACCOUNT": 1, + "DEFAULT": 1, + "LOCK": 2, + "UNLOCK": 2, + "IDENTIFIED": 3 + }, + "VIEW_OPTIONS": { + "AS": 1 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": { + "name": "PASSWORD", + "equals": false, + "expr": "EXPIRE", + "value": "EXPIRE" + } + } + }, + "field": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "NEVER", + "expr": "NEVER", + "alias": null, + "function": null, + "subquery": null + }, + "unknown": [] + } + ], + "OPTIONS": { + "ONLINE": 1, + "OFFLINE": 1, + "IGNORE": 2, + "DATABASE": 3, + "EVENT": 3, + "FUNCTION": 3, + "PROCEDURE": 3, + "SERVER": 3, + "TABLE": 3, + "TABLESPACE": 3, + "USER": 3, + "VIEW": 3 + }, + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "USER" + } + }, + "first": 0, + "last": 11 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterUser6.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterUser6.in new file mode 100644 index 0000000000..1b1858e8df --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterUser6.in @@ -0,0 +1 @@ +ALTER USER 'user' ATTRIBUTE '{"baz": "faz", "foo": "moo"}'; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterUser6.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterUser6.out new file mode 100644 index 0000000000..17aa2b182d --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterUser6.out @@ -0,0 +1,641 @@ +{ + "query": "ALTER USER 'user' ATTRIBUTE '{\"baz\": \"faz\", \"foo\": \"moo\"}';", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "ALTER USER 'user' ATTRIBUTE '{\"baz\": \"faz\", \"foo\": \"moo\"}';", + "len": 59, + "last": 59, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USER", + "value": "USER", + "keyword": "USER", + "type": 1, + "flags": 33, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'user'", + "value": "user", + "keyword": null, + "type": 7, + "flags": 1, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ATTRIBUTE", + "value": "ATTRIBUTE", + "keyword": null, + "type": 0, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'{\"baz\": \"faz\", \"foo\": \"moo\"}'", + "value": "{\"baz\": \"faz\", \"foo\": \"moo\"}", + "keyword": null, + "type": 7, + "flags": 1, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 11, + "idx": 11 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "user", + "column": null, + "expr": "'user'", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var" + ], + "CHARSET": [ + 1, + "var" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var" + ], + "DEFAULT CHARSET": [ + 1, + "var" + ], + "UPGRADE": [ + 1, + "var" + ], + "COLLATE": [ + 2, + "var" + ], + "DEFAULT COLLATE": [ + 2, + "var" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 1, + "var=" + ], + "AVG_ROW_LENGTH": [ + 1, + "var" + ], + "MAX_ROWS": [ + 1, + "var" + ], + "ROW_FORMAT": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "ADD": 1, + "ALTER": 1, + "ANALYZE": 1, + "CHANGE": 1, + "CHARSET": 1, + "CHECK": 1, + "COALESCE": 1, + "CONVERT": 1, + "DEFAULT CHARSET": 1, + "DISABLE": 1, + "DISCARD": 1, + "DROP": 1, + "ENABLE": 1, + "IMPORT": 1, + "MODIFY": 1, + "OPTIMIZE": 1, + "ORDER": 1, + "PARTITION": 1, + "REBUILD": 1, + "REMOVE": 1, + "RENAME": 1, + "REORGANIZE": 1, + "REPAIR": 1, + "UPGRADE": 1, + "COLUMN": 2, + "CONSTRAINT": 2, + "DEFAULT": 2, + "TO": 2, + "BY": 2, + "FOREIGN": 2, + "FULLTEXT": 2, + "KEY": 2, + "KEYS": 2, + "PARTITIONING": 2, + "PRIMARY KEY": 2, + "SPATIAL": 2, + "TABLESPACE": 2, + "INDEX": 2, + "CHARACTER SET": 3 + }, + "USER_OPTIONS": { + "ATTRIBUTE": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "REQUIRE": [ + 1, + "var" + ], + "BY": [ + 2, + "expr" + ], + "PASSWORD": [ + 2, + "var" + ], + "WITH": [ + 2, + "var" + ], + "ACCOUNT": 1, + "DEFAULT": 1, + "LOCK": 2, + "UNLOCK": 2, + "IDENTIFIED": 3 + }, + "VIEW_OPTIONS": { + "AS": 1 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "ATTRIBUTE", + "equals": false, + "expr": "'{\"baz\": \"faz\", \"foo\": \"moo\"}'", + "value": "{\"baz\": \"faz\", \"foo\": \"moo\"}" + } + } + }, + "field": null, + "unknown": [] + } + ], + "OPTIONS": { + "ONLINE": 1, + "OFFLINE": 1, + "IGNORE": 2, + "DATABASE": 3, + "EVENT": 3, + "FUNCTION": 3, + "PROCEDURE": 3, + "SERVER": 3, + "TABLE": 3, + "TABLESPACE": 3, + "USER": 3, + "VIEW": 3 + }, + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "USER" + } + }, + "first": 0, + "last": 9 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterUser7.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterUser7.in new file mode 100644 index 0000000000..d969c06e49 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterUser7.in @@ -0,0 +1 @@ +ALTER USER 'user' PASSWORD EXPIRE INTERVAL 180 DAY; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterUser7.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterUser7.out new file mode 100644 index 0000000000..798ce2cc1d --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterUser7.out @@ -0,0 +1,711 @@ +{ + "query": "ALTER USER 'user' PASSWORD EXPIRE INTERVAL 180 DAY;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "ALTER USER 'user' PASSWORD EXPIRE INTERVAL 180 DAY;", + "len": 51, + "last": 51, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USER", + "value": "USER", + "keyword": "USER", + "type": 1, + "flags": 33, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'user'", + "value": "user", + "keyword": null, + "type": 7, + "flags": 1, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PASSWORD", + "value": "PASSWORD", + "keyword": "PASSWORD", + "type": 1, + "flags": 33, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "EXPIRE", + "value": "EXPIRE", + "keyword": "EXPIRE", + "type": 1, + "flags": 1, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTERVAL", + "value": "INTERVAL", + "keyword": "INTERVAL", + "type": 1, + "flags": 43, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "180", + "value": 180, + "keyword": null, + "type": 6, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DAY", + "value": "DAY", + "keyword": "DAY", + "type": 1, + "flags": 33, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 17, + "idx": 17 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "user", + "column": null, + "expr": "'user'", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var" + ], + "CHARSET": [ + 1, + "var" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var" + ], + "DEFAULT CHARSET": [ + 1, + "var" + ], + "UPGRADE": [ + 1, + "var" + ], + "COLLATE": [ + 2, + "var" + ], + "DEFAULT COLLATE": [ + 2, + "var" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 1, + "var=" + ], + "AVG_ROW_LENGTH": [ + 1, + "var" + ], + "MAX_ROWS": [ + 1, + "var" + ], + "ROW_FORMAT": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "ADD": 1, + "ALTER": 1, + "ANALYZE": 1, + "CHANGE": 1, + "CHARSET": 1, + "CHECK": 1, + "COALESCE": 1, + "CONVERT": 1, + "DEFAULT CHARSET": 1, + "DISABLE": 1, + "DISCARD": 1, + "DROP": 1, + "ENABLE": 1, + "IMPORT": 1, + "MODIFY": 1, + "OPTIMIZE": 1, + "ORDER": 1, + "PARTITION": 1, + "REBUILD": 1, + "REMOVE": 1, + "RENAME": 1, + "REORGANIZE": 1, + "REPAIR": 1, + "UPGRADE": 1, + "COLUMN": 2, + "CONSTRAINT": 2, + "DEFAULT": 2, + "TO": 2, + "BY": 2, + "FOREIGN": 2, + "FULLTEXT": 2, + "KEY": 2, + "KEYS": 2, + "PARTITIONING": 2, + "PRIMARY KEY": 2, + "SPATIAL": 2, + "TABLESPACE": 2, + "INDEX": 2, + "CHARACTER SET": 3 + }, + "USER_OPTIONS": { + "ATTRIBUTE": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "REQUIRE": [ + 1, + "var" + ], + "BY": [ + 2, + "expr" + ], + "PASSWORD": [ + 2, + "var" + ], + "WITH": [ + 2, + "var" + ], + "ACCOUNT": 1, + "DEFAULT": 1, + "LOCK": 2, + "UNLOCK": 2, + "IDENTIFIED": 3 + }, + "VIEW_OPTIONS": { + "AS": 1 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": { + "name": "PASSWORD", + "equals": false, + "expr": "EXPIRE", + "value": "EXPIRE" + } + } + }, + "field": null, + "unknown": [ + { + "@type": "@12" + }, + { + "@type": "@13" + }, + { + "@type": "@14" + }, + { + "@type": "@15" + }, + { + "@type": "@16" + } + ] + } + ], + "OPTIONS": { + "ONLINE": 1, + "OFFLINE": 1, + "IGNORE": 2, + "DATABASE": 3, + "EVENT": 3, + "FUNCTION": 3, + "PROCEDURE": 3, + "SERVER": 3, + "TABLE": 3, + "TABLESPACE": 3, + "USER": 3, + "VIEW": 3 + }, + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "USER" + } + }, + "first": 0, + "last": 15 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterUser8.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterUser8.in new file mode 100644 index 0000000000..e0ddefc995 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterUser8.in @@ -0,0 +1 @@ +ALTER USER 'user' COMMENT '' \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterUser8.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterUser8.out new file mode 100644 index 0000000000..995488d13d --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterUser8.out @@ -0,0 +1,632 @@ +{ + "query": "ALTER USER 'user' COMMENT ''", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "ALTER USER 'user' COMMENT ''", + "len": 28, + "last": 28, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USER", + "value": "USER", + "keyword": "USER", + "type": 1, + "flags": 33, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'user'", + "value": "user", + "keyword": null, + "type": 7, + "flags": 1, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COMMENT", + "value": "COMMENT", + "keyword": "COMMENT", + "type": 1, + "flags": 1, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "''", + "value": "", + "keyword": null, + "type": 7, + "flags": 1, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 10, + "idx": 10 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "user", + "column": null, + "expr": "'user'", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var" + ], + "CHARSET": [ + 1, + "var" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var" + ], + "DEFAULT CHARSET": [ + 1, + "var" + ], + "UPGRADE": [ + 1, + "var" + ], + "COLLATE": [ + 2, + "var" + ], + "DEFAULT COLLATE": [ + 2, + "var" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 1, + "var=" + ], + "AVG_ROW_LENGTH": [ + 1, + "var" + ], + "MAX_ROWS": [ + 1, + "var" + ], + "ROW_FORMAT": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "ADD": 1, + "ALTER": 1, + "ANALYZE": 1, + "CHANGE": 1, + "CHARSET": 1, + "CHECK": 1, + "COALESCE": 1, + "CONVERT": 1, + "DEFAULT CHARSET": 1, + "DISABLE": 1, + "DISCARD": 1, + "DROP": 1, + "ENABLE": 1, + "IMPORT": 1, + "MODIFY": 1, + "OPTIMIZE": 1, + "ORDER": 1, + "PARTITION": 1, + "REBUILD": 1, + "REMOVE": 1, + "RENAME": 1, + "REORGANIZE": 1, + "REPAIR": 1, + "UPGRADE": 1, + "COLUMN": 2, + "CONSTRAINT": 2, + "DEFAULT": 2, + "TO": 2, + "BY": 2, + "FOREIGN": 2, + "FULLTEXT": 2, + "KEY": 2, + "KEYS": 2, + "PARTITIONING": 2, + "PRIMARY KEY": 2, + "SPATIAL": 2, + "TABLESPACE": 2, + "INDEX": 2, + "CHARACTER SET": 3 + }, + "USER_OPTIONS": { + "ATTRIBUTE": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "REQUIRE": [ + 1, + "var" + ], + "BY": [ + 2, + "expr" + ], + "PASSWORD": [ + 2, + "var" + ], + "WITH": [ + 2, + "var" + ], + "ACCOUNT": 1, + "DEFAULT": 1, + "LOCK": 2, + "UNLOCK": 2, + "IDENTIFIED": 3 + }, + "VIEW_OPTIONS": { + "AS": 1 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "COMMENT", + "equals": false, + "expr": "''", + "value": "" + } + } + }, + "field": null, + "unknown": [] + } + ], + "OPTIONS": { + "ONLINE": 1, + "OFFLINE": 1, + "IGNORE": 2, + "DATABASE": 3, + "EVENT": 3, + "FUNCTION": 3, + "PROCEDURE": 3, + "SERVER": 3, + "TABLE": 3, + "TABLESPACE": 3, + "USER": 3, + "VIEW": 3 + }, + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "USER" + } + }, + "first": 0, + "last": 9 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterWithInvisible.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterWithInvisible.in new file mode 100644 index 0000000000..fc92687e58 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterWithInvisible.in @@ -0,0 +1 @@ +ALTER TABLE t MODIFY x INT INVISIBLE, MODIFY y INT, MODIFY z INT NOT NULL DEFAULT 4; diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterWithInvisible.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterWithInvisible.out new file mode 100644 index 0000000000..1f024a63c8 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseAlterWithInvisible.out @@ -0,0 +1,1243 @@ +{ + "query": "ALTER TABLE t MODIFY x INT INVISIBLE, MODIFY y INT, MODIFY z INT NOT NULL DEFAULT 4;\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "ALTER TABLE t MODIFY x INT INVISIBLE, MODIFY y INT, MODIFY z INT NOT NULL DEFAULT 4;\n", + "len": 85, + "last": 85, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALTER", + "value": "ALTER", + "keyword": "ALTER", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": 1, + "flags": 3, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t", + "value": "t", + "keyword": null, + "type": 0, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "MODIFY", + "value": "MODIFY", + "keyword": "MODIFY", + "type": 1, + "flags": 1, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "x", + "value": "x", + "keyword": "X", + "type": 1, + "flags": 33, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INT", + "value": "INT", + "keyword": "INT", + "type": 1, + "flags": 11, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INVISIBLE", + "value": "INVISIBLE", + "keyword": null, + "type": 0, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "MODIFY", + "value": "MODIFY", + "keyword": "MODIFY", + "type": 1, + "flags": 1, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "y", + "value": "y", + "keyword": "Y", + "type": 1, + "flags": 33, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INT", + "value": "INT", + "keyword": "INT", + "type": 1, + "flags": 11, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "MODIFY", + "value": "MODIFY", + "keyword": "MODIFY", + "type": 1, + "flags": 1, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "z", + "value": "z", + "keyword": null, + "type": 0, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INT", + "value": "INT", + "keyword": "INT", + "type": 1, + "flags": 11, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": 1, + "flags": 7, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT", + "value": "DEFAULT", + "keyword": "DEFAULT", + "type": 1, + "flags": 35, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "4", + "value": 4, + "keyword": null, + "type": 6, + "flags": 0, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 83 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 36, + "idx": 36 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "t", + "column": null, + "expr": "t", + "alias": null, + "function": null, + "subquery": null + }, + "altered": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var" + ], + "CHARSET": [ + 1, + "var" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var" + ], + "DEFAULT CHARSET": [ + 1, + "var" + ], + "UPGRADE": [ + 1, + "var" + ], + "COLLATE": [ + 2, + "var" + ], + "DEFAULT COLLATE": [ + 2, + "var" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 1, + "var=" + ], + "AVG_ROW_LENGTH": [ + 1, + "var" + ], + "MAX_ROWS": [ + 1, + "var" + ], + "ROW_FORMAT": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "ADD": 1, + "ALTER": 1, + "ANALYZE": 1, + "CHANGE": 1, + "CHARSET": 1, + "CHECK": 1, + "COALESCE": 1, + "CONVERT": 1, + "DEFAULT CHARSET": 1, + "DISABLE": 1, + "DISCARD": 1, + "DROP": 1, + "ENABLE": 1, + "IMPORT": 1, + "MODIFY": 1, + "OPTIMIZE": 1, + "ORDER": 1, + "PARTITION": 1, + "REBUILD": 1, + "REMOVE": 1, + "RENAME": 1, + "REORGANIZE": 1, + "REPAIR": 1, + "UPGRADE": 1, + "COLUMN": 2, + "CONSTRAINT": 2, + "DEFAULT": 2, + "TO": 2, + "BY": 2, + "FOREIGN": 2, + "FULLTEXT": 2, + "KEY": 2, + "KEYS": 2, + "PARTITIONING": 2, + "PRIMARY KEY": 2, + "SPATIAL": 2, + "TABLESPACE": 2, + "INDEX": 2, + "CHARACTER SET": 3 + }, + "USER_OPTIONS": { + "ATTRIBUTE": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "REQUIRE": [ + 1, + "var" + ], + "BY": [ + 2, + "expr" + ], + "PASSWORD": [ + 2, + "var" + ], + "WITH": [ + 2, + "var" + ], + "ACCOUNT": 1, + "DEFAULT": 1, + "LOCK": 2, + "UNLOCK": 2, + "IDENTIFIED": 3 + }, + "VIEW_OPTIONS": { + "AS": 1 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "MODIFY" + } + }, + "field": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "x", + "expr": "x", + "alias": null, + "function": null, + "subquery": null + }, + "unknown": [ + { + "@type": "@12" + }, + { + "@type": "@13" + }, + { + "@type": "@14" + } + ] + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var" + ], + "CHARSET": [ + 1, + "var" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var" + ], + "DEFAULT CHARSET": [ + 1, + "var" + ], + "UPGRADE": [ + 1, + "var" + ], + "COLLATE": [ + 2, + "var" + ], + "DEFAULT COLLATE": [ + 2, + "var" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 1, + "var=" + ], + "AVG_ROW_LENGTH": [ + 1, + "var" + ], + "MAX_ROWS": [ + 1, + "var" + ], + "ROW_FORMAT": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "ADD": 1, + "ALTER": 1, + "ANALYZE": 1, + "CHANGE": 1, + "CHARSET": 1, + "CHECK": 1, + "COALESCE": 1, + "CONVERT": 1, + "DEFAULT CHARSET": 1, + "DISABLE": 1, + "DISCARD": 1, + "DROP": 1, + "ENABLE": 1, + "IMPORT": 1, + "MODIFY": 1, + "OPTIMIZE": 1, + "ORDER": 1, + "PARTITION": 1, + "REBUILD": 1, + "REMOVE": 1, + "RENAME": 1, + "REORGANIZE": 1, + "REPAIR": 1, + "UPGRADE": 1, + "COLUMN": 2, + "CONSTRAINT": 2, + "DEFAULT": 2, + "TO": 2, + "BY": 2, + "FOREIGN": 2, + "FULLTEXT": 2, + "KEY": 2, + "KEYS": 2, + "PARTITIONING": 2, + "PRIMARY KEY": 2, + "SPATIAL": 2, + "TABLESPACE": 2, + "INDEX": 2, + "CHARACTER SET": 3 + }, + "USER_OPTIONS": { + "ATTRIBUTE": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "REQUIRE": [ + 1, + "var" + ], + "BY": [ + 2, + "expr" + ], + "PASSWORD": [ + 2, + "var" + ], + "WITH": [ + 2, + "var" + ], + "ACCOUNT": 1, + "DEFAULT": 1, + "LOCK": 2, + "UNLOCK": 2, + "IDENTIFIED": 3 + }, + "VIEW_OPTIONS": { + "AS": 1 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "MODIFY" + } + }, + "field": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "y", + "expr": "y", + "alias": null, + "function": null, + "subquery": null + }, + "unknown": [ + { + "@type": "@21" + } + ] + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\AlterOperation", + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var" + ], + "CHARSET": [ + 1, + "var" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var" + ], + "DEFAULT CHARSET": [ + 1, + "var" + ], + "UPGRADE": [ + 1, + "var" + ], + "COLLATE": [ + 2, + "var" + ], + "DEFAULT COLLATE": [ + 2, + "var" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 1, + "var=" + ], + "AVG_ROW_LENGTH": [ + 1, + "var" + ], + "MAX_ROWS": [ + 1, + "var" + ], + "ROW_FORMAT": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "ADD": 1, + "ALTER": 1, + "ANALYZE": 1, + "CHANGE": 1, + "CHARSET": 1, + "CHECK": 1, + "COALESCE": 1, + "CONVERT": 1, + "DEFAULT CHARSET": 1, + "DISABLE": 1, + "DISCARD": 1, + "DROP": 1, + "ENABLE": 1, + "IMPORT": 1, + "MODIFY": 1, + "OPTIMIZE": 1, + "ORDER": 1, + "PARTITION": 1, + "REBUILD": 1, + "REMOVE": 1, + "RENAME": 1, + "REORGANIZE": 1, + "REPAIR": 1, + "UPGRADE": 1, + "COLUMN": 2, + "CONSTRAINT": 2, + "DEFAULT": 2, + "TO": 2, + "BY": 2, + "FOREIGN": 2, + "FULLTEXT": 2, + "KEY": 2, + "KEYS": 2, + "PARTITIONING": 2, + "PRIMARY KEY": 2, + "SPATIAL": 2, + "TABLESPACE": 2, + "INDEX": 2, + "CHARACTER SET": 3 + }, + "USER_OPTIONS": { + "ATTRIBUTE": [ + 1, + "var" + ], + "COMMENT": [ + 1, + "var" + ], + "REQUIRE": [ + 1, + "var" + ], + "BY": [ + 2, + "expr" + ], + "PASSWORD": [ + 2, + "var" + ], + "WITH": [ + 2, + "var" + ], + "ACCOUNT": 1, + "DEFAULT": 1, + "LOCK": 2, + "UNLOCK": 2, + "IDENTIFIED": 3 + }, + "VIEW_OPTIONS": { + "AS": 1 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "MODIFY" + } + }, + "field": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "z", + "expr": "z", + "alias": null, + "function": null, + "subquery": null + }, + "unknown": [ + { + "@type": "@28" + }, + { + "@type": "@29" + }, + { + "@type": "@30" + }, + { + "@type": "@31" + }, + { + "@type": "@32" + }, + { + "@type": "@33" + }, + { + "@type": "@34" + } + ] + } + ], + "OPTIONS": { + "ONLINE": 1, + "OFFLINE": 1, + "IGNORE": 2, + "DATABASE": 3, + "EVENT": 3, + "FUNCTION": 3, + "PROCEDURE": 3, + "SERVER": 3, + "TABLE": 3, + "TABLESPACE": 3, + "USER": 3, + "VIEW": 3 + }, + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "TABLE" + } + }, + "first": 0, + "last": 33 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseArrayErr1.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseArrayErr1.in new file mode 100644 index 0000000000..af9acdd315 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseArrayErr1.in @@ -0,0 +1 @@ +SELECT * FROM foo PARTITION bar, baz); \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseArrayErr1.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseArrayErr1.out new file mode 100644 index 0000000000..d4f7882813 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseArrayErr1.out @@ -0,0 +1,749 @@ +{ + "query": "SELECT * FROM foo PARTITION bar, baz);", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SELECT * FROM foo PARTITION bar, baz);", + "len": 38, + "last": 38, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "foo", + "value": "foo", + "keyword": null, + "type": 0, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": 1, + "flags": 3, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "bar", + "value": "bar", + "keyword": null, + "type": 0, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "baz", + "value": "baz", + "keyword": null, + "type": 0, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 17, + "idx": 17 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "foo", + "column": null, + "expr": "foo", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "raw": [], + "values": [] + }, + "where": null, + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 14 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "An opening bracket was expected.", + { + "@type": "@12" + }, + 0 + ], + [ + "Unexpected token.", + { + "@type": "@13" + }, + 0 + ], + [ + "Unexpected token.", + { + "@type": "@15" + }, + 0 + ], + [ + "Unexpected token.", + { + "@type": "@16" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseArrayErr3.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseArrayErr3.in new file mode 100644 index 0000000000..128a77a708 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseArrayErr3.in @@ -0,0 +1 @@ +SELECT * FROM foo PARTITION (bar, baz; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseArrayErr3.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseArrayErr3.out new file mode 100644 index 0000000000..7142ac8abe --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseArrayErr3.out @@ -0,0 +1,726 @@ +{ + "query": "SELECT * FROM foo PARTITION (bar, baz;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SELECT * FROM foo PARTITION (bar, baz;", + "len": 38, + "last": 38, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "foo", + "value": "foo", + "keyword": null, + "type": 0, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": 1, + "flags": 3, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "bar", + "value": "bar", + "keyword": null, + "type": 0, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "baz", + "value": "baz", + "keyword": null, + "type": 0, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 17, + "idx": 17 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "foo", + "column": null, + "expr": "foo", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "raw": [ + "bar", + "baz" + ], + "values": [ + "bar", + "baz" + ] + }, + "where": null, + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 15 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCall.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCall.in new file mode 100644 index 0000000000..871e666d60 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCall.in @@ -0,0 +1 @@ +CALL foo(); \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCall.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCall.out new file mode 100644 index 0000000000..410246c7e3 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCall.out @@ -0,0 +1,426 @@ +{ + "query": "CALL foo();", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "CALL foo();", + "len": 11, + "last": 11, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CALL", + "value": "CALL", + "keyword": "CALL", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "foo", + "value": "foo", + "keyword": null, + "type": 0, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 7, + "idx": 7 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "call": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "name": "foo", + "parameters": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "raw": [], + "values": [] + } + }, + "OPTIONS": [], + "CLAUSES": [], + "END_OPTIONS": [], + "options": null, + "first": 0, + "last": 4 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCall2.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCall2.in new file mode 100644 index 0000000000..76fd802cf7 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCall2.in @@ -0,0 +1 @@ +CALL foo(@bar, @baz); \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCall2.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCall2.out new file mode 100644 index 0000000000..56bb9704b5 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCall2.out @@ -0,0 +1,468 @@ +{ + "query": "CALL foo(@bar, @baz);", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "CALL foo(@bar, @baz);", + "len": 21, + "last": 21, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CALL", + "value": "CALL", + "keyword": "CALL", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "foo", + "value": "foo", + "keyword": null, + "type": 0, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@bar", + "value": "bar", + "keyword": null, + "type": 8, + "flags": 1, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@baz", + "value": "baz", + "keyword": null, + "type": 8, + "flags": 1, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 11, + "idx": 11 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "call": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "name": "foo", + "parameters": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "raw": [ + "@bar", + "@baz" + ], + "values": [ + "bar", + "baz" + ] + } + }, + "OPTIONS": [], + "CLAUSES": [], + "END_OPTIONS": [], + "options": null, + "first": 0, + "last": 8 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCall3.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCall3.in new file mode 100644 index 0000000000..c150f9a67e --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCall3.in @@ -0,0 +1 @@ +CALL foo; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCall3.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCall3.out new file mode 100644 index 0000000000..61d475e248 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCall3.out @@ -0,0 +1,404 @@ +{ + "query": "CALL foo;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "CALL foo;", + "len": 9, + "last": 9, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CALL", + "value": "CALL", + "keyword": "CALL", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "foo", + "value": "foo", + "keyword": null, + "type": 0, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 5, + "idx": 5 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "call": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "name": "foo", + "parameters": null + }, + "OPTIONS": [], + "CLAUSES": [], + "END_OPTIONS": [], + "options": null, + "first": 0, + "last": 2 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateDatabase.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateDatabase.in new file mode 100644 index 0000000000..a163bea124 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateDatabase.in @@ -0,0 +1 @@ +CREATE DATABASE IF NOT EXISTS pma DEFAULT CHARSET 'utf8'; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateDatabase.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateDatabase.out new file mode 100644 index 0000000000..2fb7fd5e0a --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateDatabase.out @@ -0,0 +1,734 @@ +{ + "query": "CREATE DATABASE IF NOT EXISTS pma DEFAULT CHARSET 'utf8';", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "CREATE DATABASE IF NOT EXISTS pma DEFAULT CHARSET 'utf8';", + "len": 57, + "last": 57, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DATABASE", + "value": "DATABASE", + "keyword": "DATABASE", + "type": 1, + "flags": 35, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IF NOT EXISTS", + "value": "IF NOT EXISTS", + "keyword": "IF NOT EXISTS", + "type": 1, + "flags": 7, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "pma", + "value": "pma", + "keyword": null, + "type": 0, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT CHARSET", + "value": "DEFAULT CHARSET", + "keyword": "DEFAULT CHARSET", + "type": 1, + "flags": 7, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'utf8'", + "value": "utf8", + "keyword": null, + "type": 7, + "flags": 1, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 13, + "idx": 13 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "OPTIONS": { + "TEMPORARY": 1, + "OR REPLACE": 2, + "ALGORITHM": [ + 3, + "var=" + ], + "DEFINER": [ + 4, + "expr=" + ], + "SQL SECURITY": [ + 5, + "var" + ], + "DATABASE": 6, + "EVENT": 6, + "FUNCTION": 6, + "INDEX": 6, + "UNIQUE INDEX": 6, + "FULLTEXT INDEX": 6, + "SPATIAL INDEX": 6, + "PROCEDURE": 6, + "SERVER": 6, + "TABLE": 6, + "TABLESPACE": 6, + "TRIGGER": 6, + "USER": 6, + "VIEW": 6, + "SCHEMA": 6, + "IF NOT EXISTS": 7 + }, + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var=" + ], + "CHARSET": [ + 1, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var=" + ], + "DEFAULT CHARSET": [ + 1, + "var=" + ], + "DEFAULT COLLATE": [ + 2, + "var=" + ], + "COLLATE": [ + 2, + "var=" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 2, + "var=" + ], + "AVG_ROW_LENGTH": [ + 3, + "var" + ], + "CHARACTER SET": [ + 4, + "var=" + ], + "CHARSET": [ + 4, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 4, + "var=" + ], + "DEFAULT CHARSET": [ + 4, + "var=" + ], + "CHECKSUM": [ + 5, + "var" + ], + "DEFAULT COLLATE": [ + 6, + "var=" + ], + "COLLATE": [ + 6, + "var=" + ], + "COMMENT": [ + 7, + "var=" + ], + "CONNECTION": [ + 8, + "var" + ], + "DATA DIRECTORY": [ + 9, + "var" + ], + "DELAY_KEY_WRITE": [ + 10, + "var" + ], + "INDEX DIRECTORY": [ + 11, + "var" + ], + "INSERT_METHOD": [ + 12, + "var" + ], + "KEY_BLOCK_SIZE": [ + 13, + "var" + ], + "MAX_ROWS": [ + 14, + "var" + ], + "MIN_ROWS": [ + 15, + "var" + ], + "PACK_KEYS": [ + 16, + "var" + ], + "PASSWORD": [ + 17, + "var" + ], + "ROW_FORMAT": [ + 18, + "var" + ], + "TABLESPACE": [ + 19, + "var" + ], + "STORAGE": [ + 20, + "var" + ], + "UNION": [ + 21, + "var" + ] + }, + "FUNC_OPTIONS": { + "NOT": [ + 2, + "var" + ], + "FUNCTION": [ + 3, + "var=" + ], + "PROCEDURE": [ + 3, + "var=" + ], + "CONTAINS": [ + 4, + "expr" + ], + "NO": [ + 4, + "var" + ], + "READS": [ + 4, + "var" + ], + "MODIFIES": [ + 4, + "expr" + ], + "SQL SECURITY": [ + 6, + "var" + ], + "LANGUAGE": [ + 7, + "var" + ], + "COMMENT": [ + 8, + "var" + ], + "CREATE": 1, + "DETERMINISTIC": 2, + "DATA": 5 + }, + "TRIGGER_OPTIONS": { + "BEFORE": 1, + "AFTER": 1, + "INSERT": 2, + "UPDATE": 2, + "DELETE": 2 + }, + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": "pma", + "table": null, + "column": null, + "expr": "pma", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "DEFAULT CHARSET", + "equals": true, + "expr": "'utf8'", + "value": "utf8" + } + } + }, + "fields": null, + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [], + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "DATABASE", + "7": "IF NOT EXISTS" + } + }, + "first": 0, + "last": 10 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateDatabaseErr.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateDatabaseErr.in new file mode 100644 index 0000000000..6e65e6798a --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateDatabaseErr.in @@ -0,0 +1 @@ +CREATE DATABASE IF NOT EXISTS pma ENGINE='InnoDB' DEFAULT CHARSET 'utf8' \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateDatabaseErr.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateDatabaseErr.out new file mode 100644 index 0000000000..78b0847ab4 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateDatabaseErr.out @@ -0,0 +1,762 @@ +{ + "query": "CREATE DATABASE IF NOT EXISTS pma ENGINE='InnoDB' DEFAULT CHARSET 'utf8'", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "CREATE DATABASE IF NOT EXISTS pma ENGINE='InnoDB' DEFAULT CHARSET 'utf8'", + "len": 72, + "last": 72, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DATABASE", + "value": "DATABASE", + "keyword": "DATABASE", + "type": 1, + "flags": 35, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IF NOT EXISTS", + "value": "IF NOT EXISTS", + "keyword": "IF NOT EXISTS", + "type": 1, + "flags": 7, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "pma", + "value": "pma", + "keyword": null, + "type": 0, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ENGINE", + "value": "ENGINE", + "keyword": "ENGINE", + "type": 1, + "flags": 1, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'InnoDB'", + "value": "InnoDB", + "keyword": null, + "type": 7, + "flags": 1, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT CHARSET", + "value": "DEFAULT CHARSET", + "keyword": "DEFAULT CHARSET", + "type": 1, + "flags": 7, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'utf8'", + "value": "utf8", + "keyword": null, + "type": 7, + "flags": 1, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 16, + "idx": 17 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "OPTIONS": { + "TEMPORARY": 1, + "OR REPLACE": 2, + "ALGORITHM": [ + 3, + "var=" + ], + "DEFINER": [ + 4, + "expr=" + ], + "SQL SECURITY": [ + 5, + "var" + ], + "DATABASE": 6, + "EVENT": 6, + "FUNCTION": 6, + "INDEX": 6, + "UNIQUE INDEX": 6, + "FULLTEXT INDEX": 6, + "SPATIAL INDEX": 6, + "PROCEDURE": 6, + "SERVER": 6, + "TABLE": 6, + "TABLESPACE": 6, + "TRIGGER": 6, + "USER": 6, + "VIEW": 6, + "SCHEMA": 6, + "IF NOT EXISTS": 7 + }, + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var=" + ], + "CHARSET": [ + 1, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var=" + ], + "DEFAULT CHARSET": [ + 1, + "var=" + ], + "DEFAULT COLLATE": [ + 2, + "var=" + ], + "COLLATE": [ + 2, + "var=" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 2, + "var=" + ], + "AVG_ROW_LENGTH": [ + 3, + "var" + ], + "CHARACTER SET": [ + 4, + "var=" + ], + "CHARSET": [ + 4, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 4, + "var=" + ], + "DEFAULT CHARSET": [ + 4, + "var=" + ], + "CHECKSUM": [ + 5, + "var" + ], + "DEFAULT COLLATE": [ + 6, + "var=" + ], + "COLLATE": [ + 6, + "var=" + ], + "COMMENT": [ + 7, + "var=" + ], + "CONNECTION": [ + 8, + "var" + ], + "DATA DIRECTORY": [ + 9, + "var" + ], + "DELAY_KEY_WRITE": [ + 10, + "var" + ], + "INDEX DIRECTORY": [ + 11, + "var" + ], + "INSERT_METHOD": [ + 12, + "var" + ], + "KEY_BLOCK_SIZE": [ + 13, + "var" + ], + "MAX_ROWS": [ + 14, + "var" + ], + "MIN_ROWS": [ + 15, + "var" + ], + "PACK_KEYS": [ + 16, + "var" + ], + "PASSWORD": [ + 17, + "var" + ], + "ROW_FORMAT": [ + 18, + "var" + ], + "TABLESPACE": [ + 19, + "var" + ], + "STORAGE": [ + 20, + "var" + ], + "UNION": [ + 21, + "var" + ] + }, + "FUNC_OPTIONS": { + "NOT": [ + 2, + "var" + ], + "FUNCTION": [ + 3, + "var=" + ], + "PROCEDURE": [ + 3, + "var=" + ], + "CONTAINS": [ + 4, + "expr" + ], + "NO": [ + 4, + "var" + ], + "READS": [ + 4, + "var" + ], + "MODIFIES": [ + 4, + "expr" + ], + "SQL SECURITY": [ + 6, + "var" + ], + "LANGUAGE": [ + 7, + "var" + ], + "COMMENT": [ + 8, + "var" + ], + "CREATE": 1, + "DETERMINISTIC": 2, + "DATA": 5 + }, + "TRIGGER_OPTIONS": { + "BEFORE": 1, + "AFTER": 1, + "INSERT": 2, + "UPDATE": 2, + "DELETE": 2 + }, + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": "pma", + "table": null, + "column": null, + "expr": "pma", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "fields": null, + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [], + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "DATABASE", + "7": "IF NOT EXISTS" + } + }, + "first": 0, + "last": 7 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unrecognized statement type.", + { + "@type": "@10" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateFunction.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateFunction.in new file mode 100644 index 0000000000..95ce5f6529 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateFunction.in @@ -0,0 +1,6 @@ +CREATE FUNCTION F_TEST(uid INT) RETURNS VARCHAR +BEGIN + DECLARE username VARCHAR DEFAULT ""; + SELECT username INTO username FROM users WHERE ID = uid; + RETURN username; +END \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateFunction.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateFunction.out new file mode 100644 index 0000000000..3883ce862c --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateFunction.out @@ -0,0 +1,1294 @@ +{ + "query": "CREATE FUNCTION F_TEST(uid INT) RETURNS VARCHAR\nBEGIN\n DECLARE username VARCHAR DEFAULT \"\";\n SELECT username INTO username FROM users WHERE ID = uid;\n RETURN username;\nEND", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "CREATE FUNCTION F_TEST(uid INT) RETURNS VARCHAR\nBEGIN\n DECLARE username VARCHAR DEFAULT \"\";\n SELECT username INTO username FROM users WHERE ID = uid;\n RETURN username;\nEND", + "len": 180, + "last": 180, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FUNCTION", + "value": "FUNCTION", + "keyword": "FUNCTION", + "type": 1, + "flags": 1, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "F_TEST", + "value": "F_TEST", + "keyword": null, + "type": 0, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "uid", + "value": "uid", + "keyword": null, + "type": 0, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INT", + "value": "INT", + "keyword": "INT", + "type": 1, + "flags": 11, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "RETURNS", + "value": "RETURNS", + "keyword": "RETURNS", + "type": 1, + "flags": 1, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VARCHAR", + "value": "VARCHAR", + "keyword": "VARCHAR", + "type": 1, + "flags": 11, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "BEGIN", + "value": "BEGIN", + "keyword": "BEGIN", + "type": 1, + "flags": 1, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DECLARE", + "value": "DECLARE", + "keyword": "DECLARE", + "type": 1, + "flags": 3, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "username", + "value": "username", + "keyword": null, + "type": 0, + "flags": 0, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VARCHAR", + "value": "VARCHAR", + "keyword": "VARCHAR", + "type": 1, + "flags": 11, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT", + "value": "DEFAULT", + "keyword": "DEFAULT", + "type": 1, + "flags": 35, + "position": 83 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 90 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"\"", + "value": "", + "keyword": null, + "type": 7, + "flags": 2, + "position": 91 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 105 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "username", + "value": "username", + "keyword": null, + "type": 0, + "flags": 0, + "position": 106 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 114 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": 1, + "flags": 3, + "position": 115 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 119 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "username", + "value": "username", + "keyword": null, + "type": 0, + "flags": 0, + "position": 120 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 128 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 129 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 133 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "users", + "value": "users", + "keyword": null, + "type": 0, + "flags": 0, + "position": 134 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 139 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 140 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 145 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ID", + "value": "ID", + "keyword": null, + "type": 0, + "flags": 0, + "position": 146 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 148 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 149 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 150 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "uid", + "value": "uid", + "keyword": null, + "type": 0, + "flags": 0, + "position": 151 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 154 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 155 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "RETURN", + "value": "RETURN", + "keyword": "RETURN", + "type": 1, + "flags": 3, + "position": 160 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 166 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "username", + "value": "username", + "keyword": null, + "type": 0, + "flags": 0, + "position": 167 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 175 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 176 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "END", + "value": "END", + "keyword": "END", + "type": 1, + "flags": 1, + "position": 177 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 56, + "idx": 57 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "OPTIONS": { + "TEMPORARY": 1, + "OR REPLACE": 2, + "ALGORITHM": [ + 3, + "var=" + ], + "DEFINER": [ + 4, + "expr=" + ], + "SQL SECURITY": [ + 5, + "var" + ], + "DATABASE": 6, + "EVENT": 6, + "FUNCTION": 6, + "INDEX": 6, + "UNIQUE INDEX": 6, + "FULLTEXT INDEX": 6, + "SPATIAL INDEX": 6, + "PROCEDURE": 6, + "SERVER": 6, + "TABLE": 6, + "TABLESPACE": 6, + "TRIGGER": 6, + "USER": 6, + "VIEW": 6, + "SCHEMA": 6, + "IF NOT EXISTS": 7 + }, + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var=" + ], + "CHARSET": [ + 1, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var=" + ], + "DEFAULT CHARSET": [ + 1, + "var=" + ], + "DEFAULT COLLATE": [ + 2, + "var=" + ], + "COLLATE": [ + 2, + "var=" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 2, + "var=" + ], + "AVG_ROW_LENGTH": [ + 3, + "var" + ], + "CHARACTER SET": [ + 4, + "var=" + ], + "CHARSET": [ + 4, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 4, + "var=" + ], + "DEFAULT CHARSET": [ + 4, + "var=" + ], + "CHECKSUM": [ + 5, + "var" + ], + "DEFAULT COLLATE": [ + 6, + "var=" + ], + "COLLATE": [ + 6, + "var=" + ], + "COMMENT": [ + 7, + "var=" + ], + "CONNECTION": [ + 8, + "var" + ], + "DATA DIRECTORY": [ + 9, + "var" + ], + "DELAY_KEY_WRITE": [ + 10, + "var" + ], + "INDEX DIRECTORY": [ + 11, + "var" + ], + "INSERT_METHOD": [ + 12, + "var" + ], + "KEY_BLOCK_SIZE": [ + 13, + "var" + ], + "MAX_ROWS": [ + 14, + "var" + ], + "MIN_ROWS": [ + 15, + "var" + ], + "PACK_KEYS": [ + 16, + "var" + ], + "PASSWORD": [ + 17, + "var" + ], + "ROW_FORMAT": [ + 18, + "var" + ], + "TABLESPACE": [ + 19, + "var" + ], + "STORAGE": [ + 20, + "var" + ], + "UNION": [ + 21, + "var" + ] + }, + "FUNC_OPTIONS": { + "NOT": [ + 2, + "var" + ], + "FUNCTION": [ + 3, + "var=" + ], + "PROCEDURE": [ + 3, + "var=" + ], + "CONTAINS": [ + 4, + "expr" + ], + "NO": [ + 4, + "var" + ], + "READS": [ + 4, + "var" + ], + "MODIFIES": [ + 4, + "expr" + ], + "SQL SECURITY": [ + 6, + "var" + ], + "LANGUAGE": [ + 7, + "var" + ], + "COMMENT": [ + 8, + "var" + ], + "CREATE": 1, + "DETERMINISTIC": 2, + "DATA": 5 + }, + "TRIGGER_OPTIONS": { + "BEFORE": 1, + "AFTER": 1, + "INSERT": 2, + "UPDATE": 2, + "DELETE": 2 + }, + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "F_TEST", + "column": null, + "expr": "F_TEST", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "fields": null, + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "DATA_TYPE_OPTIONS": { + "BINARY": 1, + "CHARACTER SET": [ + 2, + "var" + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "UNSIGNED": 4, + "ZEROFILL": 5 + }, + "name": "VARCHAR", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + "parameters": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ParameterDefinition", + "name": "uid", + "inOut": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "DATA_TYPE_OPTIONS": { + "BINARY": 1, + "CHARACTER SET": [ + 2, + "var" + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "UNSIGNED": 4, + "ZEROFILL": 5 + }, + "name": "INT", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + } + } + ], + "body": [ + { + "@type": "@17" + }, + { + "@type": "@18" + }, + { + "@type": "@19" + }, + { + "@type": "@20" + }, + { + "@type": "@21" + }, + { + "@type": "@22" + }, + { + "@type": "@23" + }, + { + "@type": "@24" + }, + { + "@type": "@25" + }, + { + "@type": "@26" + }, + { + "@type": "@27" + }, + { + "@type": "@28" + }, + { + "@type": "@29" + }, + { + "@type": "@30" + }, + { + "@type": "@31" + }, + { + "@type": "@32" + }, + { + "@type": "@33" + }, + { + "@type": "@34" + }, + { + "@type": "@35" + }, + { + "@type": "@36" + }, + { + "@type": "@37" + }, + { + "@type": "@38" + }, + { + "@type": "@39" + }, + { + "@type": "@40" + }, + { + "@type": "@41" + }, + { + "@type": "@42" + }, + { + "@type": "@43" + }, + { + "@type": "@44" + }, + { + "@type": "@45" + }, + { + "@type": "@46" + }, + { + "@type": "@47" + }, + { + "@type": "@48" + }, + { + "@type": "@49" + }, + { + "@type": "@50" + }, + { + "@type": "@51" + }, + { + "@type": "@52" + }, + { + "@type": "@53" + }, + { + "@type": "@54" + }, + { + "@type": "@55" + }, + { + "@type": "@56" + }, + { + "@type": "@57" + } + ], + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "FUNCTION" + } + }, + "first": 0, + "last": 56 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateFunctionErr1.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateFunctionErr1.in new file mode 100644 index 0000000000..5678b4ed0b --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateFunctionErr1.in @@ -0,0 +1,6 @@ +CREATE FUNCTION F_TEST(uid INT) +BEGIN + DECLARE username VARCHAR DEFAULT ""; + SELECT username INTO username FROM users WHERE ID = uid; + RETURN username; +END \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateFunctionErr1.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateFunctionErr1.out new file mode 100644 index 0000000000..0300acad13 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateFunctionErr1.out @@ -0,0 +1,1235 @@ +{ + "query": "CREATE FUNCTION F_TEST(uid INT)\nBEGIN\n DECLARE username VARCHAR DEFAULT \"\";\n SELECT username INTO username FROM users WHERE ID = uid;\n RETURN username;\nEND", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "CREATE FUNCTION F_TEST(uid INT)\nBEGIN\n DECLARE username VARCHAR DEFAULT \"\";\n SELECT username INTO username FROM users WHERE ID = uid;\n RETURN username;\nEND", + "len": 164, + "last": 164, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FUNCTION", + "value": "FUNCTION", + "keyword": "FUNCTION", + "type": 1, + "flags": 1, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "F_TEST", + "value": "F_TEST", + "keyword": null, + "type": 0, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "uid", + "value": "uid", + "keyword": null, + "type": 0, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INT", + "value": "INT", + "keyword": "INT", + "type": 1, + "flags": 11, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "BEGIN", + "value": "BEGIN", + "keyword": "BEGIN", + "type": 1, + "flags": 1, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DECLARE", + "value": "DECLARE", + "keyword": "DECLARE", + "type": 1, + "flags": 3, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "username", + "value": "username", + "keyword": null, + "type": 0, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VARCHAR", + "value": "VARCHAR", + "keyword": "VARCHAR", + "type": 1, + "flags": 11, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT", + "value": "DEFAULT", + "keyword": "DEFAULT", + "type": 1, + "flags": 35, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"\"", + "value": "", + "keyword": null, + "type": 7, + "flags": 2, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 83 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "username", + "value": "username", + "keyword": null, + "type": 0, + "flags": 0, + "position": 90 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": 1, + "flags": 3, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 103 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "username", + "value": "username", + "keyword": null, + "type": 0, + "flags": 0, + "position": 104 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 117 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "users", + "value": "users", + "keyword": null, + "type": 0, + "flags": 0, + "position": 118 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 123 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 124 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 129 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ID", + "value": "ID", + "keyword": null, + "type": 0, + "flags": 0, + "position": 130 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 132 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 133 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 134 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "uid", + "value": "uid", + "keyword": null, + "type": 0, + "flags": 0, + "position": 135 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 138 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 139 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "RETURN", + "value": "RETURN", + "keyword": "RETURN", + "type": 1, + "flags": 3, + "position": 144 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 150 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "username", + "value": "username", + "keyword": null, + "type": 0, + "flags": 0, + "position": 151 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 159 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 160 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "END", + "value": "END", + "keyword": "END", + "type": 1, + "flags": 1, + "position": 161 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 52, + "idx": 53 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "OPTIONS": { + "TEMPORARY": 1, + "OR REPLACE": 2, + "ALGORITHM": [ + 3, + "var=" + ], + "DEFINER": [ + 4, + "expr=" + ], + "SQL SECURITY": [ + 5, + "var" + ], + "DATABASE": 6, + "EVENT": 6, + "FUNCTION": 6, + "INDEX": 6, + "UNIQUE INDEX": 6, + "FULLTEXT INDEX": 6, + "SPATIAL INDEX": 6, + "PROCEDURE": 6, + "SERVER": 6, + "TABLE": 6, + "TABLESPACE": 6, + "TRIGGER": 6, + "USER": 6, + "VIEW": 6, + "SCHEMA": 6, + "IF NOT EXISTS": 7 + }, + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var=" + ], + "CHARSET": [ + 1, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var=" + ], + "DEFAULT CHARSET": [ + 1, + "var=" + ], + "DEFAULT COLLATE": [ + 2, + "var=" + ], + "COLLATE": [ + 2, + "var=" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 2, + "var=" + ], + "AVG_ROW_LENGTH": [ + 3, + "var" + ], + "CHARACTER SET": [ + 4, + "var=" + ], + "CHARSET": [ + 4, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 4, + "var=" + ], + "DEFAULT CHARSET": [ + 4, + "var=" + ], + "CHECKSUM": [ + 5, + "var" + ], + "DEFAULT COLLATE": [ + 6, + "var=" + ], + "COLLATE": [ + 6, + "var=" + ], + "COMMENT": [ + 7, + "var=" + ], + "CONNECTION": [ + 8, + "var" + ], + "DATA DIRECTORY": [ + 9, + "var" + ], + "DELAY_KEY_WRITE": [ + 10, + "var" + ], + "INDEX DIRECTORY": [ + 11, + "var" + ], + "INSERT_METHOD": [ + 12, + "var" + ], + "KEY_BLOCK_SIZE": [ + 13, + "var" + ], + "MAX_ROWS": [ + 14, + "var" + ], + "MIN_ROWS": [ + 15, + "var" + ], + "PACK_KEYS": [ + 16, + "var" + ], + "PASSWORD": [ + 17, + "var" + ], + "ROW_FORMAT": [ + 18, + "var" + ], + "TABLESPACE": [ + 19, + "var" + ], + "STORAGE": [ + 20, + "var" + ], + "UNION": [ + 21, + "var" + ] + }, + "FUNC_OPTIONS": { + "NOT": [ + 2, + "var" + ], + "FUNCTION": [ + 3, + "var=" + ], + "PROCEDURE": [ + 3, + "var=" + ], + "CONTAINS": [ + 4, + "expr" + ], + "NO": [ + 4, + "var" + ], + "READS": [ + 4, + "var" + ], + "MODIFIES": [ + 4, + "expr" + ], + "SQL SECURITY": [ + 6, + "var" + ], + "LANGUAGE": [ + 7, + "var" + ], + "COMMENT": [ + 8, + "var" + ], + "CREATE": 1, + "DETERMINISTIC": 2, + "DATA": 5 + }, + "TRIGGER_OPTIONS": { + "BEFORE": 1, + "AFTER": 1, + "INSERT": 2, + "UPDATE": 2, + "DELETE": 2 + }, + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "F_TEST", + "column": null, + "expr": "F_TEST", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "fields": null, + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ParameterDefinition", + "name": "uid", + "inOut": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "DATA_TYPE_OPTIONS": { + "BINARY": 1, + "CHARACTER SET": [ + 2, + "var" + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "UNSIGNED": 4, + "ZEROFILL": 5 + }, + "name": "INT", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + } + } + ], + "body": [ + { + "@type": "@15" + }, + { + "@type": "@16" + }, + { + "@type": "@17" + }, + { + "@type": "@18" + }, + { + "@type": "@19" + }, + { + "@type": "@20" + }, + { + "@type": "@21" + }, + { + "@type": "@22" + }, + { + "@type": "@23" + }, + { + "@type": "@24" + }, + { + "@type": "@25" + }, + { + "@type": "@26" + }, + { + "@type": "@27" + }, + { + "@type": "@28" + }, + { + "@type": "@29" + }, + { + "@type": "@30" + }, + { + "@type": "@31" + }, + { + "@type": "@32" + }, + { + "@type": "@33" + }, + { + "@type": "@34" + }, + { + "@type": "@35" + }, + { + "@type": "@36" + }, + { + "@type": "@37" + }, + { + "@type": "@38" + }, + { + "@type": "@39" + }, + { + "@type": "@40" + }, + { + "@type": "@41" + }, + { + "@type": "@42" + }, + { + "@type": "@43" + }, + { + "@type": "@44" + }, + { + "@type": "@45" + }, + { + "@type": "@46" + }, + { + "@type": "@47" + }, + { + "@type": "@48" + }, + { + "@type": "@49" + }, + { + "@type": "@50" + }, + { + "@type": "@51" + }, + { + "@type": "@52" + }, + { + "@type": "@53" + } + ], + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "FUNCTION" + } + }, + "first": 0, + "last": 52 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "A \"RETURNS\" keyword was expected.", + { + "@type": "@13" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateFunctionErr2.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateFunctionErr2.in new file mode 100644 index 0000000000..1ff1af3806 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateFunctionErr2.in @@ -0,0 +1 @@ +CREATE FUNCTION test() RETURNS \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateFunctionErr2.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateFunctionErr2.out new file mode 100644 index 0000000000..5d18bf3184 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateFunctionErr2.out @@ -0,0 +1,699 @@ +{ + "query": "CREATE FUNCTION test() RETURNS", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "CREATE FUNCTION test() RETURNS", + "len": 30, + "last": 30, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FUNCTION", + "value": "FUNCTION", + "keyword": "FUNCTION", + "type": 1, + "flags": 1, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "test", + "value": "test", + "keyword": null, + "type": 0, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "RETURNS", + "value": "RETURNS", + "keyword": "RETURNS", + "type": 1, + "flags": 1, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 10, + "idx": 12 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "OPTIONS": { + "TEMPORARY": 1, + "OR REPLACE": 2, + "ALGORITHM": [ + 3, + "var=" + ], + "DEFINER": [ + 4, + "expr=" + ], + "SQL SECURITY": [ + 5, + "var" + ], + "DATABASE": 6, + "EVENT": 6, + "FUNCTION": 6, + "INDEX": 6, + "UNIQUE INDEX": 6, + "FULLTEXT INDEX": 6, + "SPATIAL INDEX": 6, + "PROCEDURE": 6, + "SERVER": 6, + "TABLE": 6, + "TABLESPACE": 6, + "TRIGGER": 6, + "USER": 6, + "VIEW": 6, + "SCHEMA": 6, + "IF NOT EXISTS": 7 + }, + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var=" + ], + "CHARSET": [ + 1, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var=" + ], + "DEFAULT CHARSET": [ + 1, + "var=" + ], + "DEFAULT COLLATE": [ + 2, + "var=" + ], + "COLLATE": [ + 2, + "var=" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 2, + "var=" + ], + "AVG_ROW_LENGTH": [ + 3, + "var" + ], + "CHARACTER SET": [ + 4, + "var=" + ], + "CHARSET": [ + 4, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 4, + "var=" + ], + "DEFAULT CHARSET": [ + 4, + "var=" + ], + "CHECKSUM": [ + 5, + "var" + ], + "DEFAULT COLLATE": [ + 6, + "var=" + ], + "COLLATE": [ + 6, + "var=" + ], + "COMMENT": [ + 7, + "var=" + ], + "CONNECTION": [ + 8, + "var" + ], + "DATA DIRECTORY": [ + 9, + "var" + ], + "DELAY_KEY_WRITE": [ + 10, + "var" + ], + "INDEX DIRECTORY": [ + 11, + "var" + ], + "INSERT_METHOD": [ + 12, + "var" + ], + "KEY_BLOCK_SIZE": [ + 13, + "var" + ], + "MAX_ROWS": [ + 14, + "var" + ], + "MIN_ROWS": [ + 15, + "var" + ], + "PACK_KEYS": [ + 16, + "var" + ], + "PASSWORD": [ + 17, + "var" + ], + "ROW_FORMAT": [ + 18, + "var" + ], + "TABLESPACE": [ + 19, + "var" + ], + "STORAGE": [ + 20, + "var" + ], + "UNION": [ + 21, + "var" + ] + }, + "FUNC_OPTIONS": { + "NOT": [ + 2, + "var" + ], + "FUNCTION": [ + 3, + "var=" + ], + "PROCEDURE": [ + 3, + "var=" + ], + "CONTAINS": [ + 4, + "expr" + ], + "NO": [ + 4, + "var" + ], + "READS": [ + 4, + "var" + ], + "MODIFIES": [ + 4, + "expr" + ], + "SQL SECURITY": [ + 6, + "var" + ], + "LANGUAGE": [ + 7, + "var" + ], + "COMMENT": [ + 8, + "var" + ], + "CREATE": 1, + "DETERMINISTIC": 2, + "DATA": 5 + }, + "TRIGGER_OPTIONS": { + "BEFORE": 1, + "AFTER": 1, + "INSERT": 2, + "UPDATE": 2, + "DELETE": 2 + }, + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "test", + "column": null, + "expr": "test", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "fields": null, + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": [], + "body": [], + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "FUNCTION" + } + }, + "first": 0, + "last": 11 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateFunctionErr3.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateFunctionErr3.in new file mode 100644 index 0000000000..80172a5a3c --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateFunctionErr3.in @@ -0,0 +1,3 @@ +DELIMITER $$ +CREATE FUNCTION coincide +END;$$ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateFunctionErr3.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateFunctionErr3.out new file mode 100644 index 0000000000..26ffdba87b --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateFunctionErr3.out @@ -0,0 +1,752 @@ +{ + "query": "DELIMITER $$\nCREATE FUNCTION coincide\nEND;$$\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "DELIMITER $$\nCREATE FUNCTION coincide\nEND;$$\n", + "len": 45, + "last": 45, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELIMITER", + "value": "DELIMITER", + "keyword": null, + "type": 0, + "flags": 0, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "$$", + "value": "$$", + "keyword": null, + "type": 9, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": 1, + "flags": 3, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FUNCTION", + "value": "FUNCTION", + "keyword": "FUNCTION", + "type": 1, + "flags": 1, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "coincide", + "value": "coincide", + "keyword": null, + "type": 0, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "END", + "value": "END", + "keyword": "END", + "type": 1, + "flags": 1, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 2, + "flags": 16, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "$$", + "value": "$$", + "keyword": null, + "type": 9, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 15, + "idx": 17 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": "$$", + "delimiterLen": 2, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "OPTIONS": { + "TEMPORARY": 1, + "OR REPLACE": 2, + "ALGORITHM": [ + 3, + "var=" + ], + "DEFINER": [ + 4, + "expr=" + ], + "SQL SECURITY": [ + 5, + "var" + ], + "DATABASE": 6, + "EVENT": 6, + "FUNCTION": 6, + "INDEX": 6, + "UNIQUE INDEX": 6, + "FULLTEXT INDEX": 6, + "SPATIAL INDEX": 6, + "PROCEDURE": 6, + "SERVER": 6, + "TABLE": 6, + "TABLESPACE": 6, + "TRIGGER": 6, + "USER": 6, + "VIEW": 6, + "SCHEMA": 6, + "IF NOT EXISTS": 7 + }, + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var=" + ], + "CHARSET": [ + 1, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var=" + ], + "DEFAULT CHARSET": [ + 1, + "var=" + ], + "DEFAULT COLLATE": [ + 2, + "var=" + ], + "COLLATE": [ + 2, + "var=" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 2, + "var=" + ], + "AVG_ROW_LENGTH": [ + 3, + "var" + ], + "CHARACTER SET": [ + 4, + "var=" + ], + "CHARSET": [ + 4, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 4, + "var=" + ], + "DEFAULT CHARSET": [ + 4, + "var=" + ], + "CHECKSUM": [ + 5, + "var" + ], + "DEFAULT COLLATE": [ + 6, + "var=" + ], + "COLLATE": [ + 6, + "var=" + ], + "COMMENT": [ + 7, + "var=" + ], + "CONNECTION": [ + 8, + "var" + ], + "DATA DIRECTORY": [ + 9, + "var" + ], + "DELAY_KEY_WRITE": [ + 10, + "var" + ], + "INDEX DIRECTORY": [ + 11, + "var" + ], + "INSERT_METHOD": [ + 12, + "var" + ], + "KEY_BLOCK_SIZE": [ + 13, + "var" + ], + "MAX_ROWS": [ + 14, + "var" + ], + "MIN_ROWS": [ + 15, + "var" + ], + "PACK_KEYS": [ + 16, + "var" + ], + "PASSWORD": [ + 17, + "var" + ], + "ROW_FORMAT": [ + 18, + "var" + ], + "TABLESPACE": [ + 19, + "var" + ], + "STORAGE": [ + 20, + "var" + ], + "UNION": [ + 21, + "var" + ] + }, + "FUNC_OPTIONS": { + "NOT": [ + 2, + "var" + ], + "FUNCTION": [ + 3, + "var=" + ], + "PROCEDURE": [ + 3, + "var=" + ], + "CONTAINS": [ + 4, + "expr" + ], + "NO": [ + 4, + "var" + ], + "READS": [ + 4, + "var" + ], + "MODIFIES": [ + 4, + "expr" + ], + "SQL SECURITY": [ + 6, + "var" + ], + "LANGUAGE": [ + 7, + "var" + ], + "COMMENT": [ + 8, + "var" + ], + "CREATE": 1, + "DETERMINISTIC": 2, + "DATA": 5 + }, + "TRIGGER_OPTIONS": { + "BEFORE": 1, + "AFTER": 1, + "INSERT": 2, + "UPDATE": 2, + "DELETE": 2 + }, + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "coincide", + "column": null, + "expr": "coincide", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "fields": null, + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": [], + "body": [], + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "FUNCTION" + } + }, + "first": 4, + "last": 16 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "A \"RETURNS\" keyword was expected.", + { + "@type": "@12" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateProcedure.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateProcedure.in new file mode 100644 index 0000000000..b5e35c188a --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateProcedure.in @@ -0,0 +1,4 @@ +CREATE PROCEDURE P_TEST(uid INT) +BEGIN + SELECT username FROM users WHERE ID = uid; +END \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateProcedure.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateProcedure.out new file mode 100644 index 0000000000..0ad2431819 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateProcedure.out @@ -0,0 +1,993 @@ +{ + "query": "CREATE PROCEDURE P_TEST(uid INT)\nBEGIN\n SELECT username FROM users WHERE ID = uid;\nEND", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "CREATE PROCEDURE P_TEST(uid INT)\nBEGIN\n SELECT username FROM users WHERE ID = uid;\nEND", + "len": 89, + "last": 89, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PROCEDURE", + "value": "PROCEDURE", + "keyword": "PROCEDURE", + "type": 1, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "P_TEST", + "value": "P_TEST", + "keyword": null, + "type": 0, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "uid", + "value": "uid", + "keyword": null, + "type": 0, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INT", + "value": "INT", + "keyword": "INT", + "type": 1, + "flags": 11, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "BEGIN", + "value": "BEGIN", + "keyword": "BEGIN", + "type": 1, + "flags": 1, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "username", + "value": "username", + "keyword": null, + "type": 0, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "users", + "value": "users", + "keyword": null, + "type": 0, + "flags": 0, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ID", + "value": "ID", + "keyword": null, + "type": 0, + "flags": 0, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "uid", + "value": "uid", + "keyword": null, + "type": 0, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "END", + "value": "END", + "keyword": "END", + "type": 1, + "flags": 1, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 32, + "idx": 33 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "OPTIONS": { + "TEMPORARY": 1, + "OR REPLACE": 2, + "ALGORITHM": [ + 3, + "var=" + ], + "DEFINER": [ + 4, + "expr=" + ], + "SQL SECURITY": [ + 5, + "var" + ], + "DATABASE": 6, + "EVENT": 6, + "FUNCTION": 6, + "INDEX": 6, + "UNIQUE INDEX": 6, + "FULLTEXT INDEX": 6, + "SPATIAL INDEX": 6, + "PROCEDURE": 6, + "SERVER": 6, + "TABLE": 6, + "TABLESPACE": 6, + "TRIGGER": 6, + "USER": 6, + "VIEW": 6, + "SCHEMA": 6, + "IF NOT EXISTS": 7 + }, + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var=" + ], + "CHARSET": [ + 1, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var=" + ], + "DEFAULT CHARSET": [ + 1, + "var=" + ], + "DEFAULT COLLATE": [ + 2, + "var=" + ], + "COLLATE": [ + 2, + "var=" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 2, + "var=" + ], + "AVG_ROW_LENGTH": [ + 3, + "var" + ], + "CHARACTER SET": [ + 4, + "var=" + ], + "CHARSET": [ + 4, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 4, + "var=" + ], + "DEFAULT CHARSET": [ + 4, + "var=" + ], + "CHECKSUM": [ + 5, + "var" + ], + "DEFAULT COLLATE": [ + 6, + "var=" + ], + "COLLATE": [ + 6, + "var=" + ], + "COMMENT": [ + 7, + "var=" + ], + "CONNECTION": [ + 8, + "var" + ], + "DATA DIRECTORY": [ + 9, + "var" + ], + "DELAY_KEY_WRITE": [ + 10, + "var" + ], + "INDEX DIRECTORY": [ + 11, + "var" + ], + "INSERT_METHOD": [ + 12, + "var" + ], + "KEY_BLOCK_SIZE": [ + 13, + "var" + ], + "MAX_ROWS": [ + 14, + "var" + ], + "MIN_ROWS": [ + 15, + "var" + ], + "PACK_KEYS": [ + 16, + "var" + ], + "PASSWORD": [ + 17, + "var" + ], + "ROW_FORMAT": [ + 18, + "var" + ], + "TABLESPACE": [ + 19, + "var" + ], + "STORAGE": [ + 20, + "var" + ], + "UNION": [ + 21, + "var" + ] + }, + "FUNC_OPTIONS": { + "NOT": [ + 2, + "var" + ], + "FUNCTION": [ + 3, + "var=" + ], + "PROCEDURE": [ + 3, + "var=" + ], + "CONTAINS": [ + 4, + "expr" + ], + "NO": [ + 4, + "var" + ], + "READS": [ + 4, + "var" + ], + "MODIFIES": [ + 4, + "expr" + ], + "SQL SECURITY": [ + 6, + "var" + ], + "LANGUAGE": [ + 7, + "var" + ], + "COMMENT": [ + 8, + "var" + ], + "CREATE": 1, + "DETERMINISTIC": 2, + "DATA": 5 + }, + "TRIGGER_OPTIONS": { + "BEFORE": 1, + "AFTER": 1, + "INSERT": 2, + "UPDATE": 2, + "DELETE": 2 + }, + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "P_TEST", + "column": null, + "expr": "P_TEST", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "fields": null, + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ParameterDefinition", + "name": "uid", + "inOut": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "DATA_TYPE_OPTIONS": { + "BINARY": 1, + "CHARACTER SET": [ + 2, + "var" + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "UNSIGNED": 4, + "ZEROFILL": 5 + }, + "name": "INT", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + } + } + ], + "body": [ + { + "@type": "@13" + }, + { + "@type": "@14" + }, + { + "@type": "@15" + }, + { + "@type": "@16" + }, + { + "@type": "@17" + }, + { + "@type": "@18" + }, + { + "@type": "@19" + }, + { + "@type": "@20" + }, + { + "@type": "@21" + }, + { + "@type": "@22" + }, + { + "@type": "@23" + }, + { + "@type": "@24" + }, + { + "@type": "@25" + }, + { + "@type": "@26" + }, + { + "@type": "@27" + }, + { + "@type": "@28" + }, + { + "@type": "@29" + }, + { + "@type": "@30" + }, + { + "@type": "@31" + }, + { + "@type": "@32" + }, + { + "@type": "@33" + } + ], + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "PROCEDURE" + } + }, + "first": 0, + "last": 32 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateProcedure1.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateProcedure1.in new file mode 100644 index 0000000000..17d674477a --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateProcedure1.in @@ -0,0 +1 @@ +CREATE DEFINER=`root`@`%` PROCEDURE `test2`(IN `_var` INT) NOT DETERMINISTIC NO SQL SQL SECURITY INVOKER SELECT _var \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateProcedure1.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateProcedure1.out new file mode 100644 index 0000000000..c5586f101f --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateProcedure1.out @@ -0,0 +1,998 @@ +{ + "query": "CREATE DEFINER=`root`@`%` PROCEDURE `test2`(IN `_var` INT) NOT DETERMINISTIC NO SQL SQL SECURITY INVOKER SELECT _var", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "CREATE DEFINER=`root`@`%` PROCEDURE `test2`(IN `_var` INT) NOT DETERMINISTIC NO SQL SQL SECURITY INVOKER SELECT _var", + "len": 116, + "last": 116, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFINER", + "value": "DEFINER", + "keyword": "DEFINER", + "type": 1, + "flags": 1, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`root`@`%`", + "value": "root@%", + "keyword": null, + "type": 8, + "flags": 4, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PROCEDURE", + "value": "PROCEDURE", + "keyword": "PROCEDURE", + "type": 1, + "flags": 3, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`test2`", + "value": "test2", + "keyword": null, + "type": 8, + "flags": 2, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IN", + "value": "IN", + "keyword": "IN", + "type": 1, + "flags": 35, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`_var`", + "value": "_var", + "keyword": null, + "type": 8, + "flags": 2, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INT", + "value": "INT", + "keyword": "INT", + "type": 1, + "flags": 11, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT", + "value": "NOT", + "keyword": "NOT", + "type": 1, + "flags": 3, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DETERMINISTIC", + "value": "DETERMINISTIC", + "keyword": "DETERMINISTIC", + "type": 1, + "flags": 3, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NO", + "value": "NO", + "keyword": "NO", + "type": 1, + "flags": 1, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SQL", + "value": "SQL", + "keyword": "SQL", + "type": 1, + "flags": 3, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 83 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SQL SECURITY", + "value": "SQL SECURITY", + "keyword": "SQL SECURITY", + "type": 1, + "flags": 7, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INVOKER", + "value": "INVOKER", + "keyword": "INVOKER", + "type": 1, + "flags": 1, + "position": 97 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 104 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 105 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 111 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "_var", + "value": "_var", + "keyword": null, + "type": 0, + "flags": 0, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 33, + "idx": 34 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "OPTIONS": { + "TEMPORARY": 1, + "OR REPLACE": 2, + "ALGORITHM": [ + 3, + "var=" + ], + "DEFINER": [ + 4, + "expr=" + ], + "SQL SECURITY": [ + 5, + "var" + ], + "DATABASE": 6, + "EVENT": 6, + "FUNCTION": 6, + "INDEX": 6, + "UNIQUE INDEX": 6, + "FULLTEXT INDEX": 6, + "SPATIAL INDEX": 6, + "PROCEDURE": 6, + "SERVER": 6, + "TABLE": 6, + "TABLESPACE": 6, + "TRIGGER": 6, + "USER": 6, + "VIEW": 6, + "SCHEMA": 6, + "IF NOT EXISTS": 7 + }, + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var=" + ], + "CHARSET": [ + 1, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var=" + ], + "DEFAULT CHARSET": [ + 1, + "var=" + ], + "DEFAULT COLLATE": [ + 2, + "var=" + ], + "COLLATE": [ + 2, + "var=" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 2, + "var=" + ], + "AVG_ROW_LENGTH": [ + 3, + "var" + ], + "CHARACTER SET": [ + 4, + "var=" + ], + "CHARSET": [ + 4, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 4, + "var=" + ], + "DEFAULT CHARSET": [ + 4, + "var=" + ], + "CHECKSUM": [ + 5, + "var" + ], + "DEFAULT COLLATE": [ + 6, + "var=" + ], + "COLLATE": [ + 6, + "var=" + ], + "COMMENT": [ + 7, + "var=" + ], + "CONNECTION": [ + 8, + "var" + ], + "DATA DIRECTORY": [ + 9, + "var" + ], + "DELAY_KEY_WRITE": [ + 10, + "var" + ], + "INDEX DIRECTORY": [ + 11, + "var" + ], + "INSERT_METHOD": [ + 12, + "var" + ], + "KEY_BLOCK_SIZE": [ + 13, + "var" + ], + "MAX_ROWS": [ + 14, + "var" + ], + "MIN_ROWS": [ + 15, + "var" + ], + "PACK_KEYS": [ + 16, + "var" + ], + "PASSWORD": [ + 17, + "var" + ], + "ROW_FORMAT": [ + 18, + "var" + ], + "TABLESPACE": [ + 19, + "var" + ], + "STORAGE": [ + 20, + "var" + ], + "UNION": [ + 21, + "var" + ] + }, + "FUNC_OPTIONS": { + "NOT": [ + 2, + "var" + ], + "FUNCTION": [ + 3, + "var=" + ], + "PROCEDURE": [ + 3, + "var=" + ], + "CONTAINS": [ + 4, + "expr" + ], + "NO": [ + 4, + "var" + ], + "READS": [ + 4, + "var" + ], + "MODIFIES": [ + 4, + "expr" + ], + "SQL SECURITY": [ + 6, + "var" + ], + "LANGUAGE": [ + 7, + "var" + ], + "COMMENT": [ + 8, + "var" + ], + "CREATE": 1, + "DETERMINISTIC": 2, + "DATA": 5 + }, + "TRIGGER_OPTIONS": { + "BEFORE": 1, + "AFTER": 1, + "INSERT": 2, + "UPDATE": 2, + "DELETE": 2 + }, + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "test2", + "column": null, + "expr": "`test2`", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": { + "name": "NOT", + "equals": false, + "expr": "DETERMINISTIC", + "value": "DETERMINISTIC" + }, + "4": { + "name": "NO", + "equals": false, + "expr": "SQL", + "value": "SQL" + }, + "6": { + "name": "SQL SECURITY", + "equals": false, + "expr": "INVOKER", + "value": "INVOKER" + } + } + }, + "fields": null, + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ParameterDefinition", + "name": "_var", + "inOut": "IN", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "DATA_TYPE_OPTIONS": { + "BINARY": 1, + "CHARACTER SET": [ + 2, + "var" + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "UNSIGNED": 4, + "ZEROFILL": 5 + }, + "name": "INT", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + } + } + ], + "body": [ + { + "@type": "@31" + }, + { + "@type": "@32" + }, + { + "@type": "@33" + }, + { + "@type": "@34" + } + ], + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "4": { + "name": "DEFINER", + "equals": true, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "root@%", + "expr": "`root`@`%`", + "alias": null, + "function": null, + "subquery": null + }, + "value": "`root`@`%`" + }, + "6": "PROCEDURE" + } + }, + "first": 0, + "last": 33 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateProcedure2.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateProcedure2.in new file mode 100644 index 0000000000..e24b92eacc --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateProcedure2.in @@ -0,0 +1,4 @@ +CREATE PROCEDURE P_TEST(IN uid INT, IN unused VARCHAR) +BEGIN + SELECT username FROM users WHERE ID = uid; +END \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateProcedure2.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateProcedure2.out new file mode 100644 index 0000000000..964a2d7bcb --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateProcedure2.out @@ -0,0 +1,1105 @@ +{ + "query": "CREATE PROCEDURE P_TEST(IN uid INT, IN unused VARCHAR)\nBEGIN\n SELECT username FROM users WHERE ID = uid;\nEND", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "CREATE PROCEDURE P_TEST(IN uid INT, IN unused VARCHAR)\nBEGIN\n SELECT username FROM users WHERE ID = uid;\nEND", + "len": 111, + "last": 111, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PROCEDURE", + "value": "PROCEDURE", + "keyword": "PROCEDURE", + "type": 1, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "P_TEST", + "value": "P_TEST", + "keyword": null, + "type": 0, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IN", + "value": "IN", + "keyword": "IN", + "type": 1, + "flags": 35, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "uid", + "value": "uid", + "keyword": null, + "type": 0, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INT", + "value": "INT", + "keyword": "INT", + "type": 1, + "flags": 11, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IN", + "value": "IN", + "keyword": "IN", + "type": 1, + "flags": 35, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "unused", + "value": "unused", + "keyword": null, + "type": 0, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VARCHAR", + "value": "VARCHAR", + "keyword": "VARCHAR", + "type": 1, + "flags": 11, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "BEGIN", + "value": "BEGIN", + "keyword": "BEGIN", + "type": 1, + "flags": 1, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "username", + "value": "username", + "keyword": null, + "type": 0, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "users", + "value": "users", + "keyword": null, + "type": 0, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 91 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 97 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ID", + "value": "ID", + "keyword": null, + "type": 0, + "flags": 0, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 101 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 102 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "uid", + "value": "uid", + "keyword": null, + "type": 0, + "flags": 0, + "position": 103 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 106 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "END", + "value": "END", + "keyword": "END", + "type": 1, + "flags": 1, + "position": 108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 41, + "idx": 42 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "OPTIONS": { + "TEMPORARY": 1, + "OR REPLACE": 2, + "ALGORITHM": [ + 3, + "var=" + ], + "DEFINER": [ + 4, + "expr=" + ], + "SQL SECURITY": [ + 5, + "var" + ], + "DATABASE": 6, + "EVENT": 6, + "FUNCTION": 6, + "INDEX": 6, + "UNIQUE INDEX": 6, + "FULLTEXT INDEX": 6, + "SPATIAL INDEX": 6, + "PROCEDURE": 6, + "SERVER": 6, + "TABLE": 6, + "TABLESPACE": 6, + "TRIGGER": 6, + "USER": 6, + "VIEW": 6, + "SCHEMA": 6, + "IF NOT EXISTS": 7 + }, + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var=" + ], + "CHARSET": [ + 1, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var=" + ], + "DEFAULT CHARSET": [ + 1, + "var=" + ], + "DEFAULT COLLATE": [ + 2, + "var=" + ], + "COLLATE": [ + 2, + "var=" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 2, + "var=" + ], + "AVG_ROW_LENGTH": [ + 3, + "var" + ], + "CHARACTER SET": [ + 4, + "var=" + ], + "CHARSET": [ + 4, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 4, + "var=" + ], + "DEFAULT CHARSET": [ + 4, + "var=" + ], + "CHECKSUM": [ + 5, + "var" + ], + "DEFAULT COLLATE": [ + 6, + "var=" + ], + "COLLATE": [ + 6, + "var=" + ], + "COMMENT": [ + 7, + "var=" + ], + "CONNECTION": [ + 8, + "var" + ], + "DATA DIRECTORY": [ + 9, + "var" + ], + "DELAY_KEY_WRITE": [ + 10, + "var" + ], + "INDEX DIRECTORY": [ + 11, + "var" + ], + "INSERT_METHOD": [ + 12, + "var" + ], + "KEY_BLOCK_SIZE": [ + 13, + "var" + ], + "MAX_ROWS": [ + 14, + "var" + ], + "MIN_ROWS": [ + 15, + "var" + ], + "PACK_KEYS": [ + 16, + "var" + ], + "PASSWORD": [ + 17, + "var" + ], + "ROW_FORMAT": [ + 18, + "var" + ], + "TABLESPACE": [ + 19, + "var" + ], + "STORAGE": [ + 20, + "var" + ], + "UNION": [ + 21, + "var" + ] + }, + "FUNC_OPTIONS": { + "NOT": [ + 2, + "var" + ], + "FUNCTION": [ + 3, + "var=" + ], + "PROCEDURE": [ + 3, + "var=" + ], + "CONTAINS": [ + 4, + "expr" + ], + "NO": [ + 4, + "var" + ], + "READS": [ + 4, + "var" + ], + "MODIFIES": [ + 4, + "expr" + ], + "SQL SECURITY": [ + 6, + "var" + ], + "LANGUAGE": [ + 7, + "var" + ], + "COMMENT": [ + 8, + "var" + ], + "CREATE": 1, + "DETERMINISTIC": 2, + "DATA": 5 + }, + "TRIGGER_OPTIONS": { + "BEFORE": 1, + "AFTER": 1, + "INSERT": 2, + "UPDATE": 2, + "DELETE": 2 + }, + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "P_TEST", + "column": null, + "expr": "P_TEST", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "fields": null, + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ParameterDefinition", + "name": "uid", + "inOut": "IN", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "DATA_TYPE_OPTIONS": { + "BINARY": 1, + "CHARACTER SET": [ + 2, + "var" + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "UNSIGNED": 4, + "ZEROFILL": 5 + }, + "name": "INT", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ParameterDefinition", + "name": "unused", + "inOut": "IN", + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "DATA_TYPE_OPTIONS": { + "BINARY": 1, + "CHARACTER SET": [ + 2, + "var" + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "UNSIGNED": 4, + "ZEROFILL": 5 + }, + "name": "VARCHAR", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + } + } + ], + "body": [ + { + "@type": "@22" + }, + { + "@type": "@23" + }, + { + "@type": "@24" + }, + { + "@type": "@25" + }, + { + "@type": "@26" + }, + { + "@type": "@27" + }, + { + "@type": "@28" + }, + { + "@type": "@29" + }, + { + "@type": "@30" + }, + { + "@type": "@31" + }, + { + "@type": "@32" + }, + { + "@type": "@33" + }, + { + "@type": "@34" + }, + { + "@type": "@35" + }, + { + "@type": "@36" + }, + { + "@type": "@37" + }, + { + "@type": "@38" + }, + { + "@type": "@39" + }, + { + "@type": "@40" + }, + { + "@type": "@41" + }, + { + "@type": "@42" + } + ], + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "PROCEDURE" + } + }, + "first": 0, + "last": 41 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateSchema.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateSchema.in new file mode 100644 index 0000000000..a163bea124 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateSchema.in @@ -0,0 +1 @@ +CREATE DATABASE IF NOT EXISTS pma DEFAULT CHARSET 'utf8'; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateSchema.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateSchema.out new file mode 100644 index 0000000000..2fb7fd5e0a --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateSchema.out @@ -0,0 +1,734 @@ +{ + "query": "CREATE DATABASE IF NOT EXISTS pma DEFAULT CHARSET 'utf8';", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "CREATE DATABASE IF NOT EXISTS pma DEFAULT CHARSET 'utf8';", + "len": 57, + "last": 57, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DATABASE", + "value": "DATABASE", + "keyword": "DATABASE", + "type": 1, + "flags": 35, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IF NOT EXISTS", + "value": "IF NOT EXISTS", + "keyword": "IF NOT EXISTS", + "type": 1, + "flags": 7, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "pma", + "value": "pma", + "keyword": null, + "type": 0, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT CHARSET", + "value": "DEFAULT CHARSET", + "keyword": "DEFAULT CHARSET", + "type": 1, + "flags": 7, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'utf8'", + "value": "utf8", + "keyword": null, + "type": 7, + "flags": 1, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 13, + "idx": 13 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "OPTIONS": { + "TEMPORARY": 1, + "OR REPLACE": 2, + "ALGORITHM": [ + 3, + "var=" + ], + "DEFINER": [ + 4, + "expr=" + ], + "SQL SECURITY": [ + 5, + "var" + ], + "DATABASE": 6, + "EVENT": 6, + "FUNCTION": 6, + "INDEX": 6, + "UNIQUE INDEX": 6, + "FULLTEXT INDEX": 6, + "SPATIAL INDEX": 6, + "PROCEDURE": 6, + "SERVER": 6, + "TABLE": 6, + "TABLESPACE": 6, + "TRIGGER": 6, + "USER": 6, + "VIEW": 6, + "SCHEMA": 6, + "IF NOT EXISTS": 7 + }, + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var=" + ], + "CHARSET": [ + 1, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var=" + ], + "DEFAULT CHARSET": [ + 1, + "var=" + ], + "DEFAULT COLLATE": [ + 2, + "var=" + ], + "COLLATE": [ + 2, + "var=" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 2, + "var=" + ], + "AVG_ROW_LENGTH": [ + 3, + "var" + ], + "CHARACTER SET": [ + 4, + "var=" + ], + "CHARSET": [ + 4, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 4, + "var=" + ], + "DEFAULT CHARSET": [ + 4, + "var=" + ], + "CHECKSUM": [ + 5, + "var" + ], + "DEFAULT COLLATE": [ + 6, + "var=" + ], + "COLLATE": [ + 6, + "var=" + ], + "COMMENT": [ + 7, + "var=" + ], + "CONNECTION": [ + 8, + "var" + ], + "DATA DIRECTORY": [ + 9, + "var" + ], + "DELAY_KEY_WRITE": [ + 10, + "var" + ], + "INDEX DIRECTORY": [ + 11, + "var" + ], + "INSERT_METHOD": [ + 12, + "var" + ], + "KEY_BLOCK_SIZE": [ + 13, + "var" + ], + "MAX_ROWS": [ + 14, + "var" + ], + "MIN_ROWS": [ + 15, + "var" + ], + "PACK_KEYS": [ + 16, + "var" + ], + "PASSWORD": [ + 17, + "var" + ], + "ROW_FORMAT": [ + 18, + "var" + ], + "TABLESPACE": [ + 19, + "var" + ], + "STORAGE": [ + 20, + "var" + ], + "UNION": [ + 21, + "var" + ] + }, + "FUNC_OPTIONS": { + "NOT": [ + 2, + "var" + ], + "FUNCTION": [ + 3, + "var=" + ], + "PROCEDURE": [ + 3, + "var=" + ], + "CONTAINS": [ + 4, + "expr" + ], + "NO": [ + 4, + "var" + ], + "READS": [ + 4, + "var" + ], + "MODIFIES": [ + 4, + "expr" + ], + "SQL SECURITY": [ + 6, + "var" + ], + "LANGUAGE": [ + 7, + "var" + ], + "COMMENT": [ + 8, + "var" + ], + "CREATE": 1, + "DETERMINISTIC": 2, + "DATA": 5 + }, + "TRIGGER_OPTIONS": { + "BEFORE": 1, + "AFTER": 1, + "INSERT": 2, + "UPDATE": 2, + "DELETE": 2 + }, + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": "pma", + "table": null, + "column": null, + "expr": "pma", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "DEFAULT CHARSET", + "equals": true, + "expr": "'utf8'", + "value": "utf8" + } + } + }, + "fields": null, + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [], + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "DATABASE", + "7": "IF NOT EXISTS" + } + }, + "first": 0, + "last": 10 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateSchemaErr.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateSchemaErr.in new file mode 100644 index 0000000000..d6ff04153b --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateSchemaErr.in @@ -0,0 +1 @@ +CREATE SCHEMA IF NOT EXISTS pma ENGINE='InnoDB' DEFAULT CHARSET 'utf8' \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateSchemaErr.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateSchemaErr.out new file mode 100644 index 0000000000..ab58eb1edd --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateSchemaErr.out @@ -0,0 +1,762 @@ +{ + "query": "CREATE SCHEMA IF NOT EXISTS pma ENGINE='InnoDB' DEFAULT CHARSET 'utf8'", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "CREATE SCHEMA IF NOT EXISTS pma ENGINE='InnoDB' DEFAULT CHARSET 'utf8'", + "len": 70, + "last": 70, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SCHEMA", + "value": "SCHEMA", + "keyword": "SCHEMA", + "type": 1, + "flags": 35, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IF NOT EXISTS", + "value": "IF NOT EXISTS", + "keyword": "IF NOT EXISTS", + "type": 1, + "flags": 7, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "pma", + "value": "pma", + "keyword": null, + "type": 0, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ENGINE", + "value": "ENGINE", + "keyword": "ENGINE", + "type": 1, + "flags": 1, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'InnoDB'", + "value": "InnoDB", + "keyword": null, + "type": 7, + "flags": 1, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT CHARSET", + "value": "DEFAULT CHARSET", + "keyword": "DEFAULT CHARSET", + "type": 1, + "flags": 7, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'utf8'", + "value": "utf8", + "keyword": null, + "type": 7, + "flags": 1, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 16, + "idx": 17 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "OPTIONS": { + "TEMPORARY": 1, + "OR REPLACE": 2, + "ALGORITHM": [ + 3, + "var=" + ], + "DEFINER": [ + 4, + "expr=" + ], + "SQL SECURITY": [ + 5, + "var" + ], + "DATABASE": 6, + "EVENT": 6, + "FUNCTION": 6, + "INDEX": 6, + "UNIQUE INDEX": 6, + "FULLTEXT INDEX": 6, + "SPATIAL INDEX": 6, + "PROCEDURE": 6, + "SERVER": 6, + "TABLE": 6, + "TABLESPACE": 6, + "TRIGGER": 6, + "USER": 6, + "VIEW": 6, + "SCHEMA": 6, + "IF NOT EXISTS": 7 + }, + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var=" + ], + "CHARSET": [ + 1, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var=" + ], + "DEFAULT CHARSET": [ + 1, + "var=" + ], + "DEFAULT COLLATE": [ + 2, + "var=" + ], + "COLLATE": [ + 2, + "var=" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 2, + "var=" + ], + "AVG_ROW_LENGTH": [ + 3, + "var" + ], + "CHARACTER SET": [ + 4, + "var=" + ], + "CHARSET": [ + 4, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 4, + "var=" + ], + "DEFAULT CHARSET": [ + 4, + "var=" + ], + "CHECKSUM": [ + 5, + "var" + ], + "DEFAULT COLLATE": [ + 6, + "var=" + ], + "COLLATE": [ + 6, + "var=" + ], + "COMMENT": [ + 7, + "var=" + ], + "CONNECTION": [ + 8, + "var" + ], + "DATA DIRECTORY": [ + 9, + "var" + ], + "DELAY_KEY_WRITE": [ + 10, + "var" + ], + "INDEX DIRECTORY": [ + 11, + "var" + ], + "INSERT_METHOD": [ + 12, + "var" + ], + "KEY_BLOCK_SIZE": [ + 13, + "var" + ], + "MAX_ROWS": [ + 14, + "var" + ], + "MIN_ROWS": [ + 15, + "var" + ], + "PACK_KEYS": [ + 16, + "var" + ], + "PASSWORD": [ + 17, + "var" + ], + "ROW_FORMAT": [ + 18, + "var" + ], + "TABLESPACE": [ + 19, + "var" + ], + "STORAGE": [ + 20, + "var" + ], + "UNION": [ + 21, + "var" + ] + }, + "FUNC_OPTIONS": { + "NOT": [ + 2, + "var" + ], + "FUNCTION": [ + 3, + "var=" + ], + "PROCEDURE": [ + 3, + "var=" + ], + "CONTAINS": [ + 4, + "expr" + ], + "NO": [ + 4, + "var" + ], + "READS": [ + 4, + "var" + ], + "MODIFIES": [ + 4, + "expr" + ], + "SQL SECURITY": [ + 6, + "var" + ], + "LANGUAGE": [ + 7, + "var" + ], + "COMMENT": [ + 8, + "var" + ], + "CREATE": 1, + "DETERMINISTIC": 2, + "DATA": 5 + }, + "TRIGGER_OPTIONS": { + "BEFORE": 1, + "AFTER": 1, + "INSERT": 2, + "UPDATE": 2, + "DELETE": 2 + }, + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": "pma", + "table": null, + "column": null, + "expr": "pma", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "fields": null, + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [], + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "SCHEMA", + "7": "IF NOT EXISTS" + } + }, + "first": 0, + "last": 7 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unrecognized statement type.", + { + "@type": "@10" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTable.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTable.in new file mode 100644 index 0000000000..e9f0911b0a --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTable.in @@ -0,0 +1,7 @@ +CREATE TABLE IF NOT EXISTS users ( + `id` INT NOT NULL AUTO_INCREMENT, + username VARCHAR(64) NULL, + `password` VARCHAR(256) DEFAULT '123456', + CONSTRAINT pk_id PRIMARY KEY (`id`), + UNIQUE (username) +) ENGINE=InnoDB; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTable.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTable.out new file mode 100644 index 0000000000..c69e6c74de --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTable.out @@ -0,0 +1,1756 @@ +{ + "query": "CREATE TABLE IF NOT EXISTS users (\n `id` INT NOT NULL AUTO_INCREMENT,\n username VARCHAR(64) NULL,\n `password` VARCHAR(256) DEFAULT '123456',\n CONSTRAINT pk_id PRIMARY KEY (`id`),\n UNIQUE (username)\n) ENGINE=InnoDB;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "CREATE TABLE IF NOT EXISTS users (\n `id` INT NOT NULL AUTO_INCREMENT,\n username VARCHAR(64) NULL,\n `password` VARCHAR(256) DEFAULT '123456',\n CONSTRAINT pk_id PRIMARY KEY (`id`),\n UNIQUE (username)\n) ENGINE=InnoDB;", + "len": 229, + "last": 229, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": 1, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IF NOT EXISTS", + "value": "IF NOT EXISTS", + "keyword": "IF NOT EXISTS", + "type": 1, + "flags": 7, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "users", + "value": "users", + "keyword": null, + "type": 0, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`id`", + "value": "id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INT", + "value": "INT", + "keyword": "INT", + "type": 1, + "flags": 11, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": 1, + "flags": 7, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AUTO_INCREMENT", + "value": "AUTO_INCREMENT", + "keyword": "AUTO_INCREMENT", + "type": 1, + "flags": 1, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "username", + "value": "username", + "keyword": null, + "type": 0, + "flags": 0, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VARCHAR", + "value": "VARCHAR", + "keyword": "VARCHAR", + "type": 1, + "flags": 11, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "64", + "value": 64, + "keyword": null, + "type": 6, + "flags": 0, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 97 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NULL", + "value": "NULL", + "keyword": "NULL", + "type": 1, + "flags": 3, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 102 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 103 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`password`", + "value": "password", + "keyword": null, + "type": 8, + "flags": 2, + "position": 108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 118 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VARCHAR", + "value": "VARCHAR", + "keyword": "VARCHAR", + "type": 1, + "flags": 11, + "position": 119 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 126 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "256", + "value": 256, + "keyword": null, + "type": 6, + "flags": 0, + "position": 127 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 130 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 131 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT", + "value": "DEFAULT", + "keyword": "DEFAULT", + "type": 1, + "flags": 35, + "position": 132 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 139 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'123456'", + "value": "123456", + "keyword": null, + "type": 7, + "flags": 1, + "position": 140 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 148 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 149 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CONSTRAINT", + "value": "CONSTRAINT", + "keyword": "CONSTRAINT", + "type": 1, + "flags": 3, + "position": 154 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 164 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "pk_id", + "value": "pk_id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 165 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 170 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PRIMARY KEY", + "value": "PRIMARY KEY", + "keyword": "PRIMARY KEY", + "type": 1, + "flags": 23, + "position": 171 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 182 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 183 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`id`", + "value": "id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 184 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 188 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 189 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 190 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNIQUE", + "value": "UNIQUE", + "keyword": "UNIQUE", + "type": 1, + "flags": 19, + "position": 195 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 201 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 202 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "username", + "value": "username", + "keyword": null, + "type": 0, + "flags": 0, + "position": 203 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 211 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 212 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 213 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 214 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ENGINE", + "value": "ENGINE", + "keyword": "ENGINE", + "type": 1, + "flags": 1, + "position": 215 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 221 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "InnoDB", + "value": "InnoDB", + "keyword": null, + "type": 0, + "flags": 0, + "position": 222 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 228 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 65, + "idx": 65 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "OPTIONS": { + "TEMPORARY": 1, + "OR REPLACE": 2, + "ALGORITHM": [ + 3, + "var=" + ], + "DEFINER": [ + 4, + "expr=" + ], + "SQL SECURITY": [ + 5, + "var" + ], + "DATABASE": 6, + "EVENT": 6, + "FUNCTION": 6, + "INDEX": 6, + "UNIQUE INDEX": 6, + "FULLTEXT INDEX": 6, + "SPATIAL INDEX": 6, + "PROCEDURE": 6, + "SERVER": 6, + "TABLE": 6, + "TABLESPACE": 6, + "TRIGGER": 6, + "USER": 6, + "VIEW": 6, + "SCHEMA": 6, + "IF NOT EXISTS": 7 + }, + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var=" + ], + "CHARSET": [ + 1, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var=" + ], + "DEFAULT CHARSET": [ + 1, + "var=" + ], + "DEFAULT COLLATE": [ + 2, + "var=" + ], + "COLLATE": [ + 2, + "var=" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 2, + "var=" + ], + "AVG_ROW_LENGTH": [ + 3, + "var" + ], + "CHARACTER SET": [ + 4, + "var=" + ], + "CHARSET": [ + 4, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 4, + "var=" + ], + "DEFAULT CHARSET": [ + 4, + "var=" + ], + "CHECKSUM": [ + 5, + "var" + ], + "DEFAULT COLLATE": [ + 6, + "var=" + ], + "COLLATE": [ + 6, + "var=" + ], + "COMMENT": [ + 7, + "var=" + ], + "CONNECTION": [ + 8, + "var" + ], + "DATA DIRECTORY": [ + 9, + "var" + ], + "DELAY_KEY_WRITE": [ + 10, + "var" + ], + "INDEX DIRECTORY": [ + 11, + "var" + ], + "INSERT_METHOD": [ + 12, + "var" + ], + "KEY_BLOCK_SIZE": [ + 13, + "var" + ], + "MAX_ROWS": [ + 14, + "var" + ], + "MIN_ROWS": [ + 15, + "var" + ], + "PACK_KEYS": [ + 16, + "var" + ], + "PASSWORD": [ + 17, + "var" + ], + "ROW_FORMAT": [ + 18, + "var" + ], + "TABLESPACE": [ + 19, + "var" + ], + "STORAGE": [ + 20, + "var" + ], + "UNION": [ + 21, + "var" + ] + }, + "FUNC_OPTIONS": { + "NOT": [ + 2, + "var" + ], + "FUNCTION": [ + 3, + "var=" + ], + "PROCEDURE": [ + 3, + "var=" + ], + "CONTAINS": [ + 4, + "expr" + ], + "NO": [ + 4, + "var" + ], + "READS": [ + 4, + "var" + ], + "MODIFIES": [ + 4, + "expr" + ], + "SQL SECURITY": [ + 6, + "var" + ], + "LANGUAGE": [ + 7, + "var" + ], + "COMMENT": [ + 8, + "var" + ], + "CREATE": 1, + "DETERMINISTIC": 2, + "DATA": 5 + }, + "TRIGGER_OPTIONS": { + "BEFORE": 1, + "AFTER": 1, + "INSERT": 2, + "UPDATE": 2, + "DELETE": 2 + }, + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "users", + "column": null, + "expr": "users", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "ENGINE", + "equals": true, + "expr": "InnoDB", + "value": "InnoDB" + } + } + }, + "fields": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "FIELD_OPTIONS": { + "_UNSORTED": true, + "NOT NULL": 1, + "NULL": 1, + "DEFAULT": [ + 2, + "expr", + { + "breakOnAlias": true + } + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "AUTO_INCREMENT": 3, + "PRIMARY": 4, + "PRIMARY KEY": 4, + "UNIQUE": 4, + "UNIQUE KEY": 4, + "COMMENT": [ + 5, + "var" + ], + "COLUMN_FORMAT": [ + 6, + "var" + ], + "ON UPDATE": [ + 7, + "expr" + ], + "GENERATED ALWAYS": 8, + "AS": [ + 9, + "expr", + { + "parenthesesDelimited": true + } + ], + "VIRTUAL": 10, + "PERSISTENT": 11, + "STORED": 11, + "CHECK": [ + 12, + "expr", + { + "parenthesesDelimited": true + } + ], + "INVISIBLE": 13, + "ENFORCED": 14, + "NOT": 15 + }, + "name": "id", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "DATA_TYPE_OPTIONS": { + "BINARY": 1, + "CHARACTER SET": [ + 2, + "var" + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "UNSIGNED": 4, + "ZEROFILL": 5 + }, + "name": "INT", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "NOT NULL", + "3": "AUTO_INCREMENT" + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "FIELD_OPTIONS": { + "_UNSORTED": true, + "NOT NULL": 1, + "NULL": 1, + "DEFAULT": [ + 2, + "expr", + { + "breakOnAlias": true + } + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "AUTO_INCREMENT": 3, + "PRIMARY": 4, + "PRIMARY KEY": 4, + "UNIQUE": 4, + "UNIQUE KEY": 4, + "COMMENT": [ + 5, + "var" + ], + "COLUMN_FORMAT": [ + 6, + "var" + ], + "ON UPDATE": [ + 7, + "expr" + ], + "GENERATED ALWAYS": 8, + "AS": [ + 9, + "expr", + { + "parenthesesDelimited": true + } + ], + "VIRTUAL": 10, + "PERSISTENT": 11, + "STORED": 11, + "CHECK": [ + 12, + "expr", + { + "parenthesesDelimited": true + } + ], + "INVISIBLE": 13, + "ENFORCED": 14, + "NOT": 15 + }, + "name": "username", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "DATA_TYPE_OPTIONS": { + "BINARY": 1, + "CHARACTER SET": [ + 2, + "var" + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "UNSIGNED": 4, + "ZEROFILL": 5 + }, + "name": "VARCHAR", + "parameters": [ + "64" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "NULL" + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "FIELD_OPTIONS": { + "_UNSORTED": true, + "NOT NULL": 1, + "NULL": 1, + "DEFAULT": [ + 2, + "expr", + { + "breakOnAlias": true + } + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "AUTO_INCREMENT": 3, + "PRIMARY": 4, + "PRIMARY KEY": 4, + "UNIQUE": 4, + "UNIQUE KEY": 4, + "COMMENT": [ + 5, + "var" + ], + "COLUMN_FORMAT": [ + 6, + "var" + ], + "ON UPDATE": [ + 7, + "expr" + ], + "GENERATED ALWAYS": 8, + "AS": [ + 9, + "expr", + { + "parenthesesDelimited": true + } + ], + "VIRTUAL": 10, + "PERSISTENT": 11, + "STORED": 11, + "CHECK": [ + 12, + "expr", + { + "parenthesesDelimited": true + } + ], + "INVISIBLE": 13, + "ENFORCED": 14, + "NOT": 15 + }, + "name": "password", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "DATA_TYPE_OPTIONS": { + "BINARY": 1, + "CHARACTER SET": [ + 2, + "var" + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "UNSIGNED": 4, + "ZEROFILL": 5 + }, + "name": "VARCHAR", + "parameters": [ + "256" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": { + "name": "DEFAULT", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "123456", + "expr": "'123456'", + "alias": null, + "function": null, + "subquery": null + }, + "value": "'123456'" + } + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "FIELD_OPTIONS": { + "_UNSORTED": true, + "NOT NULL": 1, + "NULL": 1, + "DEFAULT": [ + 2, + "expr", + { + "breakOnAlias": true + } + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "AUTO_INCREMENT": 3, + "PRIMARY": 4, + "PRIMARY KEY": 4, + "UNIQUE": 4, + "UNIQUE KEY": 4, + "COMMENT": [ + 5, + "var" + ], + "COLUMN_FORMAT": [ + 6, + "var" + ], + "ON UPDATE": [ + 7, + "expr" + ], + "GENERATED ALWAYS": 8, + "AS": [ + 9, + "expr", + { + "parenthesesDelimited": true + } + ], + "VIRTUAL": 10, + "PERSISTENT": 11, + "STORED": 11, + "CHECK": [ + 12, + "expr", + { + "parenthesesDelimited": true + } + ], + "INVISIBLE": 13, + "ENFORCED": 14, + "NOT": 15 + }, + "name": "pk_id", + "isConstraint": true, + "type": null, + "key": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Key", + "KEY_OPTIONS": { + "KEY_BLOCK_SIZE": [ + 1, + "var=" + ], + "USING": [ + 2, + "var" + ], + "WITH PARSER": [ + 3, + "var" + ], + "COMMENT": [ + 4, + "var" + ], + "CLUSTERING": [ + 4, + "var=" + ], + "ENGINE_ATTRIBUTE": [ + 5, + "var=" + ], + "SECONDARY_ENGINE_ATTRIBUTE": [ + 5, + "var=" + ], + "VISIBLE": 6, + "INVISIBLE": 6, + "IGNORED": 10, + "NOT IGNORED": 10 + }, + "name": null, + "columns": [ + { + "name": "id" + } + ], + "type": "PRIMARY KEY", + "expr": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + "references": null, + "options": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "FIELD_OPTIONS": { + "_UNSORTED": true, + "NOT NULL": 1, + "NULL": 1, + "DEFAULT": [ + 2, + "expr", + { + "breakOnAlias": true + } + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "AUTO_INCREMENT": 3, + "PRIMARY": 4, + "PRIMARY KEY": 4, + "UNIQUE": 4, + "UNIQUE KEY": 4, + "COMMENT": [ + 5, + "var" + ], + "COLUMN_FORMAT": [ + 6, + "var" + ], + "ON UPDATE": [ + 7, + "expr" + ], + "GENERATED ALWAYS": 8, + "AS": [ + 9, + "expr", + { + "parenthesesDelimited": true + } + ], + "VIRTUAL": 10, + "PERSISTENT": 11, + "STORED": 11, + "CHECK": [ + 12, + "expr", + { + "parenthesesDelimited": true + } + ], + "INVISIBLE": 13, + "ENFORCED": 14, + "NOT": 15 + }, + "name": null, + "isConstraint": null, + "type": null, + "key": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Key", + "KEY_OPTIONS": { + "KEY_BLOCK_SIZE": [ + 1, + "var=" + ], + "USING": [ + 2, + "var" + ], + "WITH PARSER": [ + 3, + "var" + ], + "COMMENT": [ + 4, + "var" + ], + "CLUSTERING": [ + 4, + "var=" + ], + "ENGINE_ATTRIBUTE": [ + 5, + "var=" + ], + "SECONDARY_ENGINE_ATTRIBUTE": [ + 5, + "var=" + ], + "VISIBLE": 6, + "INVISIBLE": 6, + "IGNORED": 10, + "NOT IGNORED": 10 + }, + "name": null, + "columns": [ + { + "name": "username" + } + ], + "type": "UNIQUE", + "expr": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + "references": null, + "options": null + } + ], + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [], + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "TABLE", + "7": "IF NOT EXISTS" + } + }, + "first": 0, + "last": 63 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTable2.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTable2.in new file mode 100644 index 0000000000..828831aa7d --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTable2.in @@ -0,0 +1,16 @@ +CREATE TABLE `payment` ( + `payment_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT, + `customer_id` smallint(5) unsigned NOT NULL, + `staff_id` tinyint(3) unsigned NOT NULL, + `rental_id` int(11) DEFAULT NULL, + `amount` decimal(5,2) NOT NULL, + `payment_date` datetime NOT NULL, + `last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + PRIMARY KEY (`payment_id`), + KEY `idx_fk_staff_id` (`staff_id`), + KEY `idx_fk_customer_id` (`customer_id`), + KEY `fk_payment_rental` (`rental_id`), + CONSTRAINT `fk_payment_customer` FOREIGN KEY (`customer_id`) REFERENCES `customer` (`customer_id`) ON UPDATE CASCADE, + CONSTRAINT `fk_payment_rental` FOREIGN KEY (`rental_id`) REFERENCES `rental` (`rental_id`) ON DELETE SET NULL ON UPDATE CASCADE, + CONSTRAINT `fk_payment_staff` FOREIGN KEY (`staff_id`) REFERENCES `staff` (`staff_id`) ON UPDATE CASCADE +) ENGINE=InnoDB AUTO_INCREMENT=16050 DEFAULT CHARSET=utf8 \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTable2.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTable2.out new file mode 100644 index 0000000000..3921870bff --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTable2.out @@ -0,0 +1,4287 @@ +{ + "query": "CREATE TABLE `payment` (\n `payment_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT,\n `customer_id` smallint(5) unsigned NOT NULL,\n `staff_id` tinyint(3) unsigned NOT NULL,\n `rental_id` int(11) DEFAULT NULL,\n `amount` decimal(5,2) NOT NULL,\n `payment_date` datetime NOT NULL,\n `last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,\n PRIMARY KEY (`payment_id`),\n KEY `idx_fk_staff_id` (`staff_id`),\n KEY `idx_fk_customer_id` (`customer_id`),\n KEY `fk_payment_rental` (`rental_id`),\n CONSTRAINT `fk_payment_customer` FOREIGN KEY (`customer_id`) REFERENCES `customer` (`customer_id`) ON UPDATE CASCADE,\n CONSTRAINT `fk_payment_rental` FOREIGN KEY (`rental_id`) REFERENCES `rental` (`rental_id`) ON DELETE SET NULL ON UPDATE CASCADE,\n CONSTRAINT `fk_payment_staff` FOREIGN KEY (`staff_id`) REFERENCES `staff` (`staff_id`) ON UPDATE CASCADE\n) ENGINE=InnoDB AUTO_INCREMENT=16050 DEFAULT CHARSET=utf8", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "CREATE TABLE `payment` (\n `payment_id` smallint(5) unsigned NOT NULL AUTO_INCREMENT,\n `customer_id` smallint(5) unsigned NOT NULL,\n `staff_id` tinyint(3) unsigned NOT NULL,\n `rental_id` int(11) DEFAULT NULL,\n `amount` decimal(5,2) NOT NULL,\n `payment_date` datetime NOT NULL,\n `last_update` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,\n PRIMARY KEY (`payment_id`),\n KEY `idx_fk_staff_id` (`staff_id`),\n KEY `idx_fk_customer_id` (`customer_id`),\n KEY `fk_payment_rental` (`rental_id`),\n CONSTRAINT `fk_payment_customer` FOREIGN KEY (`customer_id`) REFERENCES `customer` (`customer_id`) ON UPDATE CASCADE,\n CONSTRAINT `fk_payment_rental` FOREIGN KEY (`rental_id`) REFERENCES `rental` (`rental_id`) ON DELETE SET NULL ON UPDATE CASCADE,\n CONSTRAINT `fk_payment_staff` FOREIGN KEY (`staff_id`) REFERENCES `staff` (`staff_id`) ON UPDATE CASCADE\n) ENGINE=InnoDB AUTO_INCREMENT=16050 DEFAULT CHARSET=utf8", + "len": 940, + "last": 940, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": 1, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`payment`", + "value": "payment", + "keyword": null, + "type": 8, + "flags": 2, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`payment_id`", + "value": "payment_id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "smallint", + "value": "SMALLINT", + "keyword": "SMALLINT", + "type": 1, + "flags": 11, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "5", + "value": 5, + "keyword": null, + "type": 6, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "unsigned", + "value": "UNSIGNED", + "keyword": "UNSIGNED", + "type": 1, + "flags": 3, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": 1, + "flags": 7, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AUTO_INCREMENT", + "value": "AUTO_INCREMENT", + "keyword": "AUTO_INCREMENT", + "type": 1, + "flags": 1, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`customer_id`", + "value": "customer_id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 101 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "smallint", + "value": "SMALLINT", + "keyword": "SMALLINT", + "type": 1, + "flags": 11, + "position": 102 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 110 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "5", + "value": 5, + "keyword": null, + "type": 6, + "flags": 0, + "position": 111 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "unsigned", + "value": "UNSIGNED", + "keyword": "UNSIGNED", + "type": 1, + "flags": 3, + "position": 114 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 122 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": 1, + "flags": 7, + "position": 123 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 131 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 132 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`staff_id`", + "value": "staff_id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 135 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 145 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "tinyint", + "value": "TINYINT", + "keyword": "TINYINT", + "type": 1, + "flags": 11, + "position": 146 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 153 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3", + "value": 3, + "keyword": null, + "type": 6, + "flags": 0, + "position": 154 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 155 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 156 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "unsigned", + "value": "UNSIGNED", + "keyword": "UNSIGNED", + "type": 1, + "flags": 3, + "position": 157 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 165 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": 1, + "flags": 7, + "position": 166 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 174 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 175 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`rental_id`", + "value": "rental_id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 178 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 189 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "int", + "value": "INT", + "keyword": "INT", + "type": 1, + "flags": 11, + "position": 190 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 193 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "11", + "value": 11, + "keyword": null, + "type": 6, + "flags": 0, + "position": 194 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 196 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 197 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT", + "value": "DEFAULT", + "keyword": "DEFAULT", + "type": 1, + "flags": 35, + "position": 198 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 205 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NULL", + "value": "NULL", + "keyword": "NULL", + "type": 1, + "flags": 3, + "position": 206 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 210 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 211 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`amount`", + "value": "amount", + "keyword": null, + "type": 8, + "flags": 2, + "position": 214 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 222 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "decimal", + "value": "DECIMAL", + "keyword": "DECIMAL", + "type": 1, + "flags": 11, + "position": 223 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 230 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "5", + "value": 5, + "keyword": null, + "type": 6, + "flags": 0, + "position": 231 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 232 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": 6, + "flags": 0, + "position": 233 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 234 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 235 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": 1, + "flags": 7, + "position": 236 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 244 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 245 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`payment_date`", + "value": "payment_date", + "keyword": null, + "type": 8, + "flags": 2, + "position": 248 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 262 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "datetime", + "value": "datetime", + "keyword": "DATETIME", + "type": 1, + "flags": 9, + "position": 263 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 271 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": 1, + "flags": 7, + "position": 272 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 280 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 281 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`last_update`", + "value": "last_update", + "keyword": null, + "type": 8, + "flags": 2, + "position": 284 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 297 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "timestamp", + "value": "timestamp", + "keyword": "TIMESTAMP", + "type": 1, + "flags": 41, + "position": 298 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 307 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": 1, + "flags": 7, + "position": 308 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 316 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT", + "value": "DEFAULT", + "keyword": "DEFAULT", + "type": 1, + "flags": 35, + "position": 317 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 324 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CURRENT_TIMESTAMP", + "value": "CURRENT_TIMESTAMP", + "keyword": "CURRENT_TIMESTAMP", + "type": 1, + "flags": 35, + "position": 325 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 342 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON UPDATE", + "value": "ON UPDATE", + "keyword": "ON UPDATE", + "type": 1, + "flags": 7, + "position": 343 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 352 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CURRENT_TIMESTAMP", + "value": "CURRENT_TIMESTAMP", + "keyword": "CURRENT_TIMESTAMP", + "type": 1, + "flags": 35, + "position": 353 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 370 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 371 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PRIMARY KEY", + "value": "PRIMARY KEY", + "keyword": "PRIMARY KEY", + "type": 1, + "flags": 23, + "position": 374 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 385 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 386 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`payment_id`", + "value": "payment_id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 387 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 399 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 400 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 401 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "KEY", + "value": "KEY", + "keyword": "KEY", + "type": 1, + "flags": 19, + "position": 404 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 407 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`idx_fk_staff_id`", + "value": "idx_fk_staff_id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 408 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 425 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 426 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`staff_id`", + "value": "staff_id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 427 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 437 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 438 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 439 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "KEY", + "value": "KEY", + "keyword": "KEY", + "type": 1, + "flags": 19, + "position": 442 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 445 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`idx_fk_customer_id`", + "value": "idx_fk_customer_id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 446 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 466 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 467 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`customer_id`", + "value": "customer_id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 468 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 481 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 482 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 483 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "KEY", + "value": "KEY", + "keyword": "KEY", + "type": 1, + "flags": 19, + "position": 486 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 489 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`fk_payment_rental`", + "value": "fk_payment_rental", + "keyword": null, + "type": 8, + "flags": 2, + "position": 490 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 509 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 510 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`rental_id`", + "value": "rental_id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 511 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 522 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 523 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 524 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CONSTRAINT", + "value": "CONSTRAINT", + "keyword": "CONSTRAINT", + "type": 1, + "flags": 3, + "position": 527 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 537 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`fk_payment_customer`", + "value": "fk_payment_customer", + "keyword": null, + "type": 8, + "flags": 2, + "position": 538 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 559 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FOREIGN KEY", + "value": "FOREIGN KEY", + "keyword": "FOREIGN KEY", + "type": 1, + "flags": 23, + "position": 560 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 571 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 572 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`customer_id`", + "value": "customer_id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 573 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 586 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 587 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "REFERENCES", + "value": "REFERENCES", + "keyword": "REFERENCES", + "type": 1, + "flags": 3, + "position": 588 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 598 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`customer`", + "value": "customer", + "keyword": null, + "type": 8, + "flags": 2, + "position": 599 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 609 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 610 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`customer_id`", + "value": "customer_id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 611 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 624 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 625 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON UPDATE", + "value": "ON UPDATE", + "keyword": "ON UPDATE", + "type": 1, + "flags": 7, + "position": 626 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 635 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CASCADE", + "value": "CASCADE", + "keyword": "CASCADE", + "type": 1, + "flags": 3, + "position": 636 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 643 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 644 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CONSTRAINT", + "value": "CONSTRAINT", + "keyword": "CONSTRAINT", + "type": 1, + "flags": 3, + "position": 647 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 657 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`fk_payment_rental`", + "value": "fk_payment_rental", + "keyword": null, + "type": 8, + "flags": 2, + "position": 658 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 677 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FOREIGN KEY", + "value": "FOREIGN KEY", + "keyword": "FOREIGN KEY", + "type": 1, + "flags": 23, + "position": 678 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 689 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 690 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`rental_id`", + "value": "rental_id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 691 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 702 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 703 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "REFERENCES", + "value": "REFERENCES", + "keyword": "REFERENCES", + "type": 1, + "flags": 3, + "position": 704 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 714 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`rental`", + "value": "rental", + "keyword": null, + "type": 8, + "flags": 2, + "position": 715 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 723 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 724 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`rental_id`", + "value": "rental_id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 725 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 736 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 737 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON DELETE", + "value": "ON DELETE", + "keyword": "ON DELETE", + "type": 1, + "flags": 7, + "position": 738 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 747 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET NULL", + "value": "SET NULL", + "keyword": "SET NULL", + "type": 1, + "flags": 7, + "position": 748 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 756 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON UPDATE", + "value": "ON UPDATE", + "keyword": "ON UPDATE", + "type": 1, + "flags": 7, + "position": 757 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 766 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CASCADE", + "value": "CASCADE", + "keyword": "CASCADE", + "type": 1, + "flags": 3, + "position": 767 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 774 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 775 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CONSTRAINT", + "value": "CONSTRAINT", + "keyword": "CONSTRAINT", + "type": 1, + "flags": 3, + "position": 778 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 788 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`fk_payment_staff`", + "value": "fk_payment_staff", + "keyword": null, + "type": 8, + "flags": 2, + "position": 789 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 807 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FOREIGN KEY", + "value": "FOREIGN KEY", + "keyword": "FOREIGN KEY", + "type": 1, + "flags": 23, + "position": 808 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 819 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 820 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`staff_id`", + "value": "staff_id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 821 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 831 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 832 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "REFERENCES", + "value": "REFERENCES", + "keyword": "REFERENCES", + "type": 1, + "flags": 3, + "position": 833 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 843 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`staff`", + "value": "staff", + "keyword": null, + "type": 8, + "flags": 2, + "position": 844 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 851 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 852 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`staff_id`", + "value": "staff_id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 853 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 863 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 864 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON UPDATE", + "value": "ON UPDATE", + "keyword": "ON UPDATE", + "type": 1, + "flags": 7, + "position": 865 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 874 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CASCADE", + "value": "CASCADE", + "keyword": "CASCADE", + "type": 1, + "flags": 3, + "position": 875 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 882 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 883 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 884 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ENGINE", + "value": "ENGINE", + "keyword": "ENGINE", + "type": 1, + "flags": 1, + "position": 885 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 891 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "InnoDB", + "value": "InnoDB", + "keyword": null, + "type": 0, + "flags": 0, + "position": 892 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 898 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AUTO_INCREMENT", + "value": "AUTO_INCREMENT", + "keyword": "AUTO_INCREMENT", + "type": 1, + "flags": 1, + "position": 899 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 913 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "16050", + "value": 16050, + "keyword": null, + "type": 6, + "flags": 0, + "position": 914 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 919 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT CHARSET", + "value": "DEFAULT CHARSET", + "keyword": "DEFAULT CHARSET", + "type": 1, + "flags": 7, + "position": 920 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 935 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "utf8", + "value": "utf8", + "keyword": null, + "type": 0, + "flags": 0, + "position": 936 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 212, + "idx": 212 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "OPTIONS": { + "TEMPORARY": 1, + "OR REPLACE": 2, + "ALGORITHM": [ + 3, + "var=" + ], + "DEFINER": [ + 4, + "expr=" + ], + "SQL SECURITY": [ + 5, + "var" + ], + "DATABASE": 6, + "EVENT": 6, + "FUNCTION": 6, + "INDEX": 6, + "UNIQUE INDEX": 6, + "FULLTEXT INDEX": 6, + "SPATIAL INDEX": 6, + "PROCEDURE": 6, + "SERVER": 6, + "TABLE": 6, + "TABLESPACE": 6, + "TRIGGER": 6, + "USER": 6, + "VIEW": 6, + "SCHEMA": 6, + "IF NOT EXISTS": 7 + }, + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var=" + ], + "CHARSET": [ + 1, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var=" + ], + "DEFAULT CHARSET": [ + 1, + "var=" + ], + "DEFAULT COLLATE": [ + 2, + "var=" + ], + "COLLATE": [ + 2, + "var=" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 2, + "var=" + ], + "AVG_ROW_LENGTH": [ + 3, + "var" + ], + "CHARACTER SET": [ + 4, + "var=" + ], + "CHARSET": [ + 4, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 4, + "var=" + ], + "DEFAULT CHARSET": [ + 4, + "var=" + ], + "CHECKSUM": [ + 5, + "var" + ], + "DEFAULT COLLATE": [ + 6, + "var=" + ], + "COLLATE": [ + 6, + "var=" + ], + "COMMENT": [ + 7, + "var=" + ], + "CONNECTION": [ + 8, + "var" + ], + "DATA DIRECTORY": [ + 9, + "var" + ], + "DELAY_KEY_WRITE": [ + 10, + "var" + ], + "INDEX DIRECTORY": [ + 11, + "var" + ], + "INSERT_METHOD": [ + 12, + "var" + ], + "KEY_BLOCK_SIZE": [ + 13, + "var" + ], + "MAX_ROWS": [ + 14, + "var" + ], + "MIN_ROWS": [ + 15, + "var" + ], + "PACK_KEYS": [ + 16, + "var" + ], + "PASSWORD": [ + 17, + "var" + ], + "ROW_FORMAT": [ + 18, + "var" + ], + "TABLESPACE": [ + 19, + "var" + ], + "STORAGE": [ + 20, + "var" + ], + "UNION": [ + 21, + "var" + ] + }, + "FUNC_OPTIONS": { + "NOT": [ + 2, + "var" + ], + "FUNCTION": [ + 3, + "var=" + ], + "PROCEDURE": [ + 3, + "var=" + ], + "CONTAINS": [ + 4, + "expr" + ], + "NO": [ + 4, + "var" + ], + "READS": [ + 4, + "var" + ], + "MODIFIES": [ + 4, + "expr" + ], + "SQL SECURITY": [ + 6, + "var" + ], + "LANGUAGE": [ + 7, + "var" + ], + "COMMENT": [ + 8, + "var" + ], + "CREATE": 1, + "DETERMINISTIC": 2, + "DATA": 5 + }, + "TRIGGER_OPTIONS": { + "BEFORE": 1, + "AFTER": 1, + "INSERT": 2, + "UPDATE": 2, + "DELETE": 2 + }, + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "payment", + "column": null, + "expr": "`payment`", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "ENGINE", + "equals": true, + "expr": "InnoDB", + "value": "InnoDB" + }, + "2": { + "name": "AUTO_INCREMENT", + "equals": true, + "expr": "16050", + "value": "16050" + }, + "4": { + "name": "DEFAULT CHARSET", + "equals": true, + "expr": "utf8", + "value": "utf8" + } + } + }, + "fields": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "FIELD_OPTIONS": { + "_UNSORTED": true, + "NOT NULL": 1, + "NULL": 1, + "DEFAULT": [ + 2, + "expr", + { + "breakOnAlias": true + } + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "AUTO_INCREMENT": 3, + "PRIMARY": 4, + "PRIMARY KEY": 4, + "UNIQUE": 4, + "UNIQUE KEY": 4, + "COMMENT": [ + 5, + "var" + ], + "COLUMN_FORMAT": [ + 6, + "var" + ], + "ON UPDATE": [ + 7, + "expr" + ], + "GENERATED ALWAYS": 8, + "AS": [ + 9, + "expr", + { + "parenthesesDelimited": true + } + ], + "VIRTUAL": 10, + "PERSISTENT": 11, + "STORED": 11, + "CHECK": [ + 12, + "expr", + { + "parenthesesDelimited": true + } + ], + "INVISIBLE": 13, + "ENFORCED": 14, + "NOT": 15 + }, + "name": "payment_id", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "DATA_TYPE_OPTIONS": { + "BINARY": 1, + "CHARACTER SET": [ + 2, + "var" + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "UNSIGNED": 4, + "ZEROFILL": 5 + }, + "name": "SMALLINT", + "parameters": [ + "5" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "4": "UNSIGNED" + } + } + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "NOT NULL", + "3": "AUTO_INCREMENT" + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "FIELD_OPTIONS": { + "_UNSORTED": true, + "NOT NULL": 1, + "NULL": 1, + "DEFAULT": [ + 2, + "expr", + { + "breakOnAlias": true + } + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "AUTO_INCREMENT": 3, + "PRIMARY": 4, + "PRIMARY KEY": 4, + "UNIQUE": 4, + "UNIQUE KEY": 4, + "COMMENT": [ + 5, + "var" + ], + "COLUMN_FORMAT": [ + 6, + "var" + ], + "ON UPDATE": [ + 7, + "expr" + ], + "GENERATED ALWAYS": 8, + "AS": [ + 9, + "expr", + { + "parenthesesDelimited": true + } + ], + "VIRTUAL": 10, + "PERSISTENT": 11, + "STORED": 11, + "CHECK": [ + 12, + "expr", + { + "parenthesesDelimited": true + } + ], + "INVISIBLE": 13, + "ENFORCED": 14, + "NOT": 15 + }, + "name": "customer_id", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "DATA_TYPE_OPTIONS": { + "BINARY": 1, + "CHARACTER SET": [ + 2, + "var" + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "UNSIGNED": 4, + "ZEROFILL": 5 + }, + "name": "SMALLINT", + "parameters": [ + "5" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "4": "UNSIGNED" + } + } + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "NOT NULL" + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "FIELD_OPTIONS": { + "_UNSORTED": true, + "NOT NULL": 1, + "NULL": 1, + "DEFAULT": [ + 2, + "expr", + { + "breakOnAlias": true + } + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "AUTO_INCREMENT": 3, + "PRIMARY": 4, + "PRIMARY KEY": 4, + "UNIQUE": 4, + "UNIQUE KEY": 4, + "COMMENT": [ + 5, + "var" + ], + "COLUMN_FORMAT": [ + 6, + "var" + ], + "ON UPDATE": [ + 7, + "expr" + ], + "GENERATED ALWAYS": 8, + "AS": [ + 9, + "expr", + { + "parenthesesDelimited": true + } + ], + "VIRTUAL": 10, + "PERSISTENT": 11, + "STORED": 11, + "CHECK": [ + 12, + "expr", + { + "parenthesesDelimited": true + } + ], + "INVISIBLE": 13, + "ENFORCED": 14, + "NOT": 15 + }, + "name": "staff_id", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "DATA_TYPE_OPTIONS": { + "BINARY": 1, + "CHARACTER SET": [ + 2, + "var" + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "UNSIGNED": 4, + "ZEROFILL": 5 + }, + "name": "TINYINT", + "parameters": [ + "3" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "4": "UNSIGNED" + } + } + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "NOT NULL" + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "FIELD_OPTIONS": { + "_UNSORTED": true, + "NOT NULL": 1, + "NULL": 1, + "DEFAULT": [ + 2, + "expr", + { + "breakOnAlias": true + } + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "AUTO_INCREMENT": 3, + "PRIMARY": 4, + "PRIMARY KEY": 4, + "UNIQUE": 4, + "UNIQUE KEY": 4, + "COMMENT": [ + 5, + "var" + ], + "COLUMN_FORMAT": [ + 6, + "var" + ], + "ON UPDATE": [ + 7, + "expr" + ], + "GENERATED ALWAYS": 8, + "AS": [ + 9, + "expr", + { + "parenthesesDelimited": true + } + ], + "VIRTUAL": 10, + "PERSISTENT": 11, + "STORED": 11, + "CHECK": [ + 12, + "expr", + { + "parenthesesDelimited": true + } + ], + "INVISIBLE": 13, + "ENFORCED": 14, + "NOT": 15 + }, + "name": "rental_id", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "DATA_TYPE_OPTIONS": { + "BINARY": 1, + "CHARACTER SET": [ + 2, + "var" + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "UNSIGNED": 4, + "ZEROFILL": 5 + }, + "name": "INT", + "parameters": [ + "11" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": { + "name": "DEFAULT", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "NULL", + "alias": null, + "function": null, + "subquery": null + }, + "value": "NULL" + } + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "FIELD_OPTIONS": { + "_UNSORTED": true, + "NOT NULL": 1, + "NULL": 1, + "DEFAULT": [ + 2, + "expr", + { + "breakOnAlias": true + } + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "AUTO_INCREMENT": 3, + "PRIMARY": 4, + "PRIMARY KEY": 4, + "UNIQUE": 4, + "UNIQUE KEY": 4, + "COMMENT": [ + 5, + "var" + ], + "COLUMN_FORMAT": [ + 6, + "var" + ], + "ON UPDATE": [ + 7, + "expr" + ], + "GENERATED ALWAYS": 8, + "AS": [ + 9, + "expr", + { + "parenthesesDelimited": true + } + ], + "VIRTUAL": 10, + "PERSISTENT": 11, + "STORED": 11, + "CHECK": [ + 12, + "expr", + { + "parenthesesDelimited": true + } + ], + "INVISIBLE": 13, + "ENFORCED": 14, + "NOT": 15 + }, + "name": "amount", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "DATA_TYPE_OPTIONS": { + "BINARY": 1, + "CHARACTER SET": [ + 2, + "var" + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "UNSIGNED": 4, + "ZEROFILL": 5 + }, + "name": "DECIMAL", + "parameters": [ + "5", + "2" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "NOT NULL" + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "FIELD_OPTIONS": { + "_UNSORTED": true, + "NOT NULL": 1, + "NULL": 1, + "DEFAULT": [ + 2, + "expr", + { + "breakOnAlias": true + } + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "AUTO_INCREMENT": 3, + "PRIMARY": 4, + "PRIMARY KEY": 4, + "UNIQUE": 4, + "UNIQUE KEY": 4, + "COMMENT": [ + 5, + "var" + ], + "COLUMN_FORMAT": [ + 6, + "var" + ], + "ON UPDATE": [ + 7, + "expr" + ], + "GENERATED ALWAYS": 8, + "AS": [ + 9, + "expr", + { + "parenthesesDelimited": true + } + ], + "VIRTUAL": 10, + "PERSISTENT": 11, + "STORED": 11, + "CHECK": [ + 12, + "expr", + { + "parenthesesDelimited": true + } + ], + "INVISIBLE": 13, + "ENFORCED": 14, + "NOT": 15 + }, + "name": "payment_date", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "DATA_TYPE_OPTIONS": { + "BINARY": 1, + "CHARACTER SET": [ + 2, + "var" + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "UNSIGNED": 4, + "ZEROFILL": 5 + }, + "name": "DATETIME", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "NOT NULL" + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "FIELD_OPTIONS": { + "_UNSORTED": true, + "NOT NULL": 1, + "NULL": 1, + "DEFAULT": [ + 2, + "expr", + { + "breakOnAlias": true + } + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "AUTO_INCREMENT": 3, + "PRIMARY": 4, + "PRIMARY KEY": 4, + "UNIQUE": 4, + "UNIQUE KEY": 4, + "COMMENT": [ + 5, + "var" + ], + "COLUMN_FORMAT": [ + 6, + "var" + ], + "ON UPDATE": [ + 7, + "expr" + ], + "GENERATED ALWAYS": 8, + "AS": [ + 9, + "expr", + { + "parenthesesDelimited": true + } + ], + "VIRTUAL": 10, + "PERSISTENT": 11, + "STORED": 11, + "CHECK": [ + 12, + "expr", + { + "parenthesesDelimited": true + } + ], + "INVISIBLE": 13, + "ENFORCED": 14, + "NOT": 15 + }, + "name": "last_update", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "DATA_TYPE_OPTIONS": { + "BINARY": 1, + "CHARACTER SET": [ + 2, + "var" + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "UNSIGNED": 4, + "ZEROFILL": 5 + }, + "name": "TIMESTAMP", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "NOT NULL", + "2": { + "name": "DEFAULT", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "CURRENT_TIMESTAMP", + "alias": null, + "function": null, + "subquery": null + }, + "value": "CURRENT_TIMESTAMP" + }, + "7": { + "name": "ON UPDATE", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "CURRENT_TIMESTAMP", + "alias": null, + "function": null, + "subquery": null + }, + "value": "CURRENT_TIMESTAMP" + } + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "FIELD_OPTIONS": { + "_UNSORTED": true, + "NOT NULL": 1, + "NULL": 1, + "DEFAULT": [ + 2, + "expr", + { + "breakOnAlias": true + } + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "AUTO_INCREMENT": 3, + "PRIMARY": 4, + "PRIMARY KEY": 4, + "UNIQUE": 4, + "UNIQUE KEY": 4, + "COMMENT": [ + 5, + "var" + ], + "COLUMN_FORMAT": [ + 6, + "var" + ], + "ON UPDATE": [ + 7, + "expr" + ], + "GENERATED ALWAYS": 8, + "AS": [ + 9, + "expr", + { + "parenthesesDelimited": true + } + ], + "VIRTUAL": 10, + "PERSISTENT": 11, + "STORED": 11, + "CHECK": [ + 12, + "expr", + { + "parenthesesDelimited": true + } + ], + "INVISIBLE": 13, + "ENFORCED": 14, + "NOT": 15 + }, + "name": null, + "isConstraint": null, + "type": null, + "key": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Key", + "KEY_OPTIONS": { + "KEY_BLOCK_SIZE": [ + 1, + "var=" + ], + "USING": [ + 2, + "var" + ], + "WITH PARSER": [ + 3, + "var" + ], + "COMMENT": [ + 4, + "var" + ], + "CLUSTERING": [ + 4, + "var=" + ], + "ENGINE_ATTRIBUTE": [ + 5, + "var=" + ], + "SECONDARY_ENGINE_ATTRIBUTE": [ + 5, + "var=" + ], + "VISIBLE": 6, + "INVISIBLE": 6, + "IGNORED": 10, + "NOT IGNORED": 10 + }, + "name": null, + "columns": [ + { + "name": "payment_id" + } + ], + "type": "PRIMARY KEY", + "expr": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + "references": null, + "options": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "FIELD_OPTIONS": { + "_UNSORTED": true, + "NOT NULL": 1, + "NULL": 1, + "DEFAULT": [ + 2, + "expr", + { + "breakOnAlias": true + } + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "AUTO_INCREMENT": 3, + "PRIMARY": 4, + "PRIMARY KEY": 4, + "UNIQUE": 4, + "UNIQUE KEY": 4, + "COMMENT": [ + 5, + "var" + ], + "COLUMN_FORMAT": [ + 6, + "var" + ], + "ON UPDATE": [ + 7, + "expr" + ], + "GENERATED ALWAYS": 8, + "AS": [ + 9, + "expr", + { + "parenthesesDelimited": true + } + ], + "VIRTUAL": 10, + "PERSISTENT": 11, + "STORED": 11, + "CHECK": [ + 12, + "expr", + { + "parenthesesDelimited": true + } + ], + "INVISIBLE": 13, + "ENFORCED": 14, + "NOT": 15 + }, + "name": null, + "isConstraint": null, + "type": null, + "key": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Key", + "KEY_OPTIONS": { + "KEY_BLOCK_SIZE": [ + 1, + "var=" + ], + "USING": [ + 2, + "var" + ], + "WITH PARSER": [ + 3, + "var" + ], + "COMMENT": [ + 4, + "var" + ], + "CLUSTERING": [ + 4, + "var=" + ], + "ENGINE_ATTRIBUTE": [ + 5, + "var=" + ], + "SECONDARY_ENGINE_ATTRIBUTE": [ + 5, + "var=" + ], + "VISIBLE": 6, + "INVISIBLE": 6, + "IGNORED": 10, + "NOT IGNORED": 10 + }, + "name": "idx_fk_staff_id", + "columns": [ + { + "name": "staff_id" + } + ], + "type": "KEY", + "expr": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + "references": null, + "options": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "FIELD_OPTIONS": { + "_UNSORTED": true, + "NOT NULL": 1, + "NULL": 1, + "DEFAULT": [ + 2, + "expr", + { + "breakOnAlias": true + } + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "AUTO_INCREMENT": 3, + "PRIMARY": 4, + "PRIMARY KEY": 4, + "UNIQUE": 4, + "UNIQUE KEY": 4, + "COMMENT": [ + 5, + "var" + ], + "COLUMN_FORMAT": [ + 6, + "var" + ], + "ON UPDATE": [ + 7, + "expr" + ], + "GENERATED ALWAYS": 8, + "AS": [ + 9, + "expr", + { + "parenthesesDelimited": true + } + ], + "VIRTUAL": 10, + "PERSISTENT": 11, + "STORED": 11, + "CHECK": [ + 12, + "expr", + { + "parenthesesDelimited": true + } + ], + "INVISIBLE": 13, + "ENFORCED": 14, + "NOT": 15 + }, + "name": null, + "isConstraint": null, + "type": null, + "key": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Key", + "KEY_OPTIONS": { + "KEY_BLOCK_SIZE": [ + 1, + "var=" + ], + "USING": [ + 2, + "var" + ], + "WITH PARSER": [ + 3, + "var" + ], + "COMMENT": [ + 4, + "var" + ], + "CLUSTERING": [ + 4, + "var=" + ], + "ENGINE_ATTRIBUTE": [ + 5, + "var=" + ], + "SECONDARY_ENGINE_ATTRIBUTE": [ + 5, + "var=" + ], + "VISIBLE": 6, + "INVISIBLE": 6, + "IGNORED": 10, + "NOT IGNORED": 10 + }, + "name": "idx_fk_customer_id", + "columns": [ + { + "name": "customer_id" + } + ], + "type": "KEY", + "expr": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + "references": null, + "options": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "FIELD_OPTIONS": { + "_UNSORTED": true, + "NOT NULL": 1, + "NULL": 1, + "DEFAULT": [ + 2, + "expr", + { + "breakOnAlias": true + } + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "AUTO_INCREMENT": 3, + "PRIMARY": 4, + "PRIMARY KEY": 4, + "UNIQUE": 4, + "UNIQUE KEY": 4, + "COMMENT": [ + 5, + "var" + ], + "COLUMN_FORMAT": [ + 6, + "var" + ], + "ON UPDATE": [ + 7, + "expr" + ], + "GENERATED ALWAYS": 8, + "AS": [ + 9, + "expr", + { + "parenthesesDelimited": true + } + ], + "VIRTUAL": 10, + "PERSISTENT": 11, + "STORED": 11, + "CHECK": [ + 12, + "expr", + { + "parenthesesDelimited": true + } + ], + "INVISIBLE": 13, + "ENFORCED": 14, + "NOT": 15 + }, + "name": null, + "isConstraint": null, + "type": null, + "key": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Key", + "KEY_OPTIONS": { + "KEY_BLOCK_SIZE": [ + 1, + "var=" + ], + "USING": [ + 2, + "var" + ], + "WITH PARSER": [ + 3, + "var" + ], + "COMMENT": [ + 4, + "var" + ], + "CLUSTERING": [ + 4, + "var=" + ], + "ENGINE_ATTRIBUTE": [ + 5, + "var=" + ], + "SECONDARY_ENGINE_ATTRIBUTE": [ + 5, + "var=" + ], + "VISIBLE": 6, + "INVISIBLE": 6, + "IGNORED": 10, + "NOT IGNORED": 10 + }, + "name": "fk_payment_rental", + "columns": [ + { + "name": "rental_id" + } + ], + "type": "KEY", + "expr": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + "references": null, + "options": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "FIELD_OPTIONS": { + "_UNSORTED": true, + "NOT NULL": 1, + "NULL": 1, + "DEFAULT": [ + 2, + "expr", + { + "breakOnAlias": true + } + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "AUTO_INCREMENT": 3, + "PRIMARY": 4, + "PRIMARY KEY": 4, + "UNIQUE": 4, + "UNIQUE KEY": 4, + "COMMENT": [ + 5, + "var" + ], + "COLUMN_FORMAT": [ + 6, + "var" + ], + "ON UPDATE": [ + 7, + "expr" + ], + "GENERATED ALWAYS": 8, + "AS": [ + 9, + "expr", + { + "parenthesesDelimited": true + } + ], + "VIRTUAL": 10, + "PERSISTENT": 11, + "STORED": 11, + "CHECK": [ + 12, + "expr", + { + "parenthesesDelimited": true + } + ], + "INVISIBLE": 13, + "ENFORCED": 14, + "NOT": 15 + }, + "name": "fk_payment_customer", + "isConstraint": true, + "type": null, + "key": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Key", + "KEY_OPTIONS": { + "KEY_BLOCK_SIZE": [ + 1, + "var=" + ], + "USING": [ + 2, + "var" + ], + "WITH PARSER": [ + 3, + "var" + ], + "COMMENT": [ + 4, + "var" + ], + "CLUSTERING": [ + 4, + "var=" + ], + "ENGINE_ATTRIBUTE": [ + 5, + "var=" + ], + "SECONDARY_ENGINE_ATTRIBUTE": [ + 5, + "var=" + ], + "VISIBLE": 6, + "INVISIBLE": 6, + "IGNORED": 10, + "NOT IGNORED": 10 + }, + "name": null, + "columns": [ + { + "name": "customer_id" + } + ], + "type": "FOREIGN KEY", + "expr": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + "references": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Reference", + "REFERENCES_OPTIONS": { + "MATCH": [ + 1, + "var" + ], + "ON DELETE": [ + 2, + "var" + ], + "ON UPDATE": [ + 3, + "var" + ] + }, + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "customer", + "column": null, + "expr": "`customer`", + "alias": null, + "function": null, + "subquery": null + }, + "columns": [ + "customer_id" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": { + "name": "ON UPDATE", + "equals": false, + "expr": "CASCADE", + "value": "CASCADE" + } + } + } + }, + "options": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "FIELD_OPTIONS": { + "_UNSORTED": true, + "NOT NULL": 1, + "NULL": 1, + "DEFAULT": [ + 2, + "expr", + { + "breakOnAlias": true + } + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "AUTO_INCREMENT": 3, + "PRIMARY": 4, + "PRIMARY KEY": 4, + "UNIQUE": 4, + "UNIQUE KEY": 4, + "COMMENT": [ + 5, + "var" + ], + "COLUMN_FORMAT": [ + 6, + "var" + ], + "ON UPDATE": [ + 7, + "expr" + ], + "GENERATED ALWAYS": 8, + "AS": [ + 9, + "expr", + { + "parenthesesDelimited": true + } + ], + "VIRTUAL": 10, + "PERSISTENT": 11, + "STORED": 11, + "CHECK": [ + 12, + "expr", + { + "parenthesesDelimited": true + } + ], + "INVISIBLE": 13, + "ENFORCED": 14, + "NOT": 15 + }, + "name": "fk_payment_rental", + "isConstraint": true, + "type": null, + "key": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Key", + "KEY_OPTIONS": { + "KEY_BLOCK_SIZE": [ + 1, + "var=" + ], + "USING": [ + 2, + "var" + ], + "WITH PARSER": [ + 3, + "var" + ], + "COMMENT": [ + 4, + "var" + ], + "CLUSTERING": [ + 4, + "var=" + ], + "ENGINE_ATTRIBUTE": [ + 5, + "var=" + ], + "SECONDARY_ENGINE_ATTRIBUTE": [ + 5, + "var=" + ], + "VISIBLE": 6, + "INVISIBLE": 6, + "IGNORED": 10, + "NOT IGNORED": 10 + }, + "name": null, + "columns": [ + { + "name": "rental_id" + } + ], + "type": "FOREIGN KEY", + "expr": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + "references": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Reference", + "REFERENCES_OPTIONS": { + "MATCH": [ + 1, + "var" + ], + "ON DELETE": [ + 2, + "var" + ], + "ON UPDATE": [ + 3, + "var" + ] + }, + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "rental", + "column": null, + "expr": "`rental`", + "alias": null, + "function": null, + "subquery": null + }, + "columns": [ + "rental_id" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": { + "name": "ON DELETE", + "equals": false, + "expr": "SET NULL", + "value": "SET NULL" + }, + "3": { + "name": "ON UPDATE", + "equals": false, + "expr": "CASCADE", + "value": "CASCADE" + } + } + } + }, + "options": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "FIELD_OPTIONS": { + "_UNSORTED": true, + "NOT NULL": 1, + "NULL": 1, + "DEFAULT": [ + 2, + "expr", + { + "breakOnAlias": true + } + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "AUTO_INCREMENT": 3, + "PRIMARY": 4, + "PRIMARY KEY": 4, + "UNIQUE": 4, + "UNIQUE KEY": 4, + "COMMENT": [ + 5, + "var" + ], + "COLUMN_FORMAT": [ + 6, + "var" + ], + "ON UPDATE": [ + 7, + "expr" + ], + "GENERATED ALWAYS": 8, + "AS": [ + 9, + "expr", + { + "parenthesesDelimited": true + } + ], + "VIRTUAL": 10, + "PERSISTENT": 11, + "STORED": 11, + "CHECK": [ + 12, + "expr", + { + "parenthesesDelimited": true + } + ], + "INVISIBLE": 13, + "ENFORCED": 14, + "NOT": 15 + }, + "name": "fk_payment_staff", + "isConstraint": true, + "type": null, + "key": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Key", + "KEY_OPTIONS": { + "KEY_BLOCK_SIZE": [ + 1, + "var=" + ], + "USING": [ + 2, + "var" + ], + "WITH PARSER": [ + 3, + "var" + ], + "COMMENT": [ + 4, + "var" + ], + "CLUSTERING": [ + 4, + "var=" + ], + "ENGINE_ATTRIBUTE": [ + 5, + "var=" + ], + "SECONDARY_ENGINE_ATTRIBUTE": [ + 5, + "var=" + ], + "VISIBLE": 6, + "INVISIBLE": 6, + "IGNORED": 10, + "NOT IGNORED": 10 + }, + "name": null, + "columns": [ + { + "name": "staff_id" + } + ], + "type": "FOREIGN KEY", + "expr": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + "references": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Reference", + "REFERENCES_OPTIONS": { + "MATCH": [ + 1, + "var" + ], + "ON DELETE": [ + 2, + "var" + ], + "ON UPDATE": [ + 3, + "var" + ] + }, + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "staff", + "column": null, + "expr": "`staff`", + "alias": null, + "function": null, + "subquery": null + }, + "columns": [ + "staff_id" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": { + "name": "ON UPDATE", + "equals": false, + "expr": "CASCADE", + "value": "CASCADE" + } + } + } + }, + "options": null + } + ], + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [], + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "TABLE" + } + }, + "first": 0, + "last": 211 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTable3.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTable3.in new file mode 100644 index 0000000000..05f2bc0d12 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTable3.in @@ -0,0 +1,6 @@ +CREATE TABLE table1 ( + a INT NOT NULL, + b VARCHAR(32), + c INT AS (a mod 10) VIRTUAL, + d VARCHAR(5) AS (left(b,5)) PERSISTENT +); \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTable3.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTable3.out new file mode 100644 index 0000000000..65ee89917d --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTable3.out @@ -0,0 +1,1623 @@ +{ + "query": "CREATE TABLE table1 (\n a INT NOT NULL,\n b VARCHAR(32),\n c INT AS (a mod 10) VIRTUAL,\n d VARCHAR(5) AS (left(b,5)) PERSISTENT\n);", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "CREATE TABLE table1 (\n a INT NOT NULL,\n b VARCHAR(32),\n c INT AS (a mod 10) VIRTUAL,\n d VARCHAR(5) AS (left(b,5)) PERSISTENT\n);", + "len": 139, + "last": 139, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": 1, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": 0, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INT", + "value": "INT", + "keyword": "INT", + "type": 1, + "flags": 11, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": 1, + "flags": 7, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "b", + "value": "b", + "keyword": null, + "type": 0, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VARCHAR", + "value": "VARCHAR", + "keyword": "VARCHAR", + "type": 1, + "flags": 11, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "32", + "value": 32, + "keyword": null, + "type": 6, + "flags": 0, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "c", + "value": "c", + "keyword": null, + "type": 0, + "flags": 0, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INT", + "value": "INT", + "keyword": "INT", + "type": 1, + "flags": 11, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": 0, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "mod", + "value": "MOD", + "keyword": "MOD", + "type": 1, + "flags": 35, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "10", + "value": 10, + "keyword": null, + "type": 6, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 83 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VIRTUAL", + "value": "VIRTUAL", + "keyword": "VIRTUAL", + "type": 1, + "flags": 3, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "d", + "value": "d", + "keyword": null, + "type": 0, + "flags": 0, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VARCHAR", + "value": "VARCHAR", + "keyword": "VARCHAR", + "type": 1, + "flags": 11, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "5", + "value": 5, + "keyword": null, + "type": 6, + "flags": 0, + "position": 108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 109 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 110 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 111 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 114 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "left", + "value": "LEFT", + "keyword": "LEFT", + "type": 1, + "flags": 35, + "position": 115 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 119 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "b", + "value": "b", + "keyword": null, + "type": 0, + "flags": 0, + "position": 120 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "5", + "value": 5, + "keyword": null, + "type": 6, + "flags": 0, + "position": 122 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 123 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 124 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 125 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PERSISTENT", + "value": "PERSISTENT", + "keyword": "PERSISTENT", + "type": 1, + "flags": 1, + "position": 126 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 136 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 137 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 138 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 63, + "idx": 63 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "OPTIONS": { + "TEMPORARY": 1, + "OR REPLACE": 2, + "ALGORITHM": [ + 3, + "var=" + ], + "DEFINER": [ + 4, + "expr=" + ], + "SQL SECURITY": [ + 5, + "var" + ], + "DATABASE": 6, + "EVENT": 6, + "FUNCTION": 6, + "INDEX": 6, + "UNIQUE INDEX": 6, + "FULLTEXT INDEX": 6, + "SPATIAL INDEX": 6, + "PROCEDURE": 6, + "SERVER": 6, + "TABLE": 6, + "TABLESPACE": 6, + "TRIGGER": 6, + "USER": 6, + "VIEW": 6, + "SCHEMA": 6, + "IF NOT EXISTS": 7 + }, + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var=" + ], + "CHARSET": [ + 1, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var=" + ], + "DEFAULT CHARSET": [ + 1, + "var=" + ], + "DEFAULT COLLATE": [ + 2, + "var=" + ], + "COLLATE": [ + 2, + "var=" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 2, + "var=" + ], + "AVG_ROW_LENGTH": [ + 3, + "var" + ], + "CHARACTER SET": [ + 4, + "var=" + ], + "CHARSET": [ + 4, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 4, + "var=" + ], + "DEFAULT CHARSET": [ + 4, + "var=" + ], + "CHECKSUM": [ + 5, + "var" + ], + "DEFAULT COLLATE": [ + 6, + "var=" + ], + "COLLATE": [ + 6, + "var=" + ], + "COMMENT": [ + 7, + "var=" + ], + "CONNECTION": [ + 8, + "var" + ], + "DATA DIRECTORY": [ + 9, + "var" + ], + "DELAY_KEY_WRITE": [ + 10, + "var" + ], + "INDEX DIRECTORY": [ + 11, + "var" + ], + "INSERT_METHOD": [ + 12, + "var" + ], + "KEY_BLOCK_SIZE": [ + 13, + "var" + ], + "MAX_ROWS": [ + 14, + "var" + ], + "MIN_ROWS": [ + 15, + "var" + ], + "PACK_KEYS": [ + 16, + "var" + ], + "PASSWORD": [ + 17, + "var" + ], + "ROW_FORMAT": [ + 18, + "var" + ], + "TABLESPACE": [ + 19, + "var" + ], + "STORAGE": [ + 20, + "var" + ], + "UNION": [ + 21, + "var" + ] + }, + "FUNC_OPTIONS": { + "NOT": [ + 2, + "var" + ], + "FUNCTION": [ + 3, + "var=" + ], + "PROCEDURE": [ + 3, + "var=" + ], + "CONTAINS": [ + 4, + "expr" + ], + "NO": [ + 4, + "var" + ], + "READS": [ + 4, + "var" + ], + "MODIFIES": [ + 4, + "expr" + ], + "SQL SECURITY": [ + 6, + "var" + ], + "LANGUAGE": [ + 7, + "var" + ], + "COMMENT": [ + 8, + "var" + ], + "CREATE": 1, + "DETERMINISTIC": 2, + "DATA": 5 + }, + "TRIGGER_OPTIONS": { + "BEFORE": 1, + "AFTER": 1, + "INSERT": 2, + "UPDATE": 2, + "DELETE": 2 + }, + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "table1", + "column": null, + "expr": "table1", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "fields": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "FIELD_OPTIONS": { + "_UNSORTED": true, + "NOT NULL": 1, + "NULL": 1, + "DEFAULT": [ + 2, + "expr", + { + "breakOnAlias": true + } + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "AUTO_INCREMENT": 3, + "PRIMARY": 4, + "PRIMARY KEY": 4, + "UNIQUE": 4, + "UNIQUE KEY": 4, + "COMMENT": [ + 5, + "var" + ], + "COLUMN_FORMAT": [ + 6, + "var" + ], + "ON UPDATE": [ + 7, + "expr" + ], + "GENERATED ALWAYS": 8, + "AS": [ + 9, + "expr", + { + "parenthesesDelimited": true + } + ], + "VIRTUAL": 10, + "PERSISTENT": 11, + "STORED": 11, + "CHECK": [ + 12, + "expr", + { + "parenthesesDelimited": true + } + ], + "INVISIBLE": 13, + "ENFORCED": 14, + "NOT": 15 + }, + "name": "a", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "DATA_TYPE_OPTIONS": { + "BINARY": 1, + "CHARACTER SET": [ + 2, + "var" + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "UNSIGNED": 4, + "ZEROFILL": 5 + }, + "name": "INT", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "NOT NULL" + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "FIELD_OPTIONS": { + "_UNSORTED": true, + "NOT NULL": 1, + "NULL": 1, + "DEFAULT": [ + 2, + "expr", + { + "breakOnAlias": true + } + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "AUTO_INCREMENT": 3, + "PRIMARY": 4, + "PRIMARY KEY": 4, + "UNIQUE": 4, + "UNIQUE KEY": 4, + "COMMENT": [ + 5, + "var" + ], + "COLUMN_FORMAT": [ + 6, + "var" + ], + "ON UPDATE": [ + 7, + "expr" + ], + "GENERATED ALWAYS": 8, + "AS": [ + 9, + "expr", + { + "parenthesesDelimited": true + } + ], + "VIRTUAL": 10, + "PERSISTENT": 11, + "STORED": 11, + "CHECK": [ + 12, + "expr", + { + "parenthesesDelimited": true + } + ], + "INVISIBLE": 13, + "ENFORCED": 14, + "NOT": 15 + }, + "name": "b", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "DATA_TYPE_OPTIONS": { + "BINARY": 1, + "CHARACTER SET": [ + 2, + "var" + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "UNSIGNED": 4, + "ZEROFILL": 5 + }, + "name": "VARCHAR", + "parameters": [ + "32" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "FIELD_OPTIONS": { + "_UNSORTED": true, + "NOT NULL": 1, + "NULL": 1, + "DEFAULT": [ + 2, + "expr", + { + "breakOnAlias": true + } + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "AUTO_INCREMENT": 3, + "PRIMARY": 4, + "PRIMARY KEY": 4, + "UNIQUE": 4, + "UNIQUE KEY": 4, + "COMMENT": [ + 5, + "var" + ], + "COLUMN_FORMAT": [ + 6, + "var" + ], + "ON UPDATE": [ + 7, + "expr" + ], + "GENERATED ALWAYS": 8, + "AS": [ + 9, + "expr", + { + "parenthesesDelimited": true + } + ], + "VIRTUAL": 10, + "PERSISTENT": 11, + "STORED": 11, + "CHECK": [ + 12, + "expr", + { + "parenthesesDelimited": true + } + ], + "INVISIBLE": 13, + "ENFORCED": 14, + "NOT": 15 + }, + "name": "c", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "DATA_TYPE_OPTIONS": { + "BINARY": 1, + "CHARACTER SET": [ + 2, + "var" + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "UNSIGNED": 4, + "ZEROFILL": 5 + }, + "name": "INT", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "9": { + "name": "AS", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "(a mod 10)", + "alias": null, + "function": null, + "subquery": null + }, + "value": "(a mod 10)" + }, + "10": "VIRTUAL" + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "FIELD_OPTIONS": { + "_UNSORTED": true, + "NOT NULL": 1, + "NULL": 1, + "DEFAULT": [ + 2, + "expr", + { + "breakOnAlias": true + } + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "AUTO_INCREMENT": 3, + "PRIMARY": 4, + "PRIMARY KEY": 4, + "UNIQUE": 4, + "UNIQUE KEY": 4, + "COMMENT": [ + 5, + "var" + ], + "COLUMN_FORMAT": [ + 6, + "var" + ], + "ON UPDATE": [ + 7, + "expr" + ], + "GENERATED ALWAYS": 8, + "AS": [ + 9, + "expr", + { + "parenthesesDelimited": true + } + ], + "VIRTUAL": 10, + "PERSISTENT": 11, + "STORED": 11, + "CHECK": [ + 12, + "expr", + { + "parenthesesDelimited": true + } + ], + "INVISIBLE": 13, + "ENFORCED": 14, + "NOT": 15 + }, + "name": "d", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "DATA_TYPE_OPTIONS": { + "BINARY": 1, + "CHARACTER SET": [ + 2, + "var" + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "UNSIGNED": 4, + "ZEROFILL": 5 + }, + "name": "VARCHAR", + "parameters": [ + "5" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "9": { + "name": "AS", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "(left(b,5))", + "alias": null, + "function": "LEFT", + "subquery": null + }, + "value": "(left(b,5))" + }, + "11": "PERSISTENT" + } + } + } + ], + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [], + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "TABLE" + } + }, + "first": 0, + "last": 61 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTable4.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTable4.in new file mode 100644 index 0000000000..1e8552ce89 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTable4.in @@ -0,0 +1,21 @@ +CREATE TABLE ts(id INT, purchased DATE) +PARTITION BY /* comment */ RANGE(YEAR(purchased)) +PARTITIONS 3 +SUBPARTITION BY HASH(TO_DAYS(purchased)) +SUBPARTITIONS 2( +PARTITION p0 +VALUES LESS THAN(1990)( + SUBPARTITION s0, + SUBPARTITION s1 +), +PARTITION p1 +VALUES LESS THAN(2000)( + SUBPARTITION s2, + SUBPARTITION s3 +), +PARTITION p2 +VALUES LESS THAN MAXVALUE( + SUBPARTITION s4, + SUBPARTITION s5 +) +); \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTable4.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTable4.out new file mode 100644 index 0000000000..9879cc91eb --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTable4.out @@ -0,0 +1,2378 @@ +{ + "query": "CREATE TABLE ts(id INT, purchased DATE)\nPARTITION BY \/* comment *\/ RANGE(YEAR(purchased))\nPARTITIONS 3\nSUBPARTITION BY HASH(TO_DAYS(purchased))\nSUBPARTITIONS 2(\nPARTITION p0\nVALUES LESS THAN(1990)(\n SUBPARTITION s0,\n SUBPARTITION s1\n),\nPARTITION p1\nVALUES LESS THAN(2000)(\n SUBPARTITION s2,\n SUBPARTITION s3\n),\nPARTITION p2\nVALUES LESS THAN MAXVALUE(\n SUBPARTITION s4,\n SUBPARTITION s5\n)\n);", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "CREATE TABLE ts(id INT, purchased DATE)\nPARTITION BY \/* comment *\/ RANGE(YEAR(purchased))\nPARTITIONS 3\nSUBPARTITION BY HASH(TO_DAYS(purchased))\nSUBPARTITIONS 2(\nPARTITION p0\nVALUES LESS THAN(1990)(\n SUBPARTITION s0,\n SUBPARTITION s1\n),\nPARTITION p1\nVALUES LESS THAN(2000)(\n SUBPARTITION s2,\n SUBPARTITION s3\n),\nPARTITION p2\nVALUES LESS THAN MAXVALUE(\n SUBPARTITION s4,\n SUBPARTITION s5\n)\n);", + "len": 408, + "last": 408, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": 1, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ts", + "value": "ts", + "keyword": null, + "type": 0, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INT", + "value": "INT", + "keyword": "INT", + "type": 1, + "flags": 11, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "purchased", + "value": "purchased", + "keyword": null, + "type": 0, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DATE", + "value": "DATE", + "keyword": "DATE", + "type": 1, + "flags": 41, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION BY", + "value": "PARTITION BY", + "keyword": "PARTITION BY", + "type": 1, + "flags": 7, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* comment *\/", + "value": "\/* comment *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "RANGE", + "value": "RANGE", + "keyword": "RANGE", + "type": 1, + "flags": 3, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "YEAR", + "value": "YEAR", + "keyword": "YEAR", + "type": 1, + "flags": 41, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "purchased", + "value": "purchased", + "keyword": null, + "type": 0, + "flags": 0, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITIONS", + "value": "PARTITIONS", + "keyword": "PARTITIONS", + "type": 1, + "flags": 1, + "position": 90 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3", + "value": 3, + "keyword": null, + "type": 6, + "flags": 0, + "position": 101 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 102 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION BY", + "value": "SUBPARTITION BY", + "keyword": "SUBPARTITION BY", + "type": 1, + "flags": 7, + "position": 103 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 118 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "HASH", + "value": "HASH", + "keyword": "HASH", + "type": 1, + "flags": 1, + "position": 119 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 123 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TO_DAYS", + "value": "TO_DAYS", + "keyword": "TO_DAYS", + "type": 1, + "flags": 33, + "position": 124 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 131 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "purchased", + "value": "purchased", + "keyword": null, + "type": 0, + "flags": 0, + "position": 132 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 141 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 142 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 143 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITIONS", + "value": "SUBPARTITIONS", + "keyword": "SUBPARTITIONS", + "type": 1, + "flags": 1, + "position": 144 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 157 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": 6, + "flags": 0, + "position": 158 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 159 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 160 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": 1, + "flags": 3, + "position": 161 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 170 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p0", + "value": "p0", + "keyword": null, + "type": 0, + "flags": 0, + "position": 171 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 173 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": 1, + "flags": 35, + "position": 174 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 180 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LESS THAN", + "value": "LESS THAN", + "keyword": "LESS THAN", + "type": 1, + "flags": 7, + "position": 181 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 190 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1990", + "value": 1990, + "keyword": null, + "type": 6, + "flags": 0, + "position": 191 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 195 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 196 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 197 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": 1, + "flags": 1, + "position": 202 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 214 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "s0", + "value": "s0", + "keyword": null, + "type": 0, + "flags": 0, + "position": 215 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 217 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 218 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": 1, + "flags": 1, + "position": 223 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 235 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "s1", + "value": "s1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 236 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 238 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 239 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 240 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 241 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": 1, + "flags": 3, + "position": 242 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 251 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p1", + "value": "p1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 252 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 254 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": 1, + "flags": 35, + "position": 255 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 261 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LESS THAN", + "value": "LESS THAN", + "keyword": "LESS THAN", + "type": 1, + "flags": 7, + "position": 262 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 271 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2000", + "value": 2000, + "keyword": null, + "type": 6, + "flags": 0, + "position": 272 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 276 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 277 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 278 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": 1, + "flags": 1, + "position": 283 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 295 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "s2", + "value": "s2", + "keyword": null, + "type": 0, + "flags": 0, + "position": 296 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 298 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 299 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": 1, + "flags": 1, + "position": 304 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 316 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "s3", + "value": "s3", + "keyword": null, + "type": 0, + "flags": 0, + "position": 317 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 319 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 320 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 321 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 322 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": 1, + "flags": 3, + "position": 323 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 332 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p2", + "value": "p2", + "keyword": null, + "type": 0, + "flags": 0, + "position": 333 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 335 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": 1, + "flags": 35, + "position": 336 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 342 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LESS THAN", + "value": "LESS THAN", + "keyword": "LESS THAN", + "type": 1, + "flags": 7, + "position": 343 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 352 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "MAXVALUE", + "value": "MAXVALUE", + "keyword": "MAXVALUE", + "type": 1, + "flags": 3, + "position": 353 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 361 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 362 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": 1, + "flags": 1, + "position": 367 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 379 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "s4", + "value": "s4", + "keyword": null, + "type": 0, + "flags": 0, + "position": 380 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 382 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 383 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": 1, + "flags": 1, + "position": 388 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 400 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "s5", + "value": "s5", + "keyword": null, + "type": 0, + "flags": 0, + "position": 401 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 403 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 404 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 405 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 406 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 407 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 120, + "idx": 120 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "OPTIONS": { + "TEMPORARY": 1, + "OR REPLACE": 2, + "ALGORITHM": [ + 3, + "var=" + ], + "DEFINER": [ + 4, + "expr=" + ], + "SQL SECURITY": [ + 5, + "var" + ], + "DATABASE": 6, + "EVENT": 6, + "FUNCTION": 6, + "INDEX": 6, + "UNIQUE INDEX": 6, + "FULLTEXT INDEX": 6, + "SPATIAL INDEX": 6, + "PROCEDURE": 6, + "SERVER": 6, + "TABLE": 6, + "TABLESPACE": 6, + "TRIGGER": 6, + "USER": 6, + "VIEW": 6, + "SCHEMA": 6, + "IF NOT EXISTS": 7 + }, + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var=" + ], + "CHARSET": [ + 1, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var=" + ], + "DEFAULT CHARSET": [ + 1, + "var=" + ], + "DEFAULT COLLATE": [ + 2, + "var=" + ], + "COLLATE": [ + 2, + "var=" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 2, + "var=" + ], + "AVG_ROW_LENGTH": [ + 3, + "var" + ], + "CHARACTER SET": [ + 4, + "var=" + ], + "CHARSET": [ + 4, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 4, + "var=" + ], + "DEFAULT CHARSET": [ + 4, + "var=" + ], + "CHECKSUM": [ + 5, + "var" + ], + "DEFAULT COLLATE": [ + 6, + "var=" + ], + "COLLATE": [ + 6, + "var=" + ], + "COMMENT": [ + 7, + "var=" + ], + "CONNECTION": [ + 8, + "var" + ], + "DATA DIRECTORY": [ + 9, + "var" + ], + "DELAY_KEY_WRITE": [ + 10, + "var" + ], + "INDEX DIRECTORY": [ + 11, + "var" + ], + "INSERT_METHOD": [ + 12, + "var" + ], + "KEY_BLOCK_SIZE": [ + 13, + "var" + ], + "MAX_ROWS": [ + 14, + "var" + ], + "MIN_ROWS": [ + 15, + "var" + ], + "PACK_KEYS": [ + 16, + "var" + ], + "PASSWORD": [ + 17, + "var" + ], + "ROW_FORMAT": [ + 18, + "var" + ], + "TABLESPACE": [ + 19, + "var" + ], + "STORAGE": [ + 20, + "var" + ], + "UNION": [ + 21, + "var" + ] + }, + "FUNC_OPTIONS": { + "NOT": [ + 2, + "var" + ], + "FUNCTION": [ + 3, + "var=" + ], + "PROCEDURE": [ + 3, + "var=" + ], + "CONTAINS": [ + 4, + "expr" + ], + "NO": [ + 4, + "var" + ], + "READS": [ + 4, + "var" + ], + "MODIFIES": [ + 4, + "expr" + ], + "SQL SECURITY": [ + 6, + "var" + ], + "LANGUAGE": [ + 7, + "var" + ], + "COMMENT": [ + 8, + "var" + ], + "CREATE": 1, + "DETERMINISTIC": 2, + "DATA": 5 + }, + "TRIGGER_OPTIONS": { + "BEFORE": 1, + "AFTER": 1, + "INSERT": 2, + "UPDATE": 2, + "DELETE": 2 + }, + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "ts", + "column": null, + "expr": "ts", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "fields": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "FIELD_OPTIONS": { + "_UNSORTED": true, + "NOT NULL": 1, + "NULL": 1, + "DEFAULT": [ + 2, + "expr", + { + "breakOnAlias": true + } + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "AUTO_INCREMENT": 3, + "PRIMARY": 4, + "PRIMARY KEY": 4, + "UNIQUE": 4, + "UNIQUE KEY": 4, + "COMMENT": [ + 5, + "var" + ], + "COLUMN_FORMAT": [ + 6, + "var" + ], + "ON UPDATE": [ + 7, + "expr" + ], + "GENERATED ALWAYS": 8, + "AS": [ + 9, + "expr", + { + "parenthesesDelimited": true + } + ], + "VIRTUAL": 10, + "PERSISTENT": 11, + "STORED": 11, + "CHECK": [ + 12, + "expr", + { + "parenthesesDelimited": true + } + ], + "INVISIBLE": 13, + "ENFORCED": 14, + "NOT": 15 + }, + "name": "id", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "DATA_TYPE_OPTIONS": { + "BINARY": 1, + "CHARACTER SET": [ + 2, + "var" + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "UNSIGNED": 4, + "ZEROFILL": 5 + }, + "name": "INT", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "FIELD_OPTIONS": { + "_UNSORTED": true, + "NOT NULL": 1, + "NULL": 1, + "DEFAULT": [ + 2, + "expr", + { + "breakOnAlias": true + } + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "AUTO_INCREMENT": 3, + "PRIMARY": 4, + "PRIMARY KEY": 4, + "UNIQUE": 4, + "UNIQUE KEY": 4, + "COMMENT": [ + 5, + "var" + ], + "COLUMN_FORMAT": [ + 6, + "var" + ], + "ON UPDATE": [ + 7, + "expr" + ], + "GENERATED ALWAYS": 8, + "AS": [ + 9, + "expr", + { + "parenthesesDelimited": true + } + ], + "VIRTUAL": 10, + "PERSISTENT": 11, + "STORED": 11, + "CHECK": [ + 12, + "expr", + { + "parenthesesDelimited": true + } + ], + "INVISIBLE": 13, + "ENFORCED": 14, + "NOT": 15 + }, + "name": "purchased", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "DATA_TYPE_OPTIONS": { + "BINARY": 1, + "CHARACTER SET": [ + 2, + "var" + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "UNSIGNED": 4, + "ZEROFILL": 5 + }, + "name": "DATE", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + } + ], + "select": null, + "like": null, + "partitionBy": "RANGE(YEAR(purchased))", + "partitionsNum": 3, + "subpartitionBy": "HASH(TO_DAYS(purchased))", + "subpartitionsNum": 2, + "partitions": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "OPTIONS": { + "STORAGE ENGINE": [ + 1, + "var" + ], + "ENGINE": [ + 1, + "var" + ], + "COMMENT": [ + 2, + "var" + ], + "DATA DIRECTORY": [ + 3, + "var" + ], + "INDEX DIRECTORY": [ + 4, + "var" + ], + "MAX_ROWS": [ + 5, + "var" + ], + "MIN_ROWS": [ + 6, + "var" + ], + "TABLESPACE": [ + 7, + "var" + ], + "NODEGROUP": [ + 8, + "var" + ] + }, + "isSubpartition": false, + "name": "p0", + "type": "LESS THAN", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "(1990)", + "alias": null, + "function": null, + "subquery": null + }, + "subpartitions": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "OPTIONS": { + "STORAGE ENGINE": [ + 1, + "var" + ], + "ENGINE": [ + 1, + "var" + ], + "COMMENT": [ + 2, + "var" + ], + "DATA DIRECTORY": [ + 3, + "var" + ], + "INDEX DIRECTORY": [ + 4, + "var" + ], + "MAX_ROWS": [ + 5, + "var" + ], + "MIN_ROWS": [ + 6, + "var" + ], + "TABLESPACE": [ + 7, + "var" + ], + "NODEGROUP": [ + 8, + "var" + ] + }, + "isSubpartition": true, + "name": "s0", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "OPTIONS": { + "STORAGE ENGINE": [ + 1, + "var" + ], + "ENGINE": [ + 1, + "var" + ], + "COMMENT": [ + 2, + "var" + ], + "DATA DIRECTORY": [ + 3, + "var" + ], + "INDEX DIRECTORY": [ + 4, + "var" + ], + "MAX_ROWS": [ + 5, + "var" + ], + "MIN_ROWS": [ + 6, + "var" + ], + "TABLESPACE": [ + 7, + "var" + ], + "NODEGROUP": [ + 8, + "var" + ] + }, + "isSubpartition": true, + "name": "s1", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "OPTIONS": { + "STORAGE ENGINE": [ + 1, + "var" + ], + "ENGINE": [ + 1, + "var" + ], + "COMMENT": [ + 2, + "var" + ], + "DATA DIRECTORY": [ + 3, + "var" + ], + "INDEX DIRECTORY": [ + 4, + "var" + ], + "MAX_ROWS": [ + 5, + "var" + ], + "MIN_ROWS": [ + 6, + "var" + ], + "TABLESPACE": [ + 7, + "var" + ], + "NODEGROUP": [ + 8, + "var" + ] + }, + "isSubpartition": false, + "name": "p1", + "type": "LESS THAN", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "(2000)", + "alias": null, + "function": null, + "subquery": null + }, + "subpartitions": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "OPTIONS": { + "STORAGE ENGINE": [ + 1, + "var" + ], + "ENGINE": [ + 1, + "var" + ], + "COMMENT": [ + 2, + "var" + ], + "DATA DIRECTORY": [ + 3, + "var" + ], + "INDEX DIRECTORY": [ + 4, + "var" + ], + "MAX_ROWS": [ + 5, + "var" + ], + "MIN_ROWS": [ + 6, + "var" + ], + "TABLESPACE": [ + 7, + "var" + ], + "NODEGROUP": [ + 8, + "var" + ] + }, + "isSubpartition": true, + "name": "s2", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "OPTIONS": { + "STORAGE ENGINE": [ + 1, + "var" + ], + "ENGINE": [ + 1, + "var" + ], + "COMMENT": [ + 2, + "var" + ], + "DATA DIRECTORY": [ + 3, + "var" + ], + "INDEX DIRECTORY": [ + 4, + "var" + ], + "MAX_ROWS": [ + 5, + "var" + ], + "MIN_ROWS": [ + 6, + "var" + ], + "TABLESPACE": [ + 7, + "var" + ], + "NODEGROUP": [ + 8, + "var" + ] + }, + "isSubpartition": true, + "name": "s3", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "OPTIONS": { + "STORAGE ENGINE": [ + 1, + "var" + ], + "ENGINE": [ + 1, + "var" + ], + "COMMENT": [ + 2, + "var" + ], + "DATA DIRECTORY": [ + 3, + "var" + ], + "INDEX DIRECTORY": [ + 4, + "var" + ], + "MAX_ROWS": [ + 5, + "var" + ], + "MIN_ROWS": [ + 6, + "var" + ], + "TABLESPACE": [ + 7, + "var" + ], + "NODEGROUP": [ + 8, + "var" + ] + }, + "isSubpartition": false, + "name": "p2", + "type": "LESS THAN", + "expr": "MAXVALUE", + "subpartitions": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "OPTIONS": { + "STORAGE ENGINE": [ + 1, + "var" + ], + "ENGINE": [ + 1, + "var" + ], + "COMMENT": [ + 2, + "var" + ], + "DATA DIRECTORY": [ + 3, + "var" + ], + "INDEX DIRECTORY": [ + 4, + "var" + ], + "MAX_ROWS": [ + 5, + "var" + ], + "MIN_ROWS": [ + 6, + "var" + ], + "TABLESPACE": [ + 7, + "var" + ], + "NODEGROUP": [ + 8, + "var" + ] + }, + "isSubpartition": true, + "name": "s4", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "OPTIONS": { + "STORAGE ENGINE": [ + 1, + "var" + ], + "ENGINE": [ + 1, + "var" + ], + "COMMENT": [ + 2, + "var" + ], + "DATA DIRECTORY": [ + 3, + "var" + ], + "INDEX DIRECTORY": [ + 4, + "var" + ], + "MAX_ROWS": [ + 5, + "var" + ], + "MIN_ROWS": [ + 6, + "var" + ], + "TABLESPACE": [ + 7, + "var" + ], + "NODEGROUP": [ + 8, + "var" + ] + }, + "isSubpartition": true, + "name": "s5", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + } + ], + "table": null, + "return": null, + "parameters": null, + "body": [], + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "TABLE" + } + }, + "first": 0, + "last": 117 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTable5.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTable5.in new file mode 100644 index 0000000000..5dfef1af2e --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTable5.in @@ -0,0 +1 @@ +CREATE TABLE new_table (`INT` VARCHAR(50) DEFAULT NULL); \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTable5.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTable5.out new file mode 100644 index 0000000000..3877f9015a --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTable5.out @@ -0,0 +1,916 @@ +{ + "query": "CREATE TABLE new_table (`INT` VARCHAR(50) DEFAULT NULL);", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "CREATE TABLE new_table (`INT` VARCHAR(50) DEFAULT NULL);", + "len": 56, + "last": 56, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": 1, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "new_table", + "value": "new_table", + "keyword": null, + "type": 0, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`INT`", + "value": "INT", + "keyword": null, + "type": 8, + "flags": 2, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VARCHAR", + "value": "VARCHAR", + "keyword": "VARCHAR", + "type": 1, + "flags": 11, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "50", + "value": 50, + "keyword": null, + "type": 6, + "flags": 0, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT", + "value": "DEFAULT", + "keyword": "DEFAULT", + "type": 1, + "flags": 35, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NULL", + "value": "NULL", + "keyword": "NULL", + "type": 1, + "flags": 3, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 20, + "idx": 20 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "OPTIONS": { + "TEMPORARY": 1, + "OR REPLACE": 2, + "ALGORITHM": [ + 3, + "var=" + ], + "DEFINER": [ + 4, + "expr=" + ], + "SQL SECURITY": [ + 5, + "var" + ], + "DATABASE": 6, + "EVENT": 6, + "FUNCTION": 6, + "INDEX": 6, + "UNIQUE INDEX": 6, + "FULLTEXT INDEX": 6, + "SPATIAL INDEX": 6, + "PROCEDURE": 6, + "SERVER": 6, + "TABLE": 6, + "TABLESPACE": 6, + "TRIGGER": 6, + "USER": 6, + "VIEW": 6, + "SCHEMA": 6, + "IF NOT EXISTS": 7 + }, + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var=" + ], + "CHARSET": [ + 1, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var=" + ], + "DEFAULT CHARSET": [ + 1, + "var=" + ], + "DEFAULT COLLATE": [ + 2, + "var=" + ], + "COLLATE": [ + 2, + "var=" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 2, + "var=" + ], + "AVG_ROW_LENGTH": [ + 3, + "var" + ], + "CHARACTER SET": [ + 4, + "var=" + ], + "CHARSET": [ + 4, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 4, + "var=" + ], + "DEFAULT CHARSET": [ + 4, + "var=" + ], + "CHECKSUM": [ + 5, + "var" + ], + "DEFAULT COLLATE": [ + 6, + "var=" + ], + "COLLATE": [ + 6, + "var=" + ], + "COMMENT": [ + 7, + "var=" + ], + "CONNECTION": [ + 8, + "var" + ], + "DATA DIRECTORY": [ + 9, + "var" + ], + "DELAY_KEY_WRITE": [ + 10, + "var" + ], + "INDEX DIRECTORY": [ + 11, + "var" + ], + "INSERT_METHOD": [ + 12, + "var" + ], + "KEY_BLOCK_SIZE": [ + 13, + "var" + ], + "MAX_ROWS": [ + 14, + "var" + ], + "MIN_ROWS": [ + 15, + "var" + ], + "PACK_KEYS": [ + 16, + "var" + ], + "PASSWORD": [ + 17, + "var" + ], + "ROW_FORMAT": [ + 18, + "var" + ], + "TABLESPACE": [ + 19, + "var" + ], + "STORAGE": [ + 20, + "var" + ], + "UNION": [ + 21, + "var" + ] + }, + "FUNC_OPTIONS": { + "NOT": [ + 2, + "var" + ], + "FUNCTION": [ + 3, + "var=" + ], + "PROCEDURE": [ + 3, + "var=" + ], + "CONTAINS": [ + 4, + "expr" + ], + "NO": [ + 4, + "var" + ], + "READS": [ + 4, + "var" + ], + "MODIFIES": [ + 4, + "expr" + ], + "SQL SECURITY": [ + 6, + "var" + ], + "LANGUAGE": [ + 7, + "var" + ], + "COMMENT": [ + 8, + "var" + ], + "CREATE": 1, + "DETERMINISTIC": 2, + "DATA": 5 + }, + "TRIGGER_OPTIONS": { + "BEFORE": 1, + "AFTER": 1, + "INSERT": 2, + "UPDATE": 2, + "DELETE": 2 + }, + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "new_table", + "column": null, + "expr": "new_table", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "fields": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "FIELD_OPTIONS": { + "_UNSORTED": true, + "NOT NULL": 1, + "NULL": 1, + "DEFAULT": [ + 2, + "expr", + { + "breakOnAlias": true + } + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "AUTO_INCREMENT": 3, + "PRIMARY": 4, + "PRIMARY KEY": 4, + "UNIQUE": 4, + "UNIQUE KEY": 4, + "COMMENT": [ + 5, + "var" + ], + "COLUMN_FORMAT": [ + 6, + "var" + ], + "ON UPDATE": [ + 7, + "expr" + ], + "GENERATED ALWAYS": 8, + "AS": [ + 9, + "expr", + { + "parenthesesDelimited": true + } + ], + "VIRTUAL": 10, + "PERSISTENT": 11, + "STORED": 11, + "CHECK": [ + 12, + "expr", + { + "parenthesesDelimited": true + } + ], + "INVISIBLE": 13, + "ENFORCED": 14, + "NOT": 15 + }, + "name": "INT", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "DATA_TYPE_OPTIONS": { + "BINARY": 1, + "CHARACTER SET": [ + 2, + "var" + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "UNSIGNED": 4, + "ZEROFILL": 5 + }, + "name": "VARCHAR", + "parameters": [ + "50" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": { + "name": "DEFAULT", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "NULL", + "alias": null, + "function": null, + "subquery": null + }, + "value": "NULL" + } + } + } + } + ], + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [], + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "TABLE" + } + }, + "first": 0, + "last": 18 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTable6.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTable6.in new file mode 100644 index 0000000000..d87dec01c2 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTable6.in @@ -0,0 +1 @@ +CREATE TABLE new_table (ACTION VARCHAR(50) DEFAULT NULL); diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTable6.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTable6.out new file mode 100644 index 0000000000..adca5b3462 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTable6.out @@ -0,0 +1,925 @@ +{ + "query": "CREATE TABLE new_table (ACTION VARCHAR(50) DEFAULT NULL);\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "CREATE TABLE new_table (ACTION VARCHAR(50) DEFAULT NULL);\n", + "len": 58, + "last": 58, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": 1, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "new_table", + "value": "new_table", + "keyword": null, + "type": 0, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ACTION", + "value": "ACTION", + "keyword": "ACTION", + "type": 1, + "flags": 1, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VARCHAR", + "value": "VARCHAR", + "keyword": "VARCHAR", + "type": 1, + "flags": 11, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "50", + "value": 50, + "keyword": null, + "type": 6, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT", + "value": "DEFAULT", + "keyword": "DEFAULT", + "type": 1, + "flags": 35, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NULL", + "value": "NULL", + "keyword": "NULL", + "type": 1, + "flags": 3, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 21, + "idx": 21 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "OPTIONS": { + "TEMPORARY": 1, + "OR REPLACE": 2, + "ALGORITHM": [ + 3, + "var=" + ], + "DEFINER": [ + 4, + "expr=" + ], + "SQL SECURITY": [ + 5, + "var" + ], + "DATABASE": 6, + "EVENT": 6, + "FUNCTION": 6, + "INDEX": 6, + "UNIQUE INDEX": 6, + "FULLTEXT INDEX": 6, + "SPATIAL INDEX": 6, + "PROCEDURE": 6, + "SERVER": 6, + "TABLE": 6, + "TABLESPACE": 6, + "TRIGGER": 6, + "USER": 6, + "VIEW": 6, + "SCHEMA": 6, + "IF NOT EXISTS": 7 + }, + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var=" + ], + "CHARSET": [ + 1, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var=" + ], + "DEFAULT CHARSET": [ + 1, + "var=" + ], + "DEFAULT COLLATE": [ + 2, + "var=" + ], + "COLLATE": [ + 2, + "var=" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 2, + "var=" + ], + "AVG_ROW_LENGTH": [ + 3, + "var" + ], + "CHARACTER SET": [ + 4, + "var=" + ], + "CHARSET": [ + 4, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 4, + "var=" + ], + "DEFAULT CHARSET": [ + 4, + "var=" + ], + "CHECKSUM": [ + 5, + "var" + ], + "DEFAULT COLLATE": [ + 6, + "var=" + ], + "COLLATE": [ + 6, + "var=" + ], + "COMMENT": [ + 7, + "var=" + ], + "CONNECTION": [ + 8, + "var" + ], + "DATA DIRECTORY": [ + 9, + "var" + ], + "DELAY_KEY_WRITE": [ + 10, + "var" + ], + "INDEX DIRECTORY": [ + 11, + "var" + ], + "INSERT_METHOD": [ + 12, + "var" + ], + "KEY_BLOCK_SIZE": [ + 13, + "var" + ], + "MAX_ROWS": [ + 14, + "var" + ], + "MIN_ROWS": [ + 15, + "var" + ], + "PACK_KEYS": [ + 16, + "var" + ], + "PASSWORD": [ + 17, + "var" + ], + "ROW_FORMAT": [ + 18, + "var" + ], + "TABLESPACE": [ + 19, + "var" + ], + "STORAGE": [ + 20, + "var" + ], + "UNION": [ + 21, + "var" + ] + }, + "FUNC_OPTIONS": { + "NOT": [ + 2, + "var" + ], + "FUNCTION": [ + 3, + "var=" + ], + "PROCEDURE": [ + 3, + "var=" + ], + "CONTAINS": [ + 4, + "expr" + ], + "NO": [ + 4, + "var" + ], + "READS": [ + 4, + "var" + ], + "MODIFIES": [ + 4, + "expr" + ], + "SQL SECURITY": [ + 6, + "var" + ], + "LANGUAGE": [ + 7, + "var" + ], + "COMMENT": [ + 8, + "var" + ], + "CREATE": 1, + "DETERMINISTIC": 2, + "DATA": 5 + }, + "TRIGGER_OPTIONS": { + "BEFORE": 1, + "AFTER": 1, + "INSERT": 2, + "UPDATE": 2, + "DELETE": 2 + }, + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "new_table", + "column": null, + "expr": "new_table", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "fields": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "FIELD_OPTIONS": { + "_UNSORTED": true, + "NOT NULL": 1, + "NULL": 1, + "DEFAULT": [ + 2, + "expr", + { + "breakOnAlias": true + } + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "AUTO_INCREMENT": 3, + "PRIMARY": 4, + "PRIMARY KEY": 4, + "UNIQUE": 4, + "UNIQUE KEY": 4, + "COMMENT": [ + 5, + "var" + ], + "COLUMN_FORMAT": [ + 6, + "var" + ], + "ON UPDATE": [ + 7, + "expr" + ], + "GENERATED ALWAYS": 8, + "AS": [ + 9, + "expr", + { + "parenthesesDelimited": true + } + ], + "VIRTUAL": 10, + "PERSISTENT": 11, + "STORED": 11, + "CHECK": [ + 12, + "expr", + { + "parenthesesDelimited": true + } + ], + "INVISIBLE": 13, + "ENFORCED": 14, + "NOT": 15 + }, + "name": "ACTION", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "DATA_TYPE_OPTIONS": { + "BINARY": 1, + "CHARACTER SET": [ + 2, + "var" + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "UNSIGNED": 4, + "ZEROFILL": 5 + }, + "name": "VARCHAR", + "parameters": [ + "50" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": { + "name": "DEFAULT", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "NULL", + "alias": null, + "function": null, + "subquery": null + }, + "value": "NULL" + } + } + } + } + ], + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [], + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "TABLE" + } + }, + "first": 0, + "last": 18 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTable7.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTable7.in new file mode 100644 index 0000000000..2f80ff71f7 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTable7.in @@ -0,0 +1,20 @@ +CREATE TABLE `ts` ( + `id` int(11) DEFAULT NULL, + `purchased` date DEFAULT NULL +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 +PARTITION BY RANGE (YEAR(purchased)) +SUBPARTITION BY HASH (TO_DAYS(purchased)) +( +PARTITION p0 VALUES LESS THAN (1990) ( +SUBPARTITION s0 ENGINE=InnoDB, +SUBPARTITION s1 ENGINE=InnoDB +), +PARTITION p1 VALUES LESS THAN (2000) ( +SUBPARTITION s2 ENGINE=InnoDB, +SUBPARTITION s3 ENGINE=InnoDB +), +PARTITION p2 VALUES LESS THAN MAXVALUE ( +SUBPARTITION s4 ENGINE=InnoDB, +SUBPARTITION s5 ENGINE=InnoDB +) +); diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTable7.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTable7.out new file mode 100644 index 0000000000..514643cecc --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTable7.out @@ -0,0 +1,2898 @@ +{ + "query": "CREATE TABLE `ts` (\n `id` int(11) DEFAULT NULL,\n `purchased` date DEFAULT NULL\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4\nPARTITION BY RANGE (YEAR(purchased))\nSUBPARTITION BY HASH (TO_DAYS(purchased))\n(\nPARTITION p0 VALUES LESS THAN (1990) (\nSUBPARTITION s0 ENGINE=InnoDB,\nSUBPARTITION s1 ENGINE=InnoDB\n),\nPARTITION p1 VALUES LESS THAN (2000) (\nSUBPARTITION s2 ENGINE=InnoDB,\nSUBPARTITION s3 ENGINE=InnoDB\n),\nPARTITION p2 VALUES LESS THAN MAXVALUE (\nSUBPARTITION s4 ENGINE=InnoDB,\nSUBPARTITION s5 ENGINE=InnoDB\n)\n);\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "CREATE TABLE `ts` (\n `id` int(11) DEFAULT NULL,\n `purchased` date DEFAULT NULL\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4\nPARTITION BY RANGE (YEAR(purchased))\nSUBPARTITION BY HASH (TO_DAYS(purchased))\n(\nPARTITION p0 VALUES LESS THAN (1990) (\nSUBPARTITION s0 ENGINE=InnoDB,\nSUBPARTITION s1 ENGINE=InnoDB\n),\nPARTITION p1 VALUES LESS THAN (2000) (\nSUBPARTITION s2 ENGINE=InnoDB,\nSUBPARTITION s3 ENGINE=InnoDB\n),\nPARTITION p2 VALUES LESS THAN MAXVALUE (\nSUBPARTITION s4 ENGINE=InnoDB,\nSUBPARTITION s5 ENGINE=InnoDB\n)\n);\n", + "len": 518, + "last": 518, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": 1, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`ts`", + "value": "ts", + "keyword": null, + "type": 8, + "flags": 2, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`id`", + "value": "id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "int", + "value": "INT", + "keyword": "INT", + "type": 1, + "flags": 11, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "11", + "value": 11, + "keyword": null, + "type": 6, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT", + "value": "DEFAULT", + "keyword": "DEFAULT", + "type": 1, + "flags": 35, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NULL", + "value": "NULL", + "keyword": "NULL", + "type": 1, + "flags": 3, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`purchased`", + "value": "purchased", + "keyword": null, + "type": 8, + "flags": 2, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "date", + "value": "date", + "keyword": "DATE", + "type": 1, + "flags": 41, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT", + "value": "DEFAULT", + "keyword": "DEFAULT", + "type": 1, + "flags": 35, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NULL", + "value": "NULL", + "keyword": "NULL", + "type": 1, + "flags": 3, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ENGINE", + "value": "ENGINE", + "keyword": "ENGINE", + "type": 1, + "flags": 1, + "position": 83 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "InnoDB", + "value": "InnoDB", + "keyword": null, + "type": 0, + "flags": 0, + "position": 90 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT CHARSET", + "value": "DEFAULT CHARSET", + "keyword": "DEFAULT CHARSET", + "type": 1, + "flags": 7, + "position": 97 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "utf8mb4", + "value": "utf8mb4", + "keyword": null, + "type": 0, + "flags": 0, + "position": 113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 120 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION BY", + "value": "PARTITION BY", + "keyword": "PARTITION BY", + "type": 1, + "flags": 7, + "position": 121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 133 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "RANGE", + "value": "RANGE", + "keyword": "RANGE", + "type": 1, + "flags": 3, + "position": 134 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 139 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 140 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "YEAR", + "value": "YEAR", + "keyword": "YEAR", + "type": 1, + "flags": 41, + "position": 141 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 145 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "purchased", + "value": "purchased", + "keyword": null, + "type": 0, + "flags": 0, + "position": 146 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 155 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 156 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 157 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION BY", + "value": "SUBPARTITION BY", + "keyword": "SUBPARTITION BY", + "type": 1, + "flags": 7, + "position": 158 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 173 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "HASH", + "value": "HASH", + "keyword": "HASH", + "type": 1, + "flags": 1, + "position": 174 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 178 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 179 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TO_DAYS", + "value": "TO_DAYS", + "keyword": "TO_DAYS", + "type": 1, + "flags": 33, + "position": 180 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 187 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "purchased", + "value": "purchased", + "keyword": null, + "type": 0, + "flags": 0, + "position": 188 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 197 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 198 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 199 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 200 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 201 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": 1, + "flags": 3, + "position": 202 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 211 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p0", + "value": "p0", + "keyword": null, + "type": 0, + "flags": 0, + "position": 212 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 214 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": 1, + "flags": 35, + "position": 215 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 221 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LESS THAN", + "value": "LESS THAN", + "keyword": "LESS THAN", + "type": 1, + "flags": 7, + "position": 222 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 231 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 232 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1990", + "value": 1990, + "keyword": null, + "type": 6, + "flags": 0, + "position": 233 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 237 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 238 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 240 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 241 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": 1, + "flags": 1, + "position": 242 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 254 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "s0", + "value": "s0", + "keyword": null, + "type": 0, + "flags": 0, + "position": 255 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 257 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ENGINE", + "value": "ENGINE", + "keyword": "ENGINE", + "type": 1, + "flags": 1, + "position": 258 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 264 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "InnoDB", + "value": "InnoDB", + "keyword": null, + "type": 0, + "flags": 0, + "position": 265 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 271 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 272 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": 1, + "flags": 1, + "position": 273 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 285 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "s1", + "value": "s1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 286 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 288 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ENGINE", + "value": "ENGINE", + "keyword": "ENGINE", + "type": 1, + "flags": 1, + "position": 289 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 295 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "InnoDB", + "value": "InnoDB", + "keyword": null, + "type": 0, + "flags": 0, + "position": 296 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 302 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 303 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 304 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 305 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": 1, + "flags": 3, + "position": 306 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 315 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p1", + "value": "p1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 316 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 318 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": 1, + "flags": 35, + "position": 319 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 325 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LESS THAN", + "value": "LESS THAN", + "keyword": "LESS THAN", + "type": 1, + "flags": 7, + "position": 326 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 335 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 336 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2000", + "value": 2000, + "keyword": null, + "type": 6, + "flags": 0, + "position": 337 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 341 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 342 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 344 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 345 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": 1, + "flags": 1, + "position": 346 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 358 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "s2", + "value": "s2", + "keyword": null, + "type": 0, + "flags": 0, + "position": 359 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 361 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ENGINE", + "value": "ENGINE", + "keyword": "ENGINE", + "type": 1, + "flags": 1, + "position": 362 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 368 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "InnoDB", + "value": "InnoDB", + "keyword": null, + "type": 0, + "flags": 0, + "position": 369 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 375 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 376 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": 1, + "flags": 1, + "position": 377 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 389 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "s3", + "value": "s3", + "keyword": null, + "type": 0, + "flags": 0, + "position": 390 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 392 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ENGINE", + "value": "ENGINE", + "keyword": "ENGINE", + "type": 1, + "flags": 1, + "position": 393 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 399 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "InnoDB", + "value": "InnoDB", + "keyword": null, + "type": 0, + "flags": 0, + "position": 400 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 406 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 407 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 408 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 409 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": 1, + "flags": 3, + "position": 410 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 419 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p2", + "value": "p2", + "keyword": null, + "type": 0, + "flags": 0, + "position": 420 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 422 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": 1, + "flags": 35, + "position": 423 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 429 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LESS THAN", + "value": "LESS THAN", + "keyword": "LESS THAN", + "type": 1, + "flags": 7, + "position": 430 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 439 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "MAXVALUE", + "value": "MAXVALUE", + "keyword": "MAXVALUE", + "type": 1, + "flags": 3, + "position": 440 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 448 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 450 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 451 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": 1, + "flags": 1, + "position": 452 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 464 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "s4", + "value": "s4", + "keyword": null, + "type": 0, + "flags": 0, + "position": 465 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 467 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ENGINE", + "value": "ENGINE", + "keyword": "ENGINE", + "type": 1, + "flags": 1, + "position": 468 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 474 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "InnoDB", + "value": "InnoDB", + "keyword": null, + "type": 0, + "flags": 0, + "position": 475 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 481 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 482 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUBPARTITION", + "value": "SUBPARTITION", + "keyword": "SUBPARTITION", + "type": 1, + "flags": 1, + "position": 483 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 495 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "s5", + "value": "s5", + "keyword": null, + "type": 0, + "flags": 0, + "position": 496 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 498 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ENGINE", + "value": "ENGINE", + "keyword": "ENGINE", + "type": 1, + "flags": 1, + "position": 499 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 505 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "InnoDB", + "value": "InnoDB", + "keyword": null, + "type": 0, + "flags": 0, + "position": 506 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 512 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 513 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 514 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 515 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 516 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 517 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 165, + "idx": 165 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "OPTIONS": { + "TEMPORARY": 1, + "OR REPLACE": 2, + "ALGORITHM": [ + 3, + "var=" + ], + "DEFINER": [ + 4, + "expr=" + ], + "SQL SECURITY": [ + 5, + "var" + ], + "DATABASE": 6, + "EVENT": 6, + "FUNCTION": 6, + "INDEX": 6, + "UNIQUE INDEX": 6, + "FULLTEXT INDEX": 6, + "SPATIAL INDEX": 6, + "PROCEDURE": 6, + "SERVER": 6, + "TABLE": 6, + "TABLESPACE": 6, + "TRIGGER": 6, + "USER": 6, + "VIEW": 6, + "SCHEMA": 6, + "IF NOT EXISTS": 7 + }, + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var=" + ], + "CHARSET": [ + 1, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var=" + ], + "DEFAULT CHARSET": [ + 1, + "var=" + ], + "DEFAULT COLLATE": [ + 2, + "var=" + ], + "COLLATE": [ + 2, + "var=" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 2, + "var=" + ], + "AVG_ROW_LENGTH": [ + 3, + "var" + ], + "CHARACTER SET": [ + 4, + "var=" + ], + "CHARSET": [ + 4, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 4, + "var=" + ], + "DEFAULT CHARSET": [ + 4, + "var=" + ], + "CHECKSUM": [ + 5, + "var" + ], + "DEFAULT COLLATE": [ + 6, + "var=" + ], + "COLLATE": [ + 6, + "var=" + ], + "COMMENT": [ + 7, + "var=" + ], + "CONNECTION": [ + 8, + "var" + ], + "DATA DIRECTORY": [ + 9, + "var" + ], + "DELAY_KEY_WRITE": [ + 10, + "var" + ], + "INDEX DIRECTORY": [ + 11, + "var" + ], + "INSERT_METHOD": [ + 12, + "var" + ], + "KEY_BLOCK_SIZE": [ + 13, + "var" + ], + "MAX_ROWS": [ + 14, + "var" + ], + "MIN_ROWS": [ + 15, + "var" + ], + "PACK_KEYS": [ + 16, + "var" + ], + "PASSWORD": [ + 17, + "var" + ], + "ROW_FORMAT": [ + 18, + "var" + ], + "TABLESPACE": [ + 19, + "var" + ], + "STORAGE": [ + 20, + "var" + ], + "UNION": [ + 21, + "var" + ] + }, + "FUNC_OPTIONS": { + "NOT": [ + 2, + "var" + ], + "FUNCTION": [ + 3, + "var=" + ], + "PROCEDURE": [ + 3, + "var=" + ], + "CONTAINS": [ + 4, + "expr" + ], + "NO": [ + 4, + "var" + ], + "READS": [ + 4, + "var" + ], + "MODIFIES": [ + 4, + "expr" + ], + "SQL SECURITY": [ + 6, + "var" + ], + "LANGUAGE": [ + 7, + "var" + ], + "COMMENT": [ + 8, + "var" + ], + "CREATE": 1, + "DETERMINISTIC": 2, + "DATA": 5 + }, + "TRIGGER_OPTIONS": { + "BEFORE": 1, + "AFTER": 1, + "INSERT": 2, + "UPDATE": 2, + "DELETE": 2 + }, + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "ts", + "column": null, + "expr": "`ts`", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "ENGINE", + "equals": true, + "expr": "InnoDB", + "value": "InnoDB" + }, + "4": { + "name": "DEFAULT CHARSET", + "equals": true, + "expr": "utf8mb4", + "value": "utf8mb4" + } + } + }, + "fields": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "FIELD_OPTIONS": { + "_UNSORTED": true, + "NOT NULL": 1, + "NULL": 1, + "DEFAULT": [ + 2, + "expr", + { + "breakOnAlias": true + } + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "AUTO_INCREMENT": 3, + "PRIMARY": 4, + "PRIMARY KEY": 4, + "UNIQUE": 4, + "UNIQUE KEY": 4, + "COMMENT": [ + 5, + "var" + ], + "COLUMN_FORMAT": [ + 6, + "var" + ], + "ON UPDATE": [ + 7, + "expr" + ], + "GENERATED ALWAYS": 8, + "AS": [ + 9, + "expr", + { + "parenthesesDelimited": true + } + ], + "VIRTUAL": 10, + "PERSISTENT": 11, + "STORED": 11, + "CHECK": [ + 12, + "expr", + { + "parenthesesDelimited": true + } + ], + "INVISIBLE": 13, + "ENFORCED": 14, + "NOT": 15 + }, + "name": "id", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "DATA_TYPE_OPTIONS": { + "BINARY": 1, + "CHARACTER SET": [ + 2, + "var" + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "UNSIGNED": 4, + "ZEROFILL": 5 + }, + "name": "INT", + "parameters": [ + "11" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": { + "name": "DEFAULT", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "NULL", + "alias": null, + "function": null, + "subquery": null + }, + "value": "NULL" + } + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "FIELD_OPTIONS": { + "_UNSORTED": true, + "NOT NULL": 1, + "NULL": 1, + "DEFAULT": [ + 2, + "expr", + { + "breakOnAlias": true + } + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "AUTO_INCREMENT": 3, + "PRIMARY": 4, + "PRIMARY KEY": 4, + "UNIQUE": 4, + "UNIQUE KEY": 4, + "COMMENT": [ + 5, + "var" + ], + "COLUMN_FORMAT": [ + 6, + "var" + ], + "ON UPDATE": [ + 7, + "expr" + ], + "GENERATED ALWAYS": 8, + "AS": [ + 9, + "expr", + { + "parenthesesDelimited": true + } + ], + "VIRTUAL": 10, + "PERSISTENT": 11, + "STORED": 11, + "CHECK": [ + 12, + "expr", + { + "parenthesesDelimited": true + } + ], + "INVISIBLE": 13, + "ENFORCED": 14, + "NOT": 15 + }, + "name": "purchased", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "DATA_TYPE_OPTIONS": { + "BINARY": 1, + "CHARACTER SET": [ + 2, + "var" + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "UNSIGNED": 4, + "ZEROFILL": 5 + }, + "name": "DATE", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": { + "name": "DEFAULT", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "NULL", + "alias": null, + "function": null, + "subquery": null + }, + "value": "NULL" + } + } + } + } + ], + "select": null, + "like": null, + "partitionBy": "RANGE (YEAR(purchased))", + "partitionsNum": null, + "subpartitionBy": "HASH (TO_DAYS(purchased))", + "subpartitionsNum": null, + "partitions": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "OPTIONS": { + "STORAGE ENGINE": [ + 1, + "var" + ], + "ENGINE": [ + 1, + "var" + ], + "COMMENT": [ + 2, + "var" + ], + "DATA DIRECTORY": [ + 3, + "var" + ], + "INDEX DIRECTORY": [ + 4, + "var" + ], + "MAX_ROWS": [ + 5, + "var" + ], + "MIN_ROWS": [ + 6, + "var" + ], + "TABLESPACE": [ + 7, + "var" + ], + "NODEGROUP": [ + 8, + "var" + ] + }, + "isSubpartition": false, + "name": "p0", + "type": "LESS THAN", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "(1990)", + "alias": null, + "function": null, + "subquery": null + }, + "subpartitions": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "OPTIONS": { + "STORAGE ENGINE": [ + 1, + "var" + ], + "ENGINE": [ + 1, + "var" + ], + "COMMENT": [ + 2, + "var" + ], + "DATA DIRECTORY": [ + 3, + "var" + ], + "INDEX DIRECTORY": [ + 4, + "var" + ], + "MAX_ROWS": [ + 5, + "var" + ], + "MIN_ROWS": [ + 6, + "var" + ], + "TABLESPACE": [ + 7, + "var" + ], + "NODEGROUP": [ + 8, + "var" + ] + }, + "isSubpartition": true, + "name": "s0", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "ENGINE", + "equals": true, + "expr": "InnoDB", + "value": "InnoDB" + } + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "OPTIONS": { + "STORAGE ENGINE": [ + 1, + "var" + ], + "ENGINE": [ + 1, + "var" + ], + "COMMENT": [ + 2, + "var" + ], + "DATA DIRECTORY": [ + 3, + "var" + ], + "INDEX DIRECTORY": [ + 4, + "var" + ], + "MAX_ROWS": [ + 5, + "var" + ], + "MIN_ROWS": [ + 6, + "var" + ], + "TABLESPACE": [ + 7, + "var" + ], + "NODEGROUP": [ + 8, + "var" + ] + }, + "isSubpartition": true, + "name": "s1", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "ENGINE", + "equals": true, + "expr": "InnoDB", + "value": "InnoDB" + } + } + } + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "OPTIONS": { + "STORAGE ENGINE": [ + 1, + "var" + ], + "ENGINE": [ + 1, + "var" + ], + "COMMENT": [ + 2, + "var" + ], + "DATA DIRECTORY": [ + 3, + "var" + ], + "INDEX DIRECTORY": [ + 4, + "var" + ], + "MAX_ROWS": [ + 5, + "var" + ], + "MIN_ROWS": [ + 6, + "var" + ], + "TABLESPACE": [ + 7, + "var" + ], + "NODEGROUP": [ + 8, + "var" + ] + }, + "isSubpartition": false, + "name": "p1", + "type": "LESS THAN", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "(2000)", + "alias": null, + "function": null, + "subquery": null + }, + "subpartitions": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "OPTIONS": { + "STORAGE ENGINE": [ + 1, + "var" + ], + "ENGINE": [ + 1, + "var" + ], + "COMMENT": [ + 2, + "var" + ], + "DATA DIRECTORY": [ + 3, + "var" + ], + "INDEX DIRECTORY": [ + 4, + "var" + ], + "MAX_ROWS": [ + 5, + "var" + ], + "MIN_ROWS": [ + 6, + "var" + ], + "TABLESPACE": [ + 7, + "var" + ], + "NODEGROUP": [ + 8, + "var" + ] + }, + "isSubpartition": true, + "name": "s2", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "ENGINE", + "equals": true, + "expr": "InnoDB", + "value": "InnoDB" + } + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "OPTIONS": { + "STORAGE ENGINE": [ + 1, + "var" + ], + "ENGINE": [ + 1, + "var" + ], + "COMMENT": [ + 2, + "var" + ], + "DATA DIRECTORY": [ + 3, + "var" + ], + "INDEX DIRECTORY": [ + 4, + "var" + ], + "MAX_ROWS": [ + 5, + "var" + ], + "MIN_ROWS": [ + 6, + "var" + ], + "TABLESPACE": [ + 7, + "var" + ], + "NODEGROUP": [ + 8, + "var" + ] + }, + "isSubpartition": true, + "name": "s3", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "ENGINE", + "equals": true, + "expr": "InnoDB", + "value": "InnoDB" + } + } + } + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "OPTIONS": { + "STORAGE ENGINE": [ + 1, + "var" + ], + "ENGINE": [ + 1, + "var" + ], + "COMMENT": [ + 2, + "var" + ], + "DATA DIRECTORY": [ + 3, + "var" + ], + "INDEX DIRECTORY": [ + 4, + "var" + ], + "MAX_ROWS": [ + 5, + "var" + ], + "MIN_ROWS": [ + 6, + "var" + ], + "TABLESPACE": [ + 7, + "var" + ], + "NODEGROUP": [ + 8, + "var" + ] + }, + "isSubpartition": false, + "name": "p2", + "type": "LESS THAN", + "expr": "MAXVALUE", + "subpartitions": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "OPTIONS": { + "STORAGE ENGINE": [ + 1, + "var" + ], + "ENGINE": [ + 1, + "var" + ], + "COMMENT": [ + 2, + "var" + ], + "DATA DIRECTORY": [ + 3, + "var" + ], + "INDEX DIRECTORY": [ + 4, + "var" + ], + "MAX_ROWS": [ + 5, + "var" + ], + "MIN_ROWS": [ + 6, + "var" + ], + "TABLESPACE": [ + 7, + "var" + ], + "NODEGROUP": [ + 8, + "var" + ] + }, + "isSubpartition": true, + "name": "s4", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "ENGINE", + "equals": true, + "expr": "InnoDB", + "value": "InnoDB" + } + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\PartitionDefinition", + "OPTIONS": { + "STORAGE ENGINE": [ + 1, + "var" + ], + "ENGINE": [ + 1, + "var" + ], + "COMMENT": [ + 2, + "var" + ], + "DATA DIRECTORY": [ + 3, + "var" + ], + "INDEX DIRECTORY": [ + 4, + "var" + ], + "MAX_ROWS": [ + 5, + "var" + ], + "MIN_ROWS": [ + 6, + "var" + ], + "TABLESPACE": [ + 7, + "var" + ], + "NODEGROUP": [ + 8, + "var" + ] + }, + "isSubpartition": true, + "name": "s5", + "type": null, + "expr": null, + "subpartitions": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "ENGINE", + "equals": true, + "expr": "InnoDB", + "value": "InnoDB" + } + } + } + } + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + } + ], + "table": null, + "return": null, + "parameters": null, + "body": [], + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "TABLE" + } + }, + "first": 0, + "last": 161 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableAsSelect.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableAsSelect.in new file mode 100644 index 0000000000..405a586832 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableAsSelect.in @@ -0,0 +1 @@ +CREATE TABLE new_tbl AS SELECT * FROM orig_tbl diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableAsSelect.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableAsSelect.out new file mode 100644 index 0000000000..1ed1701480 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableAsSelect.out @@ -0,0 +1,976 @@ +{ + "query": "CREATE TABLE new_tbl AS SELECT * FROM orig_tbl\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "CREATE TABLE new_tbl AS SELECT * FROM orig_tbl\n", + "len": 47, + "last": 47, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": 1, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "new_tbl", + "value": "new_tbl", + "keyword": null, + "type": 0, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "orig_tbl", + "value": "orig_tbl", + "keyword": null, + "type": 0, + "flags": 0, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 17, + "idx": 17 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "OPTIONS": { + "TEMPORARY": 1, + "OR REPLACE": 2, + "ALGORITHM": [ + 3, + "var=" + ], + "DEFINER": [ + 4, + "expr=" + ], + "SQL SECURITY": [ + 5, + "var" + ], + "DATABASE": 6, + "EVENT": 6, + "FUNCTION": 6, + "INDEX": 6, + "UNIQUE INDEX": 6, + "FULLTEXT INDEX": 6, + "SPATIAL INDEX": 6, + "PROCEDURE": 6, + "SERVER": 6, + "TABLE": 6, + "TABLESPACE": 6, + "TRIGGER": 6, + "USER": 6, + "VIEW": 6, + "SCHEMA": 6, + "IF NOT EXISTS": 7 + }, + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var=" + ], + "CHARSET": [ + 1, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var=" + ], + "DEFAULT CHARSET": [ + 1, + "var=" + ], + "DEFAULT COLLATE": [ + 2, + "var=" + ], + "COLLATE": [ + 2, + "var=" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 2, + "var=" + ], + "AVG_ROW_LENGTH": [ + 3, + "var" + ], + "CHARACTER SET": [ + 4, + "var=" + ], + "CHARSET": [ + 4, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 4, + "var=" + ], + "DEFAULT CHARSET": [ + 4, + "var=" + ], + "CHECKSUM": [ + 5, + "var" + ], + "DEFAULT COLLATE": [ + 6, + "var=" + ], + "COLLATE": [ + 6, + "var=" + ], + "COMMENT": [ + 7, + "var=" + ], + "CONNECTION": [ + 8, + "var" + ], + "DATA DIRECTORY": [ + 9, + "var" + ], + "DELAY_KEY_WRITE": [ + 10, + "var" + ], + "INDEX DIRECTORY": [ + 11, + "var" + ], + "INSERT_METHOD": [ + 12, + "var" + ], + "KEY_BLOCK_SIZE": [ + 13, + "var" + ], + "MAX_ROWS": [ + 14, + "var" + ], + "MIN_ROWS": [ + 15, + "var" + ], + "PACK_KEYS": [ + 16, + "var" + ], + "PASSWORD": [ + 17, + "var" + ], + "ROW_FORMAT": [ + 18, + "var" + ], + "TABLESPACE": [ + 19, + "var" + ], + "STORAGE": [ + 20, + "var" + ], + "UNION": [ + 21, + "var" + ] + }, + "FUNC_OPTIONS": { + "NOT": [ + 2, + "var" + ], + "FUNCTION": [ + 3, + "var=" + ], + "PROCEDURE": [ + 3, + "var=" + ], + "CONTAINS": [ + 4, + "expr" + ], + "NO": [ + 4, + "var" + ], + "READS": [ + 4, + "var" + ], + "MODIFIES": [ + 4, + "expr" + ], + "SQL SECURITY": [ + 6, + "var" + ], + "LANGUAGE": [ + 7, + "var" + ], + "COMMENT": [ + 8, + "var" + ], + "CREATE": 1, + "DETERMINISTIC": 2, + "DATA": 5 + }, + "TRIGGER_OPTIONS": { + "BEFORE": 1, + "AFTER": 1, + "INSERT": 2, + "UPDATE": 2, + "DELETE": 2 + }, + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "new_tbl", + "column": null, + "expr": "new_tbl", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": null, + "fields": null, + "select": { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "orig_tbl", + "column": null, + "expr": "orig_tbl", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": null, + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 8, + "last": 15 + }, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [], + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "TABLE" + } + }, + "first": 0, + "last": 15 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableEnforcedCheck.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableEnforcedCheck.in new file mode 100644 index 0000000000..de990757a6 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableEnforcedCheck.in @@ -0,0 +1 @@ +CREATE TABLE IF NOT EXISTS employees_check (FirstName varchar(30) CHECK (FirstName REGEXP '^T' AND FirstName REGEXP 'r$') ENFORCED); \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableEnforcedCheck.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableEnforcedCheck.out new file mode 100644 index 0000000000..9800dff95e --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableEnforcedCheck.out @@ -0,0 +1,1080 @@ +{ + "query": "CREATE TABLE IF NOT EXISTS employees_check (FirstName varchar(30) CHECK (FirstName REGEXP '^T' AND FirstName REGEXP 'r$') ENFORCED);", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "CREATE TABLE IF NOT EXISTS employees_check (FirstName varchar(30) CHECK (FirstName REGEXP '^T' AND FirstName REGEXP 'r$') ENFORCED);", + "len": 132, + "last": 132, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": 1, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IF NOT EXISTS", + "value": "IF NOT EXISTS", + "keyword": "IF NOT EXISTS", + "type": 1, + "flags": 7, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "employees_check", + "value": "employees_check", + "keyword": null, + "type": 0, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FirstName", + "value": "FirstName", + "keyword": null, + "type": 0, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "varchar", + "value": "VARCHAR", + "keyword": "VARCHAR", + "type": 1, + "flags": 11, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "30", + "value": 30, + "keyword": null, + "type": 6, + "flags": 0, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CHECK", + "value": "CHECK", + "keyword": "CHECK", + "type": 1, + "flags": 3, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FirstName", + "value": "FirstName", + "keyword": null, + "type": 0, + "flags": 0, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "REGEXP", + "value": "REGEXP", + "keyword": "REGEXP", + "type": 1, + "flags": 3, + "position": 83 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'^T'", + "value": "^T", + "keyword": null, + "type": 7, + "flags": 1, + "position": 90 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AND", + "value": "AND", + "keyword": "AND", + "type": 1, + "flags": 3, + "position": 95 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FirstName", + "value": "FirstName", + "keyword": null, + "type": 0, + "flags": 0, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "REGEXP", + "value": "REGEXP", + "keyword": "REGEXP", + "type": 1, + "flags": 3, + "position": 109 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 115 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'r$'", + "value": "r$", + "keyword": null, + "type": 7, + "flags": 1, + "position": 116 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 120 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ENFORCED", + "value": "ENFORCED", + "keyword": null, + "type": 0, + "flags": 0, + "position": 122 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 130 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 131 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 38, + "idx": 38 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "OPTIONS": { + "TEMPORARY": 1, + "OR REPLACE": 2, + "ALGORITHM": [ + 3, + "var=" + ], + "DEFINER": [ + 4, + "expr=" + ], + "SQL SECURITY": [ + 5, + "var" + ], + "DATABASE": 6, + "EVENT": 6, + "FUNCTION": 6, + "INDEX": 6, + "UNIQUE INDEX": 6, + "FULLTEXT INDEX": 6, + "SPATIAL INDEX": 6, + "PROCEDURE": 6, + "SERVER": 6, + "TABLE": 6, + "TABLESPACE": 6, + "TRIGGER": 6, + "USER": 6, + "VIEW": 6, + "SCHEMA": 6, + "IF NOT EXISTS": 7 + }, + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var=" + ], + "CHARSET": [ + 1, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var=" + ], + "DEFAULT CHARSET": [ + 1, + "var=" + ], + "DEFAULT COLLATE": [ + 2, + "var=" + ], + "COLLATE": [ + 2, + "var=" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 2, + "var=" + ], + "AVG_ROW_LENGTH": [ + 3, + "var" + ], + "CHARACTER SET": [ + 4, + "var=" + ], + "CHARSET": [ + 4, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 4, + "var=" + ], + "DEFAULT CHARSET": [ + 4, + "var=" + ], + "CHECKSUM": [ + 5, + "var" + ], + "DEFAULT COLLATE": [ + 6, + "var=" + ], + "COLLATE": [ + 6, + "var=" + ], + "COMMENT": [ + 7, + "var=" + ], + "CONNECTION": [ + 8, + "var" + ], + "DATA DIRECTORY": [ + 9, + "var" + ], + "DELAY_KEY_WRITE": [ + 10, + "var" + ], + "INDEX DIRECTORY": [ + 11, + "var" + ], + "INSERT_METHOD": [ + 12, + "var" + ], + "KEY_BLOCK_SIZE": [ + 13, + "var" + ], + "MAX_ROWS": [ + 14, + "var" + ], + "MIN_ROWS": [ + 15, + "var" + ], + "PACK_KEYS": [ + 16, + "var" + ], + "PASSWORD": [ + 17, + "var" + ], + "ROW_FORMAT": [ + 18, + "var" + ], + "TABLESPACE": [ + 19, + "var" + ], + "STORAGE": [ + 20, + "var" + ], + "UNION": [ + 21, + "var" + ] + }, + "FUNC_OPTIONS": { + "NOT": [ + 2, + "var" + ], + "FUNCTION": [ + 3, + "var=" + ], + "PROCEDURE": [ + 3, + "var=" + ], + "CONTAINS": [ + 4, + "expr" + ], + "NO": [ + 4, + "var" + ], + "READS": [ + 4, + "var" + ], + "MODIFIES": [ + 4, + "expr" + ], + "SQL SECURITY": [ + 6, + "var" + ], + "LANGUAGE": [ + 7, + "var" + ], + "COMMENT": [ + 8, + "var" + ], + "CREATE": 1, + "DETERMINISTIC": 2, + "DATA": 5 + }, + "TRIGGER_OPTIONS": { + "BEFORE": 1, + "AFTER": 1, + "INSERT": 2, + "UPDATE": 2, + "DELETE": 2 + }, + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "employees_check", + "column": null, + "expr": "employees_check", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "fields": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "FIELD_OPTIONS": { + "_UNSORTED": true, + "NOT NULL": 1, + "NULL": 1, + "DEFAULT": [ + 2, + "expr", + { + "breakOnAlias": true + } + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "AUTO_INCREMENT": 3, + "PRIMARY": 4, + "PRIMARY KEY": 4, + "UNIQUE": 4, + "UNIQUE KEY": 4, + "COMMENT": [ + 5, + "var" + ], + "COLUMN_FORMAT": [ + 6, + "var" + ], + "ON UPDATE": [ + 7, + "expr" + ], + "GENERATED ALWAYS": 8, + "AS": [ + 9, + "expr", + { + "parenthesesDelimited": true + } + ], + "VIRTUAL": 10, + "PERSISTENT": 11, + "STORED": 11, + "CHECK": [ + 12, + "expr", + { + "parenthesesDelimited": true + } + ], + "INVISIBLE": 13, + "ENFORCED": 14, + "NOT": 15 + }, + "name": "FirstName", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "DATA_TYPE_OPTIONS": { + "BINARY": 1, + "CHARACTER SET": [ + 2, + "var" + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "UNSIGNED": 4, + "ZEROFILL": 5 + }, + "name": "VARCHAR", + "parameters": [ + "30" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "12": { + "name": "CHECK", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "(FirstName REGEXP '^T' AND FirstName REGEXP 'r$')", + "alias": null, + "function": null, + "subquery": null + }, + "value": "(FirstName REGEXP '^T' AND FirstName REGEXP 'r$')" + }, + "14": "ENFORCED" + } + } + } + ], + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [], + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "TABLE", + "7": "IF NOT EXISTS" + } + }, + "first": 0, + "last": 36 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableErr1.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableErr1.in new file mode 100644 index 0000000000..454b602218 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableErr1.in @@ -0,0 +1,3 @@ +CREATE TABLE IF NOT EXISTS users ( + `id` UNKNOWN +) ENGINE=InnoDB; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableErr1.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableErr1.out new file mode 100644 index 0000000000..93895bbdce --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableErr1.out @@ -0,0 +1,910 @@ +{ + "query": "CREATE TABLE IF NOT EXISTS users (\n `id` UNKNOWN\n) ENGINE=InnoDB;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "CREATE TABLE IF NOT EXISTS users (\n `id` UNKNOWN\n) ENGINE=InnoDB;", + "len": 68, + "last": 68, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": 1, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IF NOT EXISTS", + "value": "IF NOT EXISTS", + "keyword": "IF NOT EXISTS", + "type": 1, + "flags": 7, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "users", + "value": "users", + "keyword": null, + "type": 0, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`id`", + "value": "id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNKNOWN", + "value": "UNKNOWN", + "keyword": "UNKNOWN", + "type": 1, + "flags": 1, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ENGINE", + "value": "ENGINE", + "keyword": "ENGINE", + "type": 1, + "flags": 1, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "InnoDB", + "value": "InnoDB", + "keyword": null, + "type": 0, + "flags": 0, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 21, + "idx": 21 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "OPTIONS": { + "TEMPORARY": 1, + "OR REPLACE": 2, + "ALGORITHM": [ + 3, + "var=" + ], + "DEFINER": [ + 4, + "expr=" + ], + "SQL SECURITY": [ + 5, + "var" + ], + "DATABASE": 6, + "EVENT": 6, + "FUNCTION": 6, + "INDEX": 6, + "UNIQUE INDEX": 6, + "FULLTEXT INDEX": 6, + "SPATIAL INDEX": 6, + "PROCEDURE": 6, + "SERVER": 6, + "TABLE": 6, + "TABLESPACE": 6, + "TRIGGER": 6, + "USER": 6, + "VIEW": 6, + "SCHEMA": 6, + "IF NOT EXISTS": 7 + }, + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var=" + ], + "CHARSET": [ + 1, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var=" + ], + "DEFAULT CHARSET": [ + 1, + "var=" + ], + "DEFAULT COLLATE": [ + 2, + "var=" + ], + "COLLATE": [ + 2, + "var=" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 2, + "var=" + ], + "AVG_ROW_LENGTH": [ + 3, + "var" + ], + "CHARACTER SET": [ + 4, + "var=" + ], + "CHARSET": [ + 4, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 4, + "var=" + ], + "DEFAULT CHARSET": [ + 4, + "var=" + ], + "CHECKSUM": [ + 5, + "var" + ], + "DEFAULT COLLATE": [ + 6, + "var=" + ], + "COLLATE": [ + 6, + "var=" + ], + "COMMENT": [ + 7, + "var=" + ], + "CONNECTION": [ + 8, + "var" + ], + "DATA DIRECTORY": [ + 9, + "var" + ], + "DELAY_KEY_WRITE": [ + 10, + "var" + ], + "INDEX DIRECTORY": [ + 11, + "var" + ], + "INSERT_METHOD": [ + 12, + "var" + ], + "KEY_BLOCK_SIZE": [ + 13, + "var" + ], + "MAX_ROWS": [ + 14, + "var" + ], + "MIN_ROWS": [ + 15, + "var" + ], + "PACK_KEYS": [ + 16, + "var" + ], + "PASSWORD": [ + 17, + "var" + ], + "ROW_FORMAT": [ + 18, + "var" + ], + "TABLESPACE": [ + 19, + "var" + ], + "STORAGE": [ + 20, + "var" + ], + "UNION": [ + 21, + "var" + ] + }, + "FUNC_OPTIONS": { + "NOT": [ + 2, + "var" + ], + "FUNCTION": [ + 3, + "var=" + ], + "PROCEDURE": [ + 3, + "var=" + ], + "CONTAINS": [ + 4, + "expr" + ], + "NO": [ + 4, + "var" + ], + "READS": [ + 4, + "var" + ], + "MODIFIES": [ + 4, + "expr" + ], + "SQL SECURITY": [ + 6, + "var" + ], + "LANGUAGE": [ + 7, + "var" + ], + "COMMENT": [ + 8, + "var" + ], + "CREATE": 1, + "DETERMINISTIC": 2, + "DATA": 5 + }, + "TRIGGER_OPTIONS": { + "BEFORE": 1, + "AFTER": 1, + "INSERT": 2, + "UPDATE": 2, + "DELETE": 2 + }, + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "users", + "column": null, + "expr": "users", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "ENGINE", + "equals": true, + "expr": "InnoDB", + "value": "InnoDB" + } + } + }, + "fields": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "FIELD_OPTIONS": { + "_UNSORTED": true, + "NOT NULL": 1, + "NULL": 1, + "DEFAULT": [ + 2, + "expr", + { + "breakOnAlias": true + } + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "AUTO_INCREMENT": 3, + "PRIMARY": 4, + "PRIMARY KEY": 4, + "UNIQUE": 4, + "UNIQUE KEY": 4, + "COMMENT": [ + 5, + "var" + ], + "COLUMN_FORMAT": [ + 6, + "var" + ], + "ON UPDATE": [ + 7, + "expr" + ], + "GENERATED ALWAYS": 8, + "AS": [ + 9, + "expr", + { + "parenthesesDelimited": true + } + ], + "VIRTUAL": 10, + "PERSISTENT": 11, + "STORED": 11, + "CHECK": [ + 12, + "expr", + { + "parenthesesDelimited": true + } + ], + "INVISIBLE": 13, + "ENFORCED": 14, + "NOT": 15 + }, + "name": "id", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "DATA_TYPE_OPTIONS": { + "BINARY": 1, + "CHARACTER SET": [ + 2, + "var" + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "UNSIGNED": 4, + "ZEROFILL": 5 + }, + "name": "UNKNOWN", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + } + ], + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [], + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "TABLE", + "7": "IF NOT EXISTS" + } + }, + "first": 0, + "last": 19 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unrecognized data type.", + { + "@type": "@14" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableErr2.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableErr2.in new file mode 100644 index 0000000000..b88b73ed95 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableErr2.in @@ -0,0 +1 @@ +CREATE TABLE \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableErr2.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableErr2.out new file mode 100644 index 0000000000..e9a41d101e --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableErr2.out @@ -0,0 +1,638 @@ +{ + "query": "CREATE TABLE", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "CREATE TABLE", + "len": 12, + "last": 12, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": 1, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 4, + "idx": 4 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "OPTIONS": { + "TEMPORARY": 1, + "OR REPLACE": 2, + "ALGORITHM": [ + 3, + "var=" + ], + "DEFINER": [ + 4, + "expr=" + ], + "SQL SECURITY": [ + 5, + "var" + ], + "DATABASE": 6, + "EVENT": 6, + "FUNCTION": 6, + "INDEX": 6, + "UNIQUE INDEX": 6, + "FULLTEXT INDEX": 6, + "SPATIAL INDEX": 6, + "PROCEDURE": 6, + "SERVER": 6, + "TABLE": 6, + "TABLESPACE": 6, + "TRIGGER": 6, + "USER": 6, + "VIEW": 6, + "SCHEMA": 6, + "IF NOT EXISTS": 7 + }, + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var=" + ], + "CHARSET": [ + 1, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var=" + ], + "DEFAULT CHARSET": [ + 1, + "var=" + ], + "DEFAULT COLLATE": [ + 2, + "var=" + ], + "COLLATE": [ + 2, + "var=" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 2, + "var=" + ], + "AVG_ROW_LENGTH": [ + 3, + "var" + ], + "CHARACTER SET": [ + 4, + "var=" + ], + "CHARSET": [ + 4, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 4, + "var=" + ], + "DEFAULT CHARSET": [ + 4, + "var=" + ], + "CHECKSUM": [ + 5, + "var" + ], + "DEFAULT COLLATE": [ + 6, + "var=" + ], + "COLLATE": [ + 6, + "var=" + ], + "COMMENT": [ + 7, + "var=" + ], + "CONNECTION": [ + 8, + "var" + ], + "DATA DIRECTORY": [ + 9, + "var" + ], + "DELAY_KEY_WRITE": [ + 10, + "var" + ], + "INDEX DIRECTORY": [ + 11, + "var" + ], + "INSERT_METHOD": [ + 12, + "var" + ], + "KEY_BLOCK_SIZE": [ + 13, + "var" + ], + "MAX_ROWS": [ + 14, + "var" + ], + "MIN_ROWS": [ + 15, + "var" + ], + "PACK_KEYS": [ + 16, + "var" + ], + "PASSWORD": [ + 17, + "var" + ], + "ROW_FORMAT": [ + 18, + "var" + ], + "TABLESPACE": [ + 19, + "var" + ], + "STORAGE": [ + 20, + "var" + ], + "UNION": [ + 21, + "var" + ] + }, + "FUNC_OPTIONS": { + "NOT": [ + 2, + "var" + ], + "FUNCTION": [ + 3, + "var=" + ], + "PROCEDURE": [ + 3, + "var=" + ], + "CONTAINS": [ + 4, + "expr" + ], + "NO": [ + 4, + "var" + ], + "READS": [ + 4, + "var" + ], + "MODIFIES": [ + 4, + "expr" + ], + "SQL SECURITY": [ + 6, + "var" + ], + "LANGUAGE": [ + 7, + "var" + ], + "COMMENT": [ + 8, + "var" + ], + "CREATE": 1, + "DETERMINISTIC": 2, + "DATA": 5 + }, + "TRIGGER_OPTIONS": { + "BEFORE": 1, + "AFTER": 1, + "INSERT": 2, + "UPDATE": 2, + "DELETE": 2 + }, + "name": null, + "entityOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "fields": [], + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [], + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "TABLE" + } + }, + "first": 0, + "last": 3 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "The name of the entity was expected.", + { + "@type": "@5" + }, + 0 + ], + [ + "At least one column definition was expected.", + { + "@type": "@4" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableErr3.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableErr3.in new file mode 100644 index 0000000000..2596969d49 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableErr3.in @@ -0,0 +1 @@ +CREATE TABLE `table_copy` LIKE ; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableErr3.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableErr3.out new file mode 100644 index 0000000000..e0cc470b27 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableErr3.out @@ -0,0 +1,704 @@ +{ + "query": "CREATE TABLE `table_copy` LIKE ;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "CREATE TABLE `table_copy` LIKE ;", + "len": 32, + "last": 32, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": 1, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`table_copy`", + "value": "table_copy", + "keyword": null, + "type": 8, + "flags": 2, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LIKE", + "value": "LIKE", + "keyword": "LIKE", + "type": 1, + "flags": 3, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 10, + "idx": 10 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "OPTIONS": { + "TEMPORARY": 1, + "OR REPLACE": 2, + "ALGORITHM": [ + 3, + "var=" + ], + "DEFINER": [ + 4, + "expr=" + ], + "SQL SECURITY": [ + 5, + "var" + ], + "DATABASE": 6, + "EVENT": 6, + "FUNCTION": 6, + "INDEX": 6, + "UNIQUE INDEX": 6, + "FULLTEXT INDEX": 6, + "SPATIAL INDEX": 6, + "PROCEDURE": 6, + "SERVER": 6, + "TABLE": 6, + "TABLESPACE": 6, + "TRIGGER": 6, + "USER": 6, + "VIEW": 6, + "SCHEMA": 6, + "IF NOT EXISTS": 7 + }, + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var=" + ], + "CHARSET": [ + 1, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var=" + ], + "DEFAULT CHARSET": [ + 1, + "var=" + ], + "DEFAULT COLLATE": [ + 2, + "var=" + ], + "COLLATE": [ + 2, + "var=" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 2, + "var=" + ], + "AVG_ROW_LENGTH": [ + 3, + "var" + ], + "CHARACTER SET": [ + 4, + "var=" + ], + "CHARSET": [ + 4, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 4, + "var=" + ], + "DEFAULT CHARSET": [ + 4, + "var=" + ], + "CHECKSUM": [ + 5, + "var" + ], + "DEFAULT COLLATE": [ + 6, + "var=" + ], + "COLLATE": [ + 6, + "var=" + ], + "COMMENT": [ + 7, + "var=" + ], + "CONNECTION": [ + 8, + "var" + ], + "DATA DIRECTORY": [ + 9, + "var" + ], + "DELAY_KEY_WRITE": [ + 10, + "var" + ], + "INDEX DIRECTORY": [ + 11, + "var" + ], + "INSERT_METHOD": [ + 12, + "var" + ], + "KEY_BLOCK_SIZE": [ + 13, + "var" + ], + "MAX_ROWS": [ + 14, + "var" + ], + "MIN_ROWS": [ + 15, + "var" + ], + "PACK_KEYS": [ + 16, + "var" + ], + "PASSWORD": [ + 17, + "var" + ], + "ROW_FORMAT": [ + 18, + "var" + ], + "TABLESPACE": [ + 19, + "var" + ], + "STORAGE": [ + 20, + "var" + ], + "UNION": [ + 21, + "var" + ] + }, + "FUNC_OPTIONS": { + "NOT": [ + 2, + "var" + ], + "FUNCTION": [ + 3, + "var=" + ], + "PROCEDURE": [ + 3, + "var=" + ], + "CONTAINS": [ + 4, + "expr" + ], + "NO": [ + 4, + "var" + ], + "READS": [ + 4, + "var" + ], + "MODIFIES": [ + 4, + "expr" + ], + "SQL SECURITY": [ + 6, + "var" + ], + "LANGUAGE": [ + 7, + "var" + ], + "COMMENT": [ + 8, + "var" + ], + "CREATE": 1, + "DETERMINISTIC": 2, + "DATA": 5 + }, + "TRIGGER_OPTIONS": { + "BEFORE": 1, + "AFTER": 1, + "INSERT": 2, + "UPDATE": 2, + "DELETE": 2 + }, + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "table_copy", + "column": null, + "expr": "`table_copy`", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": null, + "fields": null, + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [], + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "TABLE" + } + }, + "first": 0, + "last": 8 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "A table name was expected.", + { + "@type": "@10" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableErr4.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableErr4.in new file mode 100644 index 0000000000..19bb01328e --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableErr4.in @@ -0,0 +1 @@ +CREATE TABLE new_table (INT VARCHAR(50) DEFAULT NULL); \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableErr4.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableErr4.out new file mode 100644 index 0000000000..2b71c8a002 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableErr4.out @@ -0,0 +1,818 @@ +{ + "query": "CREATE TABLE new_table (INT VARCHAR(50) DEFAULT NULL);", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "CREATE TABLE new_table (INT VARCHAR(50) DEFAULT NULL);", + "len": 54, + "last": 54, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": 1, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "new_table", + "value": "new_table", + "keyword": null, + "type": 0, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INT", + "value": "INT", + "keyword": "INT", + "type": 1, + "flags": 11, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VARCHAR", + "value": "VARCHAR", + "keyword": "VARCHAR", + "type": 1, + "flags": 11, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "50", + "value": 50, + "keyword": null, + "type": 6, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT", + "value": "DEFAULT", + "keyword": "DEFAULT", + "type": 1, + "flags": 35, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NULL", + "value": "NULL", + "keyword": "NULL", + "type": 1, + "flags": 3, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 20, + "idx": 20 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "OPTIONS": { + "TEMPORARY": 1, + "OR REPLACE": 2, + "ALGORITHM": [ + 3, + "var=" + ], + "DEFINER": [ + 4, + "expr=" + ], + "SQL SECURITY": [ + 5, + "var" + ], + "DATABASE": 6, + "EVENT": 6, + "FUNCTION": 6, + "INDEX": 6, + "UNIQUE INDEX": 6, + "FULLTEXT INDEX": 6, + "SPATIAL INDEX": 6, + "PROCEDURE": 6, + "SERVER": 6, + "TABLE": 6, + "TABLESPACE": 6, + "TRIGGER": 6, + "USER": 6, + "VIEW": 6, + "SCHEMA": 6, + "IF NOT EXISTS": 7 + }, + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var=" + ], + "CHARSET": [ + 1, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var=" + ], + "DEFAULT CHARSET": [ + 1, + "var=" + ], + "DEFAULT COLLATE": [ + 2, + "var=" + ], + "COLLATE": [ + 2, + "var=" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 2, + "var=" + ], + "AVG_ROW_LENGTH": [ + 3, + "var" + ], + "CHARACTER SET": [ + 4, + "var=" + ], + "CHARSET": [ + 4, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 4, + "var=" + ], + "DEFAULT CHARSET": [ + 4, + "var=" + ], + "CHECKSUM": [ + 5, + "var" + ], + "DEFAULT COLLATE": [ + 6, + "var=" + ], + "COLLATE": [ + 6, + "var=" + ], + "COMMENT": [ + 7, + "var=" + ], + "CONNECTION": [ + 8, + "var" + ], + "DATA DIRECTORY": [ + 9, + "var" + ], + "DELAY_KEY_WRITE": [ + 10, + "var" + ], + "INDEX DIRECTORY": [ + 11, + "var" + ], + "INSERT_METHOD": [ + 12, + "var" + ], + "KEY_BLOCK_SIZE": [ + 13, + "var" + ], + "MAX_ROWS": [ + 14, + "var" + ], + "MIN_ROWS": [ + 15, + "var" + ], + "PACK_KEYS": [ + 16, + "var" + ], + "PASSWORD": [ + 17, + "var" + ], + "ROW_FORMAT": [ + 18, + "var" + ], + "TABLESPACE": [ + 19, + "var" + ], + "STORAGE": [ + 20, + "var" + ], + "UNION": [ + 21, + "var" + ] + }, + "FUNC_OPTIONS": { + "NOT": [ + 2, + "var" + ], + "FUNCTION": [ + 3, + "var=" + ], + "PROCEDURE": [ + 3, + "var=" + ], + "CONTAINS": [ + 4, + "expr" + ], + "NO": [ + 4, + "var" + ], + "READS": [ + 4, + "var" + ], + "MODIFIES": [ + 4, + "expr" + ], + "SQL SECURITY": [ + 6, + "var" + ], + "LANGUAGE": [ + 7, + "var" + ], + "COMMENT": [ + 8, + "var" + ], + "CREATE": 1, + "DETERMINISTIC": 2, + "DATA": 5 + }, + "TRIGGER_OPTIONS": { + "BEFORE": 1, + "AFTER": 1, + "INSERT": 2, + "UPDATE": 2, + "DELETE": 2 + }, + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "new_table", + "column": null, + "expr": "new_table", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "fields": [], + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [], + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "TABLE" + } + }, + "first": 0, + "last": 10 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "A symbol name was expected! A reserved keyword can not be used as a column name without backquotes.", + { + "@type": "@9" + }, + 0 + ], + [ + "At least one column definition was expected.", + { + "@type": "@9" + }, + 0 + ], + [ + "Unexpected beginning of statement.", + { + "@type": "@13" + }, + 0 + ], + [ + "Unrecognized statement type.", + { + "@type": "@16" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableErr5.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableErr5.in new file mode 100644 index 0000000000..c6f2214f66 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableErr5.in @@ -0,0 +1 @@ +CREATE TABLE new_table (666 VARCHAR(50) DEFAULT NULL); diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableErr5.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableErr5.out new file mode 100644 index 0000000000..a9baeecf31 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableErr5.out @@ -0,0 +1,827 @@ +{ + "query": "CREATE TABLE new_table (666 VARCHAR(50) DEFAULT NULL);\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "CREATE TABLE new_table (666 VARCHAR(50) DEFAULT NULL);\n", + "len": 55, + "last": 55, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": 1, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "new_table", + "value": "new_table", + "keyword": null, + "type": 0, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "666", + "value": 666, + "keyword": null, + "type": 6, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VARCHAR", + "value": "VARCHAR", + "keyword": "VARCHAR", + "type": 1, + "flags": 11, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "50", + "value": 50, + "keyword": null, + "type": 6, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT", + "value": "DEFAULT", + "keyword": "DEFAULT", + "type": 1, + "flags": 35, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NULL", + "value": "NULL", + "keyword": "NULL", + "type": 1, + "flags": 3, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 21, + "idx": 21 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "OPTIONS": { + "TEMPORARY": 1, + "OR REPLACE": 2, + "ALGORITHM": [ + 3, + "var=" + ], + "DEFINER": [ + 4, + "expr=" + ], + "SQL SECURITY": [ + 5, + "var" + ], + "DATABASE": 6, + "EVENT": 6, + "FUNCTION": 6, + "INDEX": 6, + "UNIQUE INDEX": 6, + "FULLTEXT INDEX": 6, + "SPATIAL INDEX": 6, + "PROCEDURE": 6, + "SERVER": 6, + "TABLE": 6, + "TABLESPACE": 6, + "TRIGGER": 6, + "USER": 6, + "VIEW": 6, + "SCHEMA": 6, + "IF NOT EXISTS": 7 + }, + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var=" + ], + "CHARSET": [ + 1, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var=" + ], + "DEFAULT CHARSET": [ + 1, + "var=" + ], + "DEFAULT COLLATE": [ + 2, + "var=" + ], + "COLLATE": [ + 2, + "var=" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 2, + "var=" + ], + "AVG_ROW_LENGTH": [ + 3, + "var" + ], + "CHARACTER SET": [ + 4, + "var=" + ], + "CHARSET": [ + 4, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 4, + "var=" + ], + "DEFAULT CHARSET": [ + 4, + "var=" + ], + "CHECKSUM": [ + 5, + "var" + ], + "DEFAULT COLLATE": [ + 6, + "var=" + ], + "COLLATE": [ + 6, + "var=" + ], + "COMMENT": [ + 7, + "var=" + ], + "CONNECTION": [ + 8, + "var" + ], + "DATA DIRECTORY": [ + 9, + "var" + ], + "DELAY_KEY_WRITE": [ + 10, + "var" + ], + "INDEX DIRECTORY": [ + 11, + "var" + ], + "INSERT_METHOD": [ + 12, + "var" + ], + "KEY_BLOCK_SIZE": [ + 13, + "var" + ], + "MAX_ROWS": [ + 14, + "var" + ], + "MIN_ROWS": [ + 15, + "var" + ], + "PACK_KEYS": [ + 16, + "var" + ], + "PASSWORD": [ + 17, + "var" + ], + "ROW_FORMAT": [ + 18, + "var" + ], + "TABLESPACE": [ + 19, + "var" + ], + "STORAGE": [ + 20, + "var" + ], + "UNION": [ + 21, + "var" + ] + }, + "FUNC_OPTIONS": { + "NOT": [ + 2, + "var" + ], + "FUNCTION": [ + 3, + "var=" + ], + "PROCEDURE": [ + 3, + "var=" + ], + "CONTAINS": [ + 4, + "expr" + ], + "NO": [ + 4, + "var" + ], + "READS": [ + 4, + "var" + ], + "MODIFIES": [ + 4, + "expr" + ], + "SQL SECURITY": [ + 6, + "var" + ], + "LANGUAGE": [ + 7, + "var" + ], + "COMMENT": [ + 8, + "var" + ], + "CREATE": 1, + "DETERMINISTIC": 2, + "DATA": 5 + }, + "TRIGGER_OPTIONS": { + "BEFORE": 1, + "AFTER": 1, + "INSERT": 2, + "UPDATE": 2, + "DELETE": 2 + }, + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "new_table", + "column": null, + "expr": "new_table", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "fields": [], + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [], + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "TABLE" + } + }, + "first": 0, + "last": 10 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "A symbol name was expected!", + { + "@type": "@9" + }, + 0 + ], + [ + "At least one column definition was expected.", + { + "@type": "@9" + }, + 0 + ], + [ + "Unexpected beginning of statement.", + { + "@type": "@13" + }, + 0 + ], + [ + "Unrecognized statement type.", + { + "@type": "@16" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableLike.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableLike.in new file mode 100644 index 0000000000..07528edf31 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableLike.in @@ -0,0 +1 @@ +CREATE TABLE `table_copy` LIKE `old_table`; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableLike.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableLike.out new file mode 100644 index 0000000000..2c7061784b --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableLike.out @@ -0,0 +1,727 @@ +{ + "query": "CREATE TABLE `table_copy` LIKE `old_table`;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "CREATE TABLE `table_copy` LIKE `old_table`;", + "len": 43, + "last": 43, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": 1, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`table_copy`", + "value": "table_copy", + "keyword": null, + "type": 8, + "flags": 2, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LIKE", + "value": "LIKE", + "keyword": "LIKE", + "type": 1, + "flags": 3, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`old_table`", + "value": "old_table", + "keyword": null, + "type": 8, + "flags": 2, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 11, + "idx": 11 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "OPTIONS": { + "TEMPORARY": 1, + "OR REPLACE": 2, + "ALGORITHM": [ + 3, + "var=" + ], + "DEFINER": [ + 4, + "expr=" + ], + "SQL SECURITY": [ + 5, + "var" + ], + "DATABASE": 6, + "EVENT": 6, + "FUNCTION": 6, + "INDEX": 6, + "UNIQUE INDEX": 6, + "FULLTEXT INDEX": 6, + "SPATIAL INDEX": 6, + "PROCEDURE": 6, + "SERVER": 6, + "TABLE": 6, + "TABLESPACE": 6, + "TRIGGER": 6, + "USER": 6, + "VIEW": 6, + "SCHEMA": 6, + "IF NOT EXISTS": 7 + }, + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var=" + ], + "CHARSET": [ + 1, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var=" + ], + "DEFAULT CHARSET": [ + 1, + "var=" + ], + "DEFAULT COLLATE": [ + 2, + "var=" + ], + "COLLATE": [ + 2, + "var=" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 2, + "var=" + ], + "AVG_ROW_LENGTH": [ + 3, + "var" + ], + "CHARACTER SET": [ + 4, + "var=" + ], + "CHARSET": [ + 4, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 4, + "var=" + ], + "DEFAULT CHARSET": [ + 4, + "var=" + ], + "CHECKSUM": [ + 5, + "var" + ], + "DEFAULT COLLATE": [ + 6, + "var=" + ], + "COLLATE": [ + 6, + "var=" + ], + "COMMENT": [ + 7, + "var=" + ], + "CONNECTION": [ + 8, + "var" + ], + "DATA DIRECTORY": [ + 9, + "var" + ], + "DELAY_KEY_WRITE": [ + 10, + "var" + ], + "INDEX DIRECTORY": [ + 11, + "var" + ], + "INSERT_METHOD": [ + 12, + "var" + ], + "KEY_BLOCK_SIZE": [ + 13, + "var" + ], + "MAX_ROWS": [ + 14, + "var" + ], + "MIN_ROWS": [ + 15, + "var" + ], + "PACK_KEYS": [ + 16, + "var" + ], + "PASSWORD": [ + 17, + "var" + ], + "ROW_FORMAT": [ + 18, + "var" + ], + "TABLESPACE": [ + 19, + "var" + ], + "STORAGE": [ + 20, + "var" + ], + "UNION": [ + 21, + "var" + ] + }, + "FUNC_OPTIONS": { + "NOT": [ + 2, + "var" + ], + "FUNCTION": [ + 3, + "var=" + ], + "PROCEDURE": [ + 3, + "var=" + ], + "CONTAINS": [ + 4, + "expr" + ], + "NO": [ + 4, + "var" + ], + "READS": [ + 4, + "var" + ], + "MODIFIES": [ + 4, + "expr" + ], + "SQL SECURITY": [ + 6, + "var" + ], + "LANGUAGE": [ + 7, + "var" + ], + "COMMENT": [ + 8, + "var" + ], + "CREATE": 1, + "DETERMINISTIC": 2, + "DATA": 5 + }, + "TRIGGER_OPTIONS": { + "BEFORE": 1, + "AFTER": 1, + "INSERT": 2, + "UPDATE": 2, + "DELETE": 2 + }, + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "table_copy", + "column": null, + "expr": "`table_copy`", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": null, + "fields": null, + "select": null, + "like": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "old_table", + "column": null, + "expr": "`old_table`", + "alias": null, + "function": null, + "subquery": null + }, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [], + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "TABLE" + } + }, + "first": 0, + "last": 8 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableNotEnforcedCheck.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableNotEnforcedCheck.in new file mode 100644 index 0000000000..1eb24bafe9 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableNotEnforcedCheck.in @@ -0,0 +1 @@ +CREATE TABLE IF NOT EXISTS employees_check (FirstName varchar(30) CHECK (FirstName REGEXP '^T' AND FirstName REGEXP 'r$') NOT ENFORCED); \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableNotEnforcedCheck.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableNotEnforcedCheck.out new file mode 100644 index 0000000000..0d06398555 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableNotEnforcedCheck.out @@ -0,0 +1,1099 @@ +{ + "query": "CREATE TABLE IF NOT EXISTS employees_check (FirstName varchar(30) CHECK (FirstName REGEXP '^T' AND FirstName REGEXP 'r$') NOT ENFORCED);", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "CREATE TABLE IF NOT EXISTS employees_check (FirstName varchar(30) CHECK (FirstName REGEXP '^T' AND FirstName REGEXP 'r$') NOT ENFORCED);", + "len": 136, + "last": 136, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": 1, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IF NOT EXISTS", + "value": "IF NOT EXISTS", + "keyword": "IF NOT EXISTS", + "type": 1, + "flags": 7, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "employees_check", + "value": "employees_check", + "keyword": null, + "type": 0, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FirstName", + "value": "FirstName", + "keyword": null, + "type": 0, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "varchar", + "value": "VARCHAR", + "keyword": "VARCHAR", + "type": 1, + "flags": 11, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "30", + "value": 30, + "keyword": null, + "type": 6, + "flags": 0, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CHECK", + "value": "CHECK", + "keyword": "CHECK", + "type": 1, + "flags": 3, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FirstName", + "value": "FirstName", + "keyword": null, + "type": 0, + "flags": 0, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "REGEXP", + "value": "REGEXP", + "keyword": "REGEXP", + "type": 1, + "flags": 3, + "position": 83 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'^T'", + "value": "^T", + "keyword": null, + "type": 7, + "flags": 1, + "position": 90 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AND", + "value": "AND", + "keyword": "AND", + "type": 1, + "flags": 3, + "position": 95 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FirstName", + "value": "FirstName", + "keyword": null, + "type": 0, + "flags": 0, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "REGEXP", + "value": "REGEXP", + "keyword": "REGEXP", + "type": 1, + "flags": 3, + "position": 109 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 115 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'r$'", + "value": "r$", + "keyword": null, + "type": 7, + "flags": 1, + "position": 116 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 120 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT", + "value": "NOT", + "keyword": "NOT", + "type": 1, + "flags": 3, + "position": 122 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 125 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ENFORCED", + "value": "ENFORCED", + "keyword": null, + "type": 0, + "flags": 0, + "position": 126 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 134 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 135 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 40, + "idx": 40 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "OPTIONS": { + "TEMPORARY": 1, + "OR REPLACE": 2, + "ALGORITHM": [ + 3, + "var=" + ], + "DEFINER": [ + 4, + "expr=" + ], + "SQL SECURITY": [ + 5, + "var" + ], + "DATABASE": 6, + "EVENT": 6, + "FUNCTION": 6, + "INDEX": 6, + "UNIQUE INDEX": 6, + "FULLTEXT INDEX": 6, + "SPATIAL INDEX": 6, + "PROCEDURE": 6, + "SERVER": 6, + "TABLE": 6, + "TABLESPACE": 6, + "TRIGGER": 6, + "USER": 6, + "VIEW": 6, + "SCHEMA": 6, + "IF NOT EXISTS": 7 + }, + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var=" + ], + "CHARSET": [ + 1, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var=" + ], + "DEFAULT CHARSET": [ + 1, + "var=" + ], + "DEFAULT COLLATE": [ + 2, + "var=" + ], + "COLLATE": [ + 2, + "var=" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 2, + "var=" + ], + "AVG_ROW_LENGTH": [ + 3, + "var" + ], + "CHARACTER SET": [ + 4, + "var=" + ], + "CHARSET": [ + 4, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 4, + "var=" + ], + "DEFAULT CHARSET": [ + 4, + "var=" + ], + "CHECKSUM": [ + 5, + "var" + ], + "DEFAULT COLLATE": [ + 6, + "var=" + ], + "COLLATE": [ + 6, + "var=" + ], + "COMMENT": [ + 7, + "var=" + ], + "CONNECTION": [ + 8, + "var" + ], + "DATA DIRECTORY": [ + 9, + "var" + ], + "DELAY_KEY_WRITE": [ + 10, + "var" + ], + "INDEX DIRECTORY": [ + 11, + "var" + ], + "INSERT_METHOD": [ + 12, + "var" + ], + "KEY_BLOCK_SIZE": [ + 13, + "var" + ], + "MAX_ROWS": [ + 14, + "var" + ], + "MIN_ROWS": [ + 15, + "var" + ], + "PACK_KEYS": [ + 16, + "var" + ], + "PASSWORD": [ + 17, + "var" + ], + "ROW_FORMAT": [ + 18, + "var" + ], + "TABLESPACE": [ + 19, + "var" + ], + "STORAGE": [ + 20, + "var" + ], + "UNION": [ + 21, + "var" + ] + }, + "FUNC_OPTIONS": { + "NOT": [ + 2, + "var" + ], + "FUNCTION": [ + 3, + "var=" + ], + "PROCEDURE": [ + 3, + "var=" + ], + "CONTAINS": [ + 4, + "expr" + ], + "NO": [ + 4, + "var" + ], + "READS": [ + 4, + "var" + ], + "MODIFIES": [ + 4, + "expr" + ], + "SQL SECURITY": [ + 6, + "var" + ], + "LANGUAGE": [ + 7, + "var" + ], + "COMMENT": [ + 8, + "var" + ], + "CREATE": 1, + "DETERMINISTIC": 2, + "DATA": 5 + }, + "TRIGGER_OPTIONS": { + "BEFORE": 1, + "AFTER": 1, + "INSERT": 2, + "UPDATE": 2, + "DELETE": 2 + }, + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "employees_check", + "column": null, + "expr": "employees_check", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "fields": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "FIELD_OPTIONS": { + "_UNSORTED": true, + "NOT NULL": 1, + "NULL": 1, + "DEFAULT": [ + 2, + "expr", + { + "breakOnAlias": true + } + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "AUTO_INCREMENT": 3, + "PRIMARY": 4, + "PRIMARY KEY": 4, + "UNIQUE": 4, + "UNIQUE KEY": 4, + "COMMENT": [ + 5, + "var" + ], + "COLUMN_FORMAT": [ + 6, + "var" + ], + "ON UPDATE": [ + 7, + "expr" + ], + "GENERATED ALWAYS": 8, + "AS": [ + 9, + "expr", + { + "parenthesesDelimited": true + } + ], + "VIRTUAL": 10, + "PERSISTENT": 11, + "STORED": 11, + "CHECK": [ + 12, + "expr", + { + "parenthesesDelimited": true + } + ], + "INVISIBLE": 13, + "ENFORCED": 14, + "NOT": 15 + }, + "name": "FirstName", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "DATA_TYPE_OPTIONS": { + "BINARY": 1, + "CHARACTER SET": [ + 2, + "var" + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "UNSIGNED": 4, + "ZEROFILL": 5 + }, + "name": "VARCHAR", + "parameters": [ + "30" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "12": { + "name": "CHECK", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "(FirstName REGEXP '^T' AND FirstName REGEXP 'r$')", + "alias": null, + "function": null, + "subquery": null + }, + "value": "(FirstName REGEXP '^T' AND FirstName REGEXP 'r$')" + }, + "15": "NOT", + "14": "ENFORCED" + } + } + } + ], + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [], + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "TABLE", + "7": "IF NOT EXISTS" + } + }, + "first": 0, + "last": 38 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableSelect.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableSelect.in new file mode 100644 index 0000000000..59ff219fb2 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableSelect.in @@ -0,0 +1 @@ +CREATE TABLE new_tbl SELECT * FROM orig_tbl diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableSelect.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableSelect.out new file mode 100644 index 0000000000..18ae0ca75f --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableSelect.out @@ -0,0 +1,958 @@ +{ + "query": "CREATE TABLE new_tbl SELECT * FROM orig_tbl\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "CREATE TABLE new_tbl SELECT * FROM orig_tbl\n", + "len": 44, + "last": 44, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": 1, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "new_tbl", + "value": "new_tbl", + "keyword": null, + "type": 0, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "orig_tbl", + "value": "orig_tbl", + "keyword": null, + "type": 0, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 15, + "idx": 15 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "OPTIONS": { + "TEMPORARY": 1, + "OR REPLACE": 2, + "ALGORITHM": [ + 3, + "var=" + ], + "DEFINER": [ + 4, + "expr=" + ], + "SQL SECURITY": [ + 5, + "var" + ], + "DATABASE": 6, + "EVENT": 6, + "FUNCTION": 6, + "INDEX": 6, + "UNIQUE INDEX": 6, + "FULLTEXT INDEX": 6, + "SPATIAL INDEX": 6, + "PROCEDURE": 6, + "SERVER": 6, + "TABLE": 6, + "TABLESPACE": 6, + "TRIGGER": 6, + "USER": 6, + "VIEW": 6, + "SCHEMA": 6, + "IF NOT EXISTS": 7 + }, + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var=" + ], + "CHARSET": [ + 1, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var=" + ], + "DEFAULT CHARSET": [ + 1, + "var=" + ], + "DEFAULT COLLATE": [ + 2, + "var=" + ], + "COLLATE": [ + 2, + "var=" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 2, + "var=" + ], + "AVG_ROW_LENGTH": [ + 3, + "var" + ], + "CHARACTER SET": [ + 4, + "var=" + ], + "CHARSET": [ + 4, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 4, + "var=" + ], + "DEFAULT CHARSET": [ + 4, + "var=" + ], + "CHECKSUM": [ + 5, + "var" + ], + "DEFAULT COLLATE": [ + 6, + "var=" + ], + "COLLATE": [ + 6, + "var=" + ], + "COMMENT": [ + 7, + "var=" + ], + "CONNECTION": [ + 8, + "var" + ], + "DATA DIRECTORY": [ + 9, + "var" + ], + "DELAY_KEY_WRITE": [ + 10, + "var" + ], + "INDEX DIRECTORY": [ + 11, + "var" + ], + "INSERT_METHOD": [ + 12, + "var" + ], + "KEY_BLOCK_SIZE": [ + 13, + "var" + ], + "MAX_ROWS": [ + 14, + "var" + ], + "MIN_ROWS": [ + 15, + "var" + ], + "PACK_KEYS": [ + 16, + "var" + ], + "PASSWORD": [ + 17, + "var" + ], + "ROW_FORMAT": [ + 18, + "var" + ], + "TABLESPACE": [ + 19, + "var" + ], + "STORAGE": [ + 20, + "var" + ], + "UNION": [ + 21, + "var" + ] + }, + "FUNC_OPTIONS": { + "NOT": [ + 2, + "var" + ], + "FUNCTION": [ + 3, + "var=" + ], + "PROCEDURE": [ + 3, + "var=" + ], + "CONTAINS": [ + 4, + "expr" + ], + "NO": [ + 4, + "var" + ], + "READS": [ + 4, + "var" + ], + "MODIFIES": [ + 4, + "expr" + ], + "SQL SECURITY": [ + 6, + "var" + ], + "LANGUAGE": [ + 7, + "var" + ], + "COMMENT": [ + 8, + "var" + ], + "CREATE": 1, + "DETERMINISTIC": 2, + "DATA": 5 + }, + "TRIGGER_OPTIONS": { + "BEFORE": 1, + "AFTER": 1, + "INSERT": 2, + "UPDATE": 2, + "DELETE": 2 + }, + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "new_tbl", + "column": null, + "expr": "new_tbl", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": null, + "fields": null, + "select": { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "orig_tbl", + "column": null, + "expr": "orig_tbl", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": null, + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 6, + "last": 13 + }, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [], + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "TABLE" + } + }, + "first": 0, + "last": 13 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableSpatial.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableSpatial.in new file mode 100644 index 0000000000..ca76430bce --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableSpatial.in @@ -0,0 +1 @@ +CREATE TABLE `xss`.`gis` ( `x` POINT NOT NULL ) ENGINE = InnoDB; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableSpatial.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableSpatial.out new file mode 100644 index 0000000000..8ea5b8e9cf --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableSpatial.out @@ -0,0 +1,939 @@ +{ + "query": "CREATE TABLE `xss`.`gis` ( `x` POINT NOT NULL ) ENGINE = InnoDB;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "CREATE TABLE `xss`.`gis` ( `x` POINT NOT NULL ) ENGINE = InnoDB;", + "len": 64, + "last": 64, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": 1, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`xss`", + "value": "xss", + "keyword": null, + "type": 8, + "flags": 2, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`gis`", + "value": "gis", + "keyword": null, + "type": 8, + "flags": 2, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`x`", + "value": "x", + "keyword": null, + "type": 8, + "flags": 2, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "POINT", + "value": "POINT", + "keyword": "POINT", + "type": 1, + "flags": 41, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": 1, + "flags": 7, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ENGINE", + "value": "ENGINE", + "keyword": "ENGINE", + "type": 1, + "flags": 1, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "InnoDB", + "value": "InnoDB", + "keyword": null, + "type": 0, + "flags": 0, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 25, + "idx": 25 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "OPTIONS": { + "TEMPORARY": 1, + "OR REPLACE": 2, + "ALGORITHM": [ + 3, + "var=" + ], + "DEFINER": [ + 4, + "expr=" + ], + "SQL SECURITY": [ + 5, + "var" + ], + "DATABASE": 6, + "EVENT": 6, + "FUNCTION": 6, + "INDEX": 6, + "UNIQUE INDEX": 6, + "FULLTEXT INDEX": 6, + "SPATIAL INDEX": 6, + "PROCEDURE": 6, + "SERVER": 6, + "TABLE": 6, + "TABLESPACE": 6, + "TRIGGER": 6, + "USER": 6, + "VIEW": 6, + "SCHEMA": 6, + "IF NOT EXISTS": 7 + }, + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var=" + ], + "CHARSET": [ + 1, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var=" + ], + "DEFAULT CHARSET": [ + 1, + "var=" + ], + "DEFAULT COLLATE": [ + 2, + "var=" + ], + "COLLATE": [ + 2, + "var=" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 2, + "var=" + ], + "AVG_ROW_LENGTH": [ + 3, + "var" + ], + "CHARACTER SET": [ + 4, + "var=" + ], + "CHARSET": [ + 4, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 4, + "var=" + ], + "DEFAULT CHARSET": [ + 4, + "var=" + ], + "CHECKSUM": [ + 5, + "var" + ], + "DEFAULT COLLATE": [ + 6, + "var=" + ], + "COLLATE": [ + 6, + "var=" + ], + "COMMENT": [ + 7, + "var=" + ], + "CONNECTION": [ + 8, + "var" + ], + "DATA DIRECTORY": [ + 9, + "var" + ], + "DELAY_KEY_WRITE": [ + 10, + "var" + ], + "INDEX DIRECTORY": [ + 11, + "var" + ], + "INSERT_METHOD": [ + 12, + "var" + ], + "KEY_BLOCK_SIZE": [ + 13, + "var" + ], + "MAX_ROWS": [ + 14, + "var" + ], + "MIN_ROWS": [ + 15, + "var" + ], + "PACK_KEYS": [ + 16, + "var" + ], + "PASSWORD": [ + 17, + "var" + ], + "ROW_FORMAT": [ + 18, + "var" + ], + "TABLESPACE": [ + 19, + "var" + ], + "STORAGE": [ + 20, + "var" + ], + "UNION": [ + 21, + "var" + ] + }, + "FUNC_OPTIONS": { + "NOT": [ + 2, + "var" + ], + "FUNCTION": [ + 3, + "var=" + ], + "PROCEDURE": [ + 3, + "var=" + ], + "CONTAINS": [ + 4, + "expr" + ], + "NO": [ + 4, + "var" + ], + "READS": [ + 4, + "var" + ], + "MODIFIES": [ + 4, + "expr" + ], + "SQL SECURITY": [ + 6, + "var" + ], + "LANGUAGE": [ + 7, + "var" + ], + "COMMENT": [ + 8, + "var" + ], + "CREATE": 1, + "DETERMINISTIC": 2, + "DATA": 5 + }, + "TRIGGER_OPTIONS": { + "BEFORE": 1, + "AFTER": 1, + "INSERT": 2, + "UPDATE": 2, + "DELETE": 2 + }, + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": "xss", + "table": "gis", + "column": null, + "expr": "`xss`.`gis`", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "ENGINE", + "equals": true, + "expr": "InnoDB", + "value": "InnoDB" + } + } + }, + "fields": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "FIELD_OPTIONS": { + "_UNSORTED": true, + "NOT NULL": 1, + "NULL": 1, + "DEFAULT": [ + 2, + "expr", + { + "breakOnAlias": true + } + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "AUTO_INCREMENT": 3, + "PRIMARY": 4, + "PRIMARY KEY": 4, + "UNIQUE": 4, + "UNIQUE KEY": 4, + "COMMENT": [ + 5, + "var" + ], + "COLUMN_FORMAT": [ + 6, + "var" + ], + "ON UPDATE": [ + 7, + "expr" + ], + "GENERATED ALWAYS": 8, + "AS": [ + 9, + "expr", + { + "parenthesesDelimited": true + } + ], + "VIRTUAL": 10, + "PERSISTENT": 11, + "STORED": 11, + "CHECK": [ + 12, + "expr", + { + "parenthesesDelimited": true + } + ], + "INVISIBLE": 13, + "ENFORCED": 14, + "NOT": 15 + }, + "name": "x", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "DATA_TYPE_OPTIONS": { + "BINARY": 1, + "CHARACTER SET": [ + 2, + "var" + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "UNSIGNED": 4, + "ZEROFILL": 5 + }, + "name": "POINT", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "NOT NULL" + } + } + } + ], + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [], + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "TABLE" + } + }, + "first": 0, + "last": 23 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableTimestampWithPrecision.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableTimestampWithPrecision.in new file mode 100644 index 0000000000..11760a5330 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableTimestampWithPrecision.in @@ -0,0 +1,5 @@ +CREATE TABLE `aa` ( + `id` int(11) NOT NULL, + `rTime` timestamp(3) NOT NULL DEFAULT '0000-00-00 00:00:00.000' ON UPDATE CURRENT_TIMESTAMP(3), + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableTimestampWithPrecision.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableTimestampWithPrecision.out new file mode 100644 index 0000000000..808c6b6528 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableTimestampWithPrecision.out @@ -0,0 +1,1496 @@ +{ + "query": "CREATE TABLE `aa` (\n `id` int(11) NOT NULL,\n `rTime` timestamp(3) NOT NULL DEFAULT '0000-00-00 00:00:00.000' ON UPDATE CURRENT_TIMESTAMP(3),\n PRIMARY KEY (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=latin1;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "CREATE TABLE `aa` (\n `id` int(11) NOT NULL,\n `rTime` timestamp(3) NOT NULL DEFAULT '0000-00-00 00:00:00.000' ON UPDATE CURRENT_TIMESTAMP(3),\n PRIMARY KEY (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=latin1;", + "len": 203, + "last": 203, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": 1, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`aa`", + "value": "aa", + "keyword": null, + "type": 8, + "flags": 2, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`id`", + "value": "id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "int", + "value": "INT", + "keyword": "INT", + "type": 1, + "flags": 11, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "11", + "value": 11, + "keyword": null, + "type": 6, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": 1, + "flags": 7, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`rTime`", + "value": "rTime", + "keyword": null, + "type": 8, + "flags": 2, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "timestamp", + "value": "timestamp", + "keyword": "TIMESTAMP", + "type": 1, + "flags": 41, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3", + "value": 3, + "keyword": null, + "type": 6, + "flags": 0, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": 1, + "flags": 7, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT", + "value": "DEFAULT", + "keyword": "DEFAULT", + "type": 1, + "flags": 35, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'0000-00-00 00:00:00.000'", + "value": "0000-00-00 00:00:00.000", + "keyword": null, + "type": 7, + "flags": 1, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 110 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON UPDATE", + "value": "ON UPDATE", + "keyword": "ON UPDATE", + "type": 1, + "flags": 7, + "position": 111 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 120 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CURRENT_TIMESTAMP", + "value": "CURRENT_TIMESTAMP", + "keyword": "CURRENT_TIMESTAMP", + "type": 1, + "flags": 35, + "position": 121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 138 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3", + "value": 3, + "keyword": null, + "type": 6, + "flags": 0, + "position": 139 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 140 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 141 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 142 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PRIMARY KEY", + "value": "PRIMARY KEY", + "keyword": "PRIMARY KEY", + "type": 1, + "flags": 23, + "position": 145 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 156 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 157 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`id`", + "value": "id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 158 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 162 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 163 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 164 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 165 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ENGINE", + "value": "ENGINE", + "keyword": "ENGINE", + "type": 1, + "flags": 1, + "position": 166 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 172 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "InnoDB", + "value": "InnoDB", + "keyword": null, + "type": 0, + "flags": 0, + "position": 173 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 179 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT CHARSET", + "value": "DEFAULT CHARSET", + "keyword": "DEFAULT CHARSET", + "type": 1, + "flags": 7, + "position": 180 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 195 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "latin1", + "value": "latin1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 196 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 202 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 56, + "idx": 56 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "OPTIONS": { + "TEMPORARY": 1, + "OR REPLACE": 2, + "ALGORITHM": [ + 3, + "var=" + ], + "DEFINER": [ + 4, + "expr=" + ], + "SQL SECURITY": [ + 5, + "var" + ], + "DATABASE": 6, + "EVENT": 6, + "FUNCTION": 6, + "INDEX": 6, + "UNIQUE INDEX": 6, + "FULLTEXT INDEX": 6, + "SPATIAL INDEX": 6, + "PROCEDURE": 6, + "SERVER": 6, + "TABLE": 6, + "TABLESPACE": 6, + "TRIGGER": 6, + "USER": 6, + "VIEW": 6, + "SCHEMA": 6, + "IF NOT EXISTS": 7 + }, + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var=" + ], + "CHARSET": [ + 1, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var=" + ], + "DEFAULT CHARSET": [ + 1, + "var=" + ], + "DEFAULT COLLATE": [ + 2, + "var=" + ], + "COLLATE": [ + 2, + "var=" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 2, + "var=" + ], + "AVG_ROW_LENGTH": [ + 3, + "var" + ], + "CHARACTER SET": [ + 4, + "var=" + ], + "CHARSET": [ + 4, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 4, + "var=" + ], + "DEFAULT CHARSET": [ + 4, + "var=" + ], + "CHECKSUM": [ + 5, + "var" + ], + "DEFAULT COLLATE": [ + 6, + "var=" + ], + "COLLATE": [ + 6, + "var=" + ], + "COMMENT": [ + 7, + "var=" + ], + "CONNECTION": [ + 8, + "var" + ], + "DATA DIRECTORY": [ + 9, + "var" + ], + "DELAY_KEY_WRITE": [ + 10, + "var" + ], + "INDEX DIRECTORY": [ + 11, + "var" + ], + "INSERT_METHOD": [ + 12, + "var" + ], + "KEY_BLOCK_SIZE": [ + 13, + "var" + ], + "MAX_ROWS": [ + 14, + "var" + ], + "MIN_ROWS": [ + 15, + "var" + ], + "PACK_KEYS": [ + 16, + "var" + ], + "PASSWORD": [ + 17, + "var" + ], + "ROW_FORMAT": [ + 18, + "var" + ], + "TABLESPACE": [ + 19, + "var" + ], + "STORAGE": [ + 20, + "var" + ], + "UNION": [ + 21, + "var" + ] + }, + "FUNC_OPTIONS": { + "NOT": [ + 2, + "var" + ], + "FUNCTION": [ + 3, + "var=" + ], + "PROCEDURE": [ + 3, + "var=" + ], + "CONTAINS": [ + 4, + "expr" + ], + "NO": [ + 4, + "var" + ], + "READS": [ + 4, + "var" + ], + "MODIFIES": [ + 4, + "expr" + ], + "SQL SECURITY": [ + 6, + "var" + ], + "LANGUAGE": [ + 7, + "var" + ], + "COMMENT": [ + 8, + "var" + ], + "CREATE": 1, + "DETERMINISTIC": 2, + "DATA": 5 + }, + "TRIGGER_OPTIONS": { + "BEFORE": 1, + "AFTER": 1, + "INSERT": 2, + "UPDATE": 2, + "DELETE": 2 + }, + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "aa", + "column": null, + "expr": "`aa`", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "ENGINE", + "equals": true, + "expr": "InnoDB", + "value": "InnoDB" + }, + "4": { + "name": "DEFAULT CHARSET", + "equals": true, + "expr": "latin1", + "value": "latin1" + } + } + }, + "fields": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "FIELD_OPTIONS": { + "_UNSORTED": true, + "NOT NULL": 1, + "NULL": 1, + "DEFAULT": [ + 2, + "expr", + { + "breakOnAlias": true + } + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "AUTO_INCREMENT": 3, + "PRIMARY": 4, + "PRIMARY KEY": 4, + "UNIQUE": 4, + "UNIQUE KEY": 4, + "COMMENT": [ + 5, + "var" + ], + "COLUMN_FORMAT": [ + 6, + "var" + ], + "ON UPDATE": [ + 7, + "expr" + ], + "GENERATED ALWAYS": 8, + "AS": [ + 9, + "expr", + { + "parenthesesDelimited": true + } + ], + "VIRTUAL": 10, + "PERSISTENT": 11, + "STORED": 11, + "CHECK": [ + 12, + "expr", + { + "parenthesesDelimited": true + } + ], + "INVISIBLE": 13, + "ENFORCED": 14, + "NOT": 15 + }, + "name": "id", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "DATA_TYPE_OPTIONS": { + "BINARY": 1, + "CHARACTER SET": [ + 2, + "var" + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "UNSIGNED": 4, + "ZEROFILL": 5 + }, + "name": "INT", + "parameters": [ + "11" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "NOT NULL" + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "FIELD_OPTIONS": { + "_UNSORTED": true, + "NOT NULL": 1, + "NULL": 1, + "DEFAULT": [ + 2, + "expr", + { + "breakOnAlias": true + } + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "AUTO_INCREMENT": 3, + "PRIMARY": 4, + "PRIMARY KEY": 4, + "UNIQUE": 4, + "UNIQUE KEY": 4, + "COMMENT": [ + 5, + "var" + ], + "COLUMN_FORMAT": [ + 6, + "var" + ], + "ON UPDATE": [ + 7, + "expr" + ], + "GENERATED ALWAYS": 8, + "AS": [ + 9, + "expr", + { + "parenthesesDelimited": true + } + ], + "VIRTUAL": 10, + "PERSISTENT": 11, + "STORED": 11, + "CHECK": [ + 12, + "expr", + { + "parenthesesDelimited": true + } + ], + "INVISIBLE": 13, + "ENFORCED": 14, + "NOT": 15 + }, + "name": "rTime", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "DATA_TYPE_OPTIONS": { + "BINARY": 1, + "CHARACTER SET": [ + 2, + "var" + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "UNSIGNED": 4, + "ZEROFILL": 5 + }, + "name": "TIMESTAMP", + "parameters": [ + "3" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "NOT NULL", + "2": { + "name": "DEFAULT", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "0000-00-00 00:00:00.000", + "expr": "'0000-00-00 00:00:00.000'", + "alias": null, + "function": null, + "subquery": null + }, + "value": "'0000-00-00 00:00:00.000'" + }, + "7": { + "name": "ON UPDATE", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "CURRENT_TIMESTAMP(3)", + "alias": null, + "function": "CURRENT_TIMESTAMP", + "subquery": null + }, + "value": "CURRENT_TIMESTAMP(3)" + } + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "FIELD_OPTIONS": { + "_UNSORTED": true, + "NOT NULL": 1, + "NULL": 1, + "DEFAULT": [ + 2, + "expr", + { + "breakOnAlias": true + } + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "AUTO_INCREMENT": 3, + "PRIMARY": 4, + "PRIMARY KEY": 4, + "UNIQUE": 4, + "UNIQUE KEY": 4, + "COMMENT": [ + 5, + "var" + ], + "COLUMN_FORMAT": [ + 6, + "var" + ], + "ON UPDATE": [ + 7, + "expr" + ], + "GENERATED ALWAYS": 8, + "AS": [ + 9, + "expr", + { + "parenthesesDelimited": true + } + ], + "VIRTUAL": 10, + "PERSISTENT": 11, + "STORED": 11, + "CHECK": [ + 12, + "expr", + { + "parenthesesDelimited": true + } + ], + "INVISIBLE": 13, + "ENFORCED": 14, + "NOT": 15 + }, + "name": null, + "isConstraint": null, + "type": null, + "key": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Key", + "KEY_OPTIONS": { + "KEY_BLOCK_SIZE": [ + 1, + "var=" + ], + "USING": [ + 2, + "var" + ], + "WITH PARSER": [ + 3, + "var" + ], + "COMMENT": [ + 4, + "var" + ], + "CLUSTERING": [ + 4, + "var=" + ], + "ENGINE_ATTRIBUTE": [ + 5, + "var=" + ], + "SECONDARY_ENGINE_ATTRIBUTE": [ + 5, + "var=" + ], + "VISIBLE": 6, + "INVISIBLE": 6, + "IGNORED": 10, + "NOT IGNORED": 10 + }, + "name": null, + "columns": [ + { + "name": "id" + } + ], + "type": "PRIMARY KEY", + "expr": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + "references": null, + "options": null + } + ], + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [], + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "TABLE" + } + }, + "first": 0, + "last": 54 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableWithInvisibleKey.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableWithInvisibleKey.in new file mode 100644 index 0000000000..da363fc29b --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableWithInvisibleKey.in @@ -0,0 +1,12 @@ +CREATE TABLE `animes_comments` ( + `anime_comment_id` bigint unsigned NOT NULL AUTO_INCREMENT, + `anime_id` bigint unsigned NOT NULL, + `user_id` bigint unsigned NOT NULL, + `comment_text` varchar(500) COLLATE utf8mb4_general_ci DEFAULT NULL, + `comment_at` datetime DEFAULT NULL, + PRIMARY KEY (`anime_comment_id`), + KEY `animes_comments_animes_fk` (`anime_id`) invisible, + KEY `animes_comments_users_fk` (`user_id`), + KEY `comment_at_idx` (`comment_at`) , + CONSTRAINT `animes_comments_animes_fk` FOREIGN KEY (`anime_id`) REFERENCES `animes` (`anime_id`) ON DELETE CASCADE ON UPDATE RESTRICT, + CONSTRAINT `animes_comments_users_fk` FOREIGN KEY (`user_id`) REFERENCES `users` (`user_id`) ON DELETE CASCADE ON UPDATE RESTRICT) \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableWithInvisibleKey.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableWithInvisibleKey.out new file mode 100644 index 0000000000..d63ab2691d --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTableWithInvisibleKey.out @@ -0,0 +1,3352 @@ +{ + "query": "CREATE TABLE `animes_comments` (\n `anime_comment_id` bigint unsigned NOT NULL AUTO_INCREMENT,\n `anime_id` bigint unsigned NOT NULL,\n `user_id` bigint unsigned NOT NULL,\n `comment_text` varchar(500) COLLATE utf8mb4_general_ci DEFAULT NULL,\n `comment_at` datetime DEFAULT NULL,\n PRIMARY KEY (`anime_comment_id`),\n KEY `animes_comments_animes_fk` (`anime_id`) invisible,\n KEY `animes_comments_users_fk` (`user_id`),\n KEY `comment_at_idx` (`comment_at`) ,\n CONSTRAINT `animes_comments_animes_fk` FOREIGN KEY (`anime_id`) REFERENCES `animes` (`anime_id`) ON DELETE CASCADE ON UPDATE RESTRICT,\n CONSTRAINT `animes_comments_users_fk` FOREIGN KEY (`user_id`) REFERENCES `users` (`user_id`) ON DELETE CASCADE ON UPDATE RESTRICT)", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "CREATE TABLE `animes_comments` (\n `anime_comment_id` bigint unsigned NOT NULL AUTO_INCREMENT,\n `anime_id` bigint unsigned NOT NULL,\n `user_id` bigint unsigned NOT NULL,\n `comment_text` varchar(500) COLLATE utf8mb4_general_ci DEFAULT NULL,\n `comment_at` datetime DEFAULT NULL,\n PRIMARY KEY (`anime_comment_id`),\n KEY `animes_comments_animes_fk` (`anime_id`) invisible,\n KEY `animes_comments_users_fk` (`user_id`),\n KEY `comment_at_idx` (`comment_at`) ,\n CONSTRAINT `animes_comments_animes_fk` FOREIGN KEY (`anime_id`) REFERENCES `animes` (`anime_id`) ON DELETE CASCADE ON UPDATE RESTRICT,\n CONSTRAINT `animes_comments_users_fk` FOREIGN KEY (`user_id`) REFERENCES `users` (`user_id`) ON DELETE CASCADE ON UPDATE RESTRICT)", + "len": 730, + "last": 730, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": 1, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`animes_comments`", + "value": "animes_comments", + "keyword": null, + "type": 8, + "flags": 2, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`anime_comment_id`", + "value": "anime_comment_id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "bigint", + "value": "BIGINT", + "keyword": "BIGINT", + "type": 1, + "flags": 11, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "unsigned", + "value": "UNSIGNED", + "keyword": "UNSIGNED", + "type": 1, + "flags": 3, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": 1, + "flags": 7, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AUTO_INCREMENT", + "value": "AUTO_INCREMENT", + "keyword": "AUTO_INCREMENT", + "type": 1, + "flags": 1, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`anime_id`", + "value": "anime_id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 97 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "bigint", + "value": "BIGINT", + "keyword": "BIGINT", + "type": 1, + "flags": 11, + "position": 108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 114 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "unsigned", + "value": "UNSIGNED", + "keyword": "UNSIGNED", + "type": 1, + "flags": 3, + "position": 115 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 123 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": 1, + "flags": 7, + "position": 124 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 132 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 133 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`user_id`", + "value": "user_id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 136 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 145 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "bigint", + "value": "BIGINT", + "keyword": "BIGINT", + "type": 1, + "flags": 11, + "position": 146 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 152 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "unsigned", + "value": "UNSIGNED", + "keyword": "UNSIGNED", + "type": 1, + "flags": 3, + "position": 153 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 161 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": 1, + "flags": 7, + "position": 162 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 170 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 171 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`comment_text`", + "value": "comment_text", + "keyword": null, + "type": 8, + "flags": 2, + "position": 174 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 188 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "varchar", + "value": "VARCHAR", + "keyword": "VARCHAR", + "type": 1, + "flags": 11, + "position": 189 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 196 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "500", + "value": 500, + "keyword": null, + "type": 6, + "flags": 0, + "position": 197 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 200 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 201 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COLLATE", + "value": "COLLATE", + "keyword": "COLLATE", + "type": 1, + "flags": 3, + "position": 202 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 209 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "utf8mb4_general_ci", + "value": "utf8mb4_general_ci", + "keyword": null, + "type": 0, + "flags": 0, + "position": 210 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 228 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT", + "value": "DEFAULT", + "keyword": "DEFAULT", + "type": 1, + "flags": 35, + "position": 229 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 236 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NULL", + "value": "NULL", + "keyword": "NULL", + "type": 1, + "flags": 3, + "position": 237 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 241 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 242 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`comment_at`", + "value": "comment_at", + "keyword": null, + "type": 8, + "flags": 2, + "position": 245 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 257 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "datetime", + "value": "datetime", + "keyword": "DATETIME", + "type": 1, + "flags": 9, + "position": 258 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 266 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT", + "value": "DEFAULT", + "keyword": "DEFAULT", + "type": 1, + "flags": 35, + "position": 267 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 274 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NULL", + "value": "NULL", + "keyword": "NULL", + "type": 1, + "flags": 3, + "position": 275 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 279 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 280 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PRIMARY KEY", + "value": "PRIMARY KEY", + "keyword": "PRIMARY KEY", + "type": 1, + "flags": 23, + "position": 283 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 294 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 295 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`anime_comment_id`", + "value": "anime_comment_id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 296 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 314 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 315 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 316 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "KEY", + "value": "KEY", + "keyword": "KEY", + "type": 1, + "flags": 19, + "position": 319 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 322 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`animes_comments_animes_fk`", + "value": "animes_comments_animes_fk", + "keyword": null, + "type": 8, + "flags": 2, + "position": 323 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 350 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 351 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`anime_id`", + "value": "anime_id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 352 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 362 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 363 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "invisible", + "value": "invisible", + "keyword": null, + "type": 0, + "flags": 0, + "position": 364 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 373 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 374 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "KEY", + "value": "KEY", + "keyword": "KEY", + "type": 1, + "flags": 19, + "position": 377 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 380 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`animes_comments_users_fk`", + "value": "animes_comments_users_fk", + "keyword": null, + "type": 8, + "flags": 2, + "position": 381 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 407 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 408 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`user_id`", + "value": "user_id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 409 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 418 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 419 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 420 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "KEY", + "value": "KEY", + "keyword": "KEY", + "type": 1, + "flags": 19, + "position": 423 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 426 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`comment_at_idx`", + "value": "comment_at_idx", + "keyword": null, + "type": 8, + "flags": 2, + "position": 427 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 443 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 444 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`comment_at`", + "value": "comment_at", + "keyword": null, + "type": 8, + "flags": 2, + "position": 445 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 457 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 458 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 459 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 460 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CONSTRAINT", + "value": "CONSTRAINT", + "keyword": "CONSTRAINT", + "type": 1, + "flags": 3, + "position": 463 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 473 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`animes_comments_animes_fk`", + "value": "animes_comments_animes_fk", + "keyword": null, + "type": 8, + "flags": 2, + "position": 474 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 501 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FOREIGN KEY", + "value": "FOREIGN KEY", + "keyword": "FOREIGN KEY", + "type": 1, + "flags": 23, + "position": 502 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 513 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 514 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`anime_id`", + "value": "anime_id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 515 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 525 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 526 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "REFERENCES", + "value": "REFERENCES", + "keyword": "REFERENCES", + "type": 1, + "flags": 3, + "position": 527 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 537 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`animes`", + "value": "animes", + "keyword": null, + "type": 8, + "flags": 2, + "position": 538 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 546 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 547 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`anime_id`", + "value": "anime_id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 548 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 558 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 559 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON DELETE", + "value": "ON DELETE", + "keyword": "ON DELETE", + "type": 1, + "flags": 7, + "position": 560 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 569 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CASCADE", + "value": "CASCADE", + "keyword": "CASCADE", + "type": 1, + "flags": 3, + "position": 570 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 577 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON UPDATE", + "value": "ON UPDATE", + "keyword": "ON UPDATE", + "type": 1, + "flags": 7, + "position": 578 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 587 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "RESTRICT", + "value": "RESTRICT", + "keyword": "RESTRICT", + "type": 1, + "flags": 3, + "position": 588 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 596 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 597 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CONSTRAINT", + "value": "CONSTRAINT", + "keyword": "CONSTRAINT", + "type": 1, + "flags": 3, + "position": 600 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 610 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`animes_comments_users_fk`", + "value": "animes_comments_users_fk", + "keyword": null, + "type": 8, + "flags": 2, + "position": 611 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 637 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FOREIGN KEY", + "value": "FOREIGN KEY", + "keyword": "FOREIGN KEY", + "type": 1, + "flags": 23, + "position": 638 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 649 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 650 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`user_id`", + "value": "user_id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 651 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 660 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 661 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "REFERENCES", + "value": "REFERENCES", + "keyword": "REFERENCES", + "type": 1, + "flags": 3, + "position": 662 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 672 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`users`", + "value": "users", + "keyword": null, + "type": 8, + "flags": 2, + "position": 673 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 680 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 681 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`user_id`", + "value": "user_id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 682 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 691 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 692 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON DELETE", + "value": "ON DELETE", + "keyword": "ON DELETE", + "type": 1, + "flags": 7, + "position": 693 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 702 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CASCADE", + "value": "CASCADE", + "keyword": "CASCADE", + "type": 1, + "flags": 3, + "position": 703 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 710 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON UPDATE", + "value": "ON UPDATE", + "keyword": "ON UPDATE", + "type": 1, + "flags": 7, + "position": 711 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 720 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "RESTRICT", + "value": "RESTRICT", + "keyword": "RESTRICT", + "type": 1, + "flags": 3, + "position": 721 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 729 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 153, + "idx": 153 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "OPTIONS": { + "TEMPORARY": 1, + "OR REPLACE": 2, + "ALGORITHM": [ + 3, + "var=" + ], + "DEFINER": [ + 4, + "expr=" + ], + "SQL SECURITY": [ + 5, + "var" + ], + "DATABASE": 6, + "EVENT": 6, + "FUNCTION": 6, + "INDEX": 6, + "UNIQUE INDEX": 6, + "FULLTEXT INDEX": 6, + "SPATIAL INDEX": 6, + "PROCEDURE": 6, + "SERVER": 6, + "TABLE": 6, + "TABLESPACE": 6, + "TRIGGER": 6, + "USER": 6, + "VIEW": 6, + "SCHEMA": 6, + "IF NOT EXISTS": 7 + }, + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var=" + ], + "CHARSET": [ + 1, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var=" + ], + "DEFAULT CHARSET": [ + 1, + "var=" + ], + "DEFAULT COLLATE": [ + 2, + "var=" + ], + "COLLATE": [ + 2, + "var=" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 2, + "var=" + ], + "AVG_ROW_LENGTH": [ + 3, + "var" + ], + "CHARACTER SET": [ + 4, + "var=" + ], + "CHARSET": [ + 4, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 4, + "var=" + ], + "DEFAULT CHARSET": [ + 4, + "var=" + ], + "CHECKSUM": [ + 5, + "var" + ], + "DEFAULT COLLATE": [ + 6, + "var=" + ], + "COLLATE": [ + 6, + "var=" + ], + "COMMENT": [ + 7, + "var=" + ], + "CONNECTION": [ + 8, + "var" + ], + "DATA DIRECTORY": [ + 9, + "var" + ], + "DELAY_KEY_WRITE": [ + 10, + "var" + ], + "INDEX DIRECTORY": [ + 11, + "var" + ], + "INSERT_METHOD": [ + 12, + "var" + ], + "KEY_BLOCK_SIZE": [ + 13, + "var" + ], + "MAX_ROWS": [ + 14, + "var" + ], + "MIN_ROWS": [ + 15, + "var" + ], + "PACK_KEYS": [ + 16, + "var" + ], + "PASSWORD": [ + 17, + "var" + ], + "ROW_FORMAT": [ + 18, + "var" + ], + "TABLESPACE": [ + 19, + "var" + ], + "STORAGE": [ + 20, + "var" + ], + "UNION": [ + 21, + "var" + ] + }, + "FUNC_OPTIONS": { + "NOT": [ + 2, + "var" + ], + "FUNCTION": [ + 3, + "var=" + ], + "PROCEDURE": [ + 3, + "var=" + ], + "CONTAINS": [ + 4, + "expr" + ], + "NO": [ + 4, + "var" + ], + "READS": [ + 4, + "var" + ], + "MODIFIES": [ + 4, + "expr" + ], + "SQL SECURITY": [ + 6, + "var" + ], + "LANGUAGE": [ + 7, + "var" + ], + "COMMENT": [ + 8, + "var" + ], + "CREATE": 1, + "DETERMINISTIC": 2, + "DATA": 5 + }, + "TRIGGER_OPTIONS": { + "BEFORE": 1, + "AFTER": 1, + "INSERT": 2, + "UPDATE": 2, + "DELETE": 2 + }, + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "animes_comments", + "column": null, + "expr": "`animes_comments`", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "fields": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "FIELD_OPTIONS": { + "_UNSORTED": true, + "NOT NULL": 1, + "NULL": 1, + "DEFAULT": [ + 2, + "expr", + { + "breakOnAlias": true + } + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "AUTO_INCREMENT": 3, + "PRIMARY": 4, + "PRIMARY KEY": 4, + "UNIQUE": 4, + "UNIQUE KEY": 4, + "COMMENT": [ + 5, + "var" + ], + "COLUMN_FORMAT": [ + 6, + "var" + ], + "ON UPDATE": [ + 7, + "expr" + ], + "GENERATED ALWAYS": 8, + "AS": [ + 9, + "expr", + { + "parenthesesDelimited": true + } + ], + "VIRTUAL": 10, + "PERSISTENT": 11, + "STORED": 11, + "CHECK": [ + 12, + "expr", + { + "parenthesesDelimited": true + } + ], + "INVISIBLE": 13, + "ENFORCED": 14, + "NOT": 15 + }, + "name": "anime_comment_id", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "DATA_TYPE_OPTIONS": { + "BINARY": 1, + "CHARACTER SET": [ + 2, + "var" + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "UNSIGNED": 4, + "ZEROFILL": 5 + }, + "name": "BIGINT", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "4": "UNSIGNED" + } + } + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "NOT NULL", + "3": "AUTO_INCREMENT" + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "FIELD_OPTIONS": { + "_UNSORTED": true, + "NOT NULL": 1, + "NULL": 1, + "DEFAULT": [ + 2, + "expr", + { + "breakOnAlias": true + } + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "AUTO_INCREMENT": 3, + "PRIMARY": 4, + "PRIMARY KEY": 4, + "UNIQUE": 4, + "UNIQUE KEY": 4, + "COMMENT": [ + 5, + "var" + ], + "COLUMN_FORMAT": [ + 6, + "var" + ], + "ON UPDATE": [ + 7, + "expr" + ], + "GENERATED ALWAYS": 8, + "AS": [ + 9, + "expr", + { + "parenthesesDelimited": true + } + ], + "VIRTUAL": 10, + "PERSISTENT": 11, + "STORED": 11, + "CHECK": [ + 12, + "expr", + { + "parenthesesDelimited": true + } + ], + "INVISIBLE": 13, + "ENFORCED": 14, + "NOT": 15 + }, + "name": "anime_id", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "DATA_TYPE_OPTIONS": { + "BINARY": 1, + "CHARACTER SET": [ + 2, + "var" + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "UNSIGNED": 4, + "ZEROFILL": 5 + }, + "name": "BIGINT", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "4": "UNSIGNED" + } + } + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "NOT NULL" + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "FIELD_OPTIONS": { + "_UNSORTED": true, + "NOT NULL": 1, + "NULL": 1, + "DEFAULT": [ + 2, + "expr", + { + "breakOnAlias": true + } + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "AUTO_INCREMENT": 3, + "PRIMARY": 4, + "PRIMARY KEY": 4, + "UNIQUE": 4, + "UNIQUE KEY": 4, + "COMMENT": [ + 5, + "var" + ], + "COLUMN_FORMAT": [ + 6, + "var" + ], + "ON UPDATE": [ + 7, + "expr" + ], + "GENERATED ALWAYS": 8, + "AS": [ + 9, + "expr", + { + "parenthesesDelimited": true + } + ], + "VIRTUAL": 10, + "PERSISTENT": 11, + "STORED": 11, + "CHECK": [ + 12, + "expr", + { + "parenthesesDelimited": true + } + ], + "INVISIBLE": 13, + "ENFORCED": 14, + "NOT": 15 + }, + "name": "user_id", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "DATA_TYPE_OPTIONS": { + "BINARY": 1, + "CHARACTER SET": [ + 2, + "var" + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "UNSIGNED": 4, + "ZEROFILL": 5 + }, + "name": "BIGINT", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "4": "UNSIGNED" + } + } + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "NOT NULL" + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "FIELD_OPTIONS": { + "_UNSORTED": true, + "NOT NULL": 1, + "NULL": 1, + "DEFAULT": [ + 2, + "expr", + { + "breakOnAlias": true + } + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "AUTO_INCREMENT": 3, + "PRIMARY": 4, + "PRIMARY KEY": 4, + "UNIQUE": 4, + "UNIQUE KEY": 4, + "COMMENT": [ + 5, + "var" + ], + "COLUMN_FORMAT": [ + 6, + "var" + ], + "ON UPDATE": [ + 7, + "expr" + ], + "GENERATED ALWAYS": 8, + "AS": [ + 9, + "expr", + { + "parenthesesDelimited": true + } + ], + "VIRTUAL": 10, + "PERSISTENT": 11, + "STORED": 11, + "CHECK": [ + 12, + "expr", + { + "parenthesesDelimited": true + } + ], + "INVISIBLE": 13, + "ENFORCED": 14, + "NOT": 15 + }, + "name": "comment_text", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "DATA_TYPE_OPTIONS": { + "BINARY": 1, + "CHARACTER SET": [ + 2, + "var" + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "UNSIGNED": 4, + "ZEROFILL": 5 + }, + "name": "VARCHAR", + "parameters": [ + "500" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": { + "name": "COLLATE", + "equals": false, + "expr": "utf8mb4_general_ci", + "value": "utf8mb4_general_ci" + } + } + } + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": { + "name": "DEFAULT", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "NULL", + "alias": null, + "function": null, + "subquery": null + }, + "value": "NULL" + } + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "FIELD_OPTIONS": { + "_UNSORTED": true, + "NOT NULL": 1, + "NULL": 1, + "DEFAULT": [ + 2, + "expr", + { + "breakOnAlias": true + } + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "AUTO_INCREMENT": 3, + "PRIMARY": 4, + "PRIMARY KEY": 4, + "UNIQUE": 4, + "UNIQUE KEY": 4, + "COMMENT": [ + 5, + "var" + ], + "COLUMN_FORMAT": [ + 6, + "var" + ], + "ON UPDATE": [ + 7, + "expr" + ], + "GENERATED ALWAYS": 8, + "AS": [ + 9, + "expr", + { + "parenthesesDelimited": true + } + ], + "VIRTUAL": 10, + "PERSISTENT": 11, + "STORED": 11, + "CHECK": [ + 12, + "expr", + { + "parenthesesDelimited": true + } + ], + "INVISIBLE": 13, + "ENFORCED": 14, + "NOT": 15 + }, + "name": "comment_at", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "DATA_TYPE_OPTIONS": { + "BINARY": 1, + "CHARACTER SET": [ + 2, + "var" + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "UNSIGNED": 4, + "ZEROFILL": 5 + }, + "name": "DATETIME", + "parameters": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": { + "name": "DEFAULT", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "NULL", + "alias": null, + "function": null, + "subquery": null + }, + "value": "NULL" + } + } + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "FIELD_OPTIONS": { + "_UNSORTED": true, + "NOT NULL": 1, + "NULL": 1, + "DEFAULT": [ + 2, + "expr", + { + "breakOnAlias": true + } + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "AUTO_INCREMENT": 3, + "PRIMARY": 4, + "PRIMARY KEY": 4, + "UNIQUE": 4, + "UNIQUE KEY": 4, + "COMMENT": [ + 5, + "var" + ], + "COLUMN_FORMAT": [ + 6, + "var" + ], + "ON UPDATE": [ + 7, + "expr" + ], + "GENERATED ALWAYS": 8, + "AS": [ + 9, + "expr", + { + "parenthesesDelimited": true + } + ], + "VIRTUAL": 10, + "PERSISTENT": 11, + "STORED": 11, + "CHECK": [ + 12, + "expr", + { + "parenthesesDelimited": true + } + ], + "INVISIBLE": 13, + "ENFORCED": 14, + "NOT": 15 + }, + "name": null, + "isConstraint": null, + "type": null, + "key": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Key", + "KEY_OPTIONS": { + "KEY_BLOCK_SIZE": [ + 1, + "var=" + ], + "USING": [ + 2, + "var" + ], + "WITH PARSER": [ + 3, + "var" + ], + "COMMENT": [ + 4, + "var" + ], + "CLUSTERING": [ + 4, + "var=" + ], + "ENGINE_ATTRIBUTE": [ + 5, + "var=" + ], + "SECONDARY_ENGINE_ATTRIBUTE": [ + 5, + "var=" + ], + "VISIBLE": 6, + "INVISIBLE": 6, + "IGNORED": 10, + "NOT IGNORED": 10 + }, + "name": null, + "columns": [ + { + "name": "anime_comment_id" + } + ], + "type": "PRIMARY KEY", + "expr": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + "references": null, + "options": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "FIELD_OPTIONS": { + "_UNSORTED": true, + "NOT NULL": 1, + "NULL": 1, + "DEFAULT": [ + 2, + "expr", + { + "breakOnAlias": true + } + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "AUTO_INCREMENT": 3, + "PRIMARY": 4, + "PRIMARY KEY": 4, + "UNIQUE": 4, + "UNIQUE KEY": 4, + "COMMENT": [ + 5, + "var" + ], + "COLUMN_FORMAT": [ + 6, + "var" + ], + "ON UPDATE": [ + 7, + "expr" + ], + "GENERATED ALWAYS": 8, + "AS": [ + 9, + "expr", + { + "parenthesesDelimited": true + } + ], + "VIRTUAL": 10, + "PERSISTENT": 11, + "STORED": 11, + "CHECK": [ + 12, + "expr", + { + "parenthesesDelimited": true + } + ], + "INVISIBLE": 13, + "ENFORCED": 14, + "NOT": 15 + }, + "name": null, + "isConstraint": null, + "type": null, + "key": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Key", + "KEY_OPTIONS": { + "KEY_BLOCK_SIZE": [ + 1, + "var=" + ], + "USING": [ + 2, + "var" + ], + "WITH PARSER": [ + 3, + "var" + ], + "COMMENT": [ + 4, + "var" + ], + "CLUSTERING": [ + 4, + "var=" + ], + "ENGINE_ATTRIBUTE": [ + 5, + "var=" + ], + "SECONDARY_ENGINE_ATTRIBUTE": [ + 5, + "var=" + ], + "VISIBLE": 6, + "INVISIBLE": 6, + "IGNORED": 10, + "NOT IGNORED": 10 + }, + "name": "animes_comments_animes_fk", + "columns": [ + { + "name": "anime_id" + } + ], + "type": "KEY", + "expr": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "invisible" + } + } + }, + "references": null, + "options": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "FIELD_OPTIONS": { + "_UNSORTED": true, + "NOT NULL": 1, + "NULL": 1, + "DEFAULT": [ + 2, + "expr", + { + "breakOnAlias": true + } + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "AUTO_INCREMENT": 3, + "PRIMARY": 4, + "PRIMARY KEY": 4, + "UNIQUE": 4, + "UNIQUE KEY": 4, + "COMMENT": [ + 5, + "var" + ], + "COLUMN_FORMAT": [ + 6, + "var" + ], + "ON UPDATE": [ + 7, + "expr" + ], + "GENERATED ALWAYS": 8, + "AS": [ + 9, + "expr", + { + "parenthesesDelimited": true + } + ], + "VIRTUAL": 10, + "PERSISTENT": 11, + "STORED": 11, + "CHECK": [ + 12, + "expr", + { + "parenthesesDelimited": true + } + ], + "INVISIBLE": 13, + "ENFORCED": 14, + "NOT": 15 + }, + "name": null, + "isConstraint": null, + "type": null, + "key": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Key", + "KEY_OPTIONS": { + "KEY_BLOCK_SIZE": [ + 1, + "var=" + ], + "USING": [ + 2, + "var" + ], + "WITH PARSER": [ + 3, + "var" + ], + "COMMENT": [ + 4, + "var" + ], + "CLUSTERING": [ + 4, + "var=" + ], + "ENGINE_ATTRIBUTE": [ + 5, + "var=" + ], + "SECONDARY_ENGINE_ATTRIBUTE": [ + 5, + "var=" + ], + "VISIBLE": 6, + "INVISIBLE": 6, + "IGNORED": 10, + "NOT IGNORED": 10 + }, + "name": "animes_comments_users_fk", + "columns": [ + { + "name": "user_id" + } + ], + "type": "KEY", + "expr": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + "references": null, + "options": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "FIELD_OPTIONS": { + "_UNSORTED": true, + "NOT NULL": 1, + "NULL": 1, + "DEFAULT": [ + 2, + "expr", + { + "breakOnAlias": true + } + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "AUTO_INCREMENT": 3, + "PRIMARY": 4, + "PRIMARY KEY": 4, + "UNIQUE": 4, + "UNIQUE KEY": 4, + "COMMENT": [ + 5, + "var" + ], + "COLUMN_FORMAT": [ + 6, + "var" + ], + "ON UPDATE": [ + 7, + "expr" + ], + "GENERATED ALWAYS": 8, + "AS": [ + 9, + "expr", + { + "parenthesesDelimited": true + } + ], + "VIRTUAL": 10, + "PERSISTENT": 11, + "STORED": 11, + "CHECK": [ + 12, + "expr", + { + "parenthesesDelimited": true + } + ], + "INVISIBLE": 13, + "ENFORCED": 14, + "NOT": 15 + }, + "name": null, + "isConstraint": null, + "type": null, + "key": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Key", + "KEY_OPTIONS": { + "KEY_BLOCK_SIZE": [ + 1, + "var=" + ], + "USING": [ + 2, + "var" + ], + "WITH PARSER": [ + 3, + "var" + ], + "COMMENT": [ + 4, + "var" + ], + "CLUSTERING": [ + 4, + "var=" + ], + "ENGINE_ATTRIBUTE": [ + 5, + "var=" + ], + "SECONDARY_ENGINE_ATTRIBUTE": [ + 5, + "var=" + ], + "VISIBLE": 6, + "INVISIBLE": 6, + "IGNORED": 10, + "NOT IGNORED": 10 + }, + "name": "comment_at_idx", + "columns": [ + { + "name": "comment_at" + } + ], + "type": "KEY", + "expr": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + "references": null, + "options": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "FIELD_OPTIONS": { + "_UNSORTED": true, + "NOT NULL": 1, + "NULL": 1, + "DEFAULT": [ + 2, + "expr", + { + "breakOnAlias": true + } + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "AUTO_INCREMENT": 3, + "PRIMARY": 4, + "PRIMARY KEY": 4, + "UNIQUE": 4, + "UNIQUE KEY": 4, + "COMMENT": [ + 5, + "var" + ], + "COLUMN_FORMAT": [ + 6, + "var" + ], + "ON UPDATE": [ + 7, + "expr" + ], + "GENERATED ALWAYS": 8, + "AS": [ + 9, + "expr", + { + "parenthesesDelimited": true + } + ], + "VIRTUAL": 10, + "PERSISTENT": 11, + "STORED": 11, + "CHECK": [ + 12, + "expr", + { + "parenthesesDelimited": true + } + ], + "INVISIBLE": 13, + "ENFORCED": 14, + "NOT": 15 + }, + "name": "animes_comments_animes_fk", + "isConstraint": true, + "type": null, + "key": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Key", + "KEY_OPTIONS": { + "KEY_BLOCK_SIZE": [ + 1, + "var=" + ], + "USING": [ + 2, + "var" + ], + "WITH PARSER": [ + 3, + "var" + ], + "COMMENT": [ + 4, + "var" + ], + "CLUSTERING": [ + 4, + "var=" + ], + "ENGINE_ATTRIBUTE": [ + 5, + "var=" + ], + "SECONDARY_ENGINE_ATTRIBUTE": [ + 5, + "var=" + ], + "VISIBLE": 6, + "INVISIBLE": 6, + "IGNORED": 10, + "NOT IGNORED": 10 + }, + "name": null, + "columns": [ + { + "name": "anime_id" + } + ], + "type": "FOREIGN KEY", + "expr": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + "references": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Reference", + "REFERENCES_OPTIONS": { + "MATCH": [ + 1, + "var" + ], + "ON DELETE": [ + 2, + "var" + ], + "ON UPDATE": [ + 3, + "var" + ] + }, + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "animes", + "column": null, + "expr": "`animes`", + "alias": null, + "function": null, + "subquery": null + }, + "columns": [ + "anime_id" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": { + "name": "ON DELETE", + "equals": false, + "expr": "CASCADE", + "value": "CASCADE" + }, + "3": { + "name": "ON UPDATE", + "equals": false, + "expr": "RESTRICT", + "value": "RESTRICT" + } + } + } + }, + "options": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "FIELD_OPTIONS": { + "_UNSORTED": true, + "NOT NULL": 1, + "NULL": 1, + "DEFAULT": [ + 2, + "expr", + { + "breakOnAlias": true + } + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "AUTO_INCREMENT": 3, + "PRIMARY": 4, + "PRIMARY KEY": 4, + "UNIQUE": 4, + "UNIQUE KEY": 4, + "COMMENT": [ + 5, + "var" + ], + "COLUMN_FORMAT": [ + 6, + "var" + ], + "ON UPDATE": [ + 7, + "expr" + ], + "GENERATED ALWAYS": 8, + "AS": [ + 9, + "expr", + { + "parenthesesDelimited": true + } + ], + "VIRTUAL": 10, + "PERSISTENT": 11, + "STORED": 11, + "CHECK": [ + 12, + "expr", + { + "parenthesesDelimited": true + } + ], + "INVISIBLE": 13, + "ENFORCED": 14, + "NOT": 15 + }, + "name": "animes_comments_users_fk", + "isConstraint": true, + "type": null, + "key": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Key", + "KEY_OPTIONS": { + "KEY_BLOCK_SIZE": [ + 1, + "var=" + ], + "USING": [ + 2, + "var" + ], + "WITH PARSER": [ + 3, + "var" + ], + "COMMENT": [ + 4, + "var" + ], + "CLUSTERING": [ + 4, + "var=" + ], + "ENGINE_ATTRIBUTE": [ + 5, + "var=" + ], + "SECONDARY_ENGINE_ATTRIBUTE": [ + 5, + "var=" + ], + "VISIBLE": 6, + "INVISIBLE": 6, + "IGNORED": 10, + "NOT IGNORED": 10 + }, + "name": null, + "columns": [ + { + "name": "user_id" + } + ], + "type": "FOREIGN KEY", + "expr": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + "references": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Reference", + "REFERENCES_OPTIONS": { + "MATCH": [ + 1, + "var" + ], + "ON DELETE": [ + 2, + "var" + ], + "ON UPDATE": [ + 3, + "var" + ] + }, + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "users", + "column": null, + "expr": "`users`", + "alias": null, + "function": null, + "subquery": null + }, + "columns": [ + "user_id" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": { + "name": "ON DELETE", + "equals": false, + "expr": "CASCADE", + "value": "CASCADE" + }, + "3": { + "name": "ON UPDATE", + "equals": false, + "expr": "RESTRICT", + "value": "RESTRICT" + } + } + } + }, + "options": null + } + ], + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [], + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "TABLE" + } + }, + "first": 0, + "last": 152 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTrigger.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTrigger.in new file mode 100644 index 0000000000..041a516cbf --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTrigger.in @@ -0,0 +1,2 @@ +CREATE TRIGGER ins_sum BEFORE INSERT ON account +FOR EACH ROW BEGIN SET @sum = @sum + NEW.amount END \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTrigger.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTrigger.out new file mode 100644 index 0000000000..dafd77bf0e --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateTrigger.out @@ -0,0 +1,995 @@ +{ + "query": "CREATE TRIGGER ins_sum BEFORE INSERT ON account\nFOR EACH ROW BEGIN SET @sum = @sum + NEW.amount END", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "CREATE TRIGGER ins_sum BEFORE INSERT ON account\nFOR EACH ROW BEGIN SET @sum = @sum + NEW.amount END", + "len": 99, + "last": 99, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TRIGGER", + "value": "TRIGGER", + "keyword": "TRIGGER", + "type": 1, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ins_sum", + "value": "ins_sum", + "keyword": null, + "type": 0, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "BEFORE", + "value": "BEFORE", + "keyword": "BEFORE", + "type": 1, + "flags": 3, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INSERT", + "value": "INSERT", + "keyword": "INSERT", + "type": 1, + "flags": 35, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON", + "value": "ON", + "keyword": "ON", + "type": 1, + "flags": 3, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "account", + "value": "account", + "keyword": "ACCOUNT", + "type": 1, + "flags": 1, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FOR EACH ROW", + "value": "FOR EACH ROW", + "keyword": "FOR EACH ROW", + "type": 1, + "flags": 7, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "BEGIN", + "value": "BEGIN", + "keyword": "BEGIN", + "type": 1, + "flags": 1, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": 1, + "flags": 11, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@sum", + "value": "sum", + "keyword": null, + "type": 8, + "flags": 1, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@sum", + "value": "sum", + "keyword": null, + "type": 8, + "flags": 1, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "+", + "value": "+", + "keyword": null, + "type": 2, + "flags": 1, + "position": 83 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NEW", + "value": "NEW", + "keyword": "NEW", + "type": 1, + "flags": 1, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "amount", + "value": "amount", + "keyword": null, + "type": 0, + "flags": 0, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 95 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "END", + "value": "END", + "keyword": "END", + "type": 1, + "flags": 1, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 34, + "idx": 35 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "OPTIONS": { + "TEMPORARY": 1, + "OR REPLACE": 2, + "ALGORITHM": [ + 3, + "var=" + ], + "DEFINER": [ + 4, + "expr=" + ], + "SQL SECURITY": [ + 5, + "var" + ], + "DATABASE": 6, + "EVENT": 6, + "FUNCTION": 6, + "INDEX": 6, + "UNIQUE INDEX": 6, + "FULLTEXT INDEX": 6, + "SPATIAL INDEX": 6, + "PROCEDURE": 6, + "SERVER": 6, + "TABLE": 6, + "TABLESPACE": 6, + "TRIGGER": 6, + "USER": 6, + "VIEW": 6, + "SCHEMA": 6, + "IF NOT EXISTS": 7 + }, + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var=" + ], + "CHARSET": [ + 1, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var=" + ], + "DEFAULT CHARSET": [ + 1, + "var=" + ], + "DEFAULT COLLATE": [ + 2, + "var=" + ], + "COLLATE": [ + 2, + "var=" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 2, + "var=" + ], + "AVG_ROW_LENGTH": [ + 3, + "var" + ], + "CHARACTER SET": [ + 4, + "var=" + ], + "CHARSET": [ + 4, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 4, + "var=" + ], + "DEFAULT CHARSET": [ + 4, + "var=" + ], + "CHECKSUM": [ + 5, + "var" + ], + "DEFAULT COLLATE": [ + 6, + "var=" + ], + "COLLATE": [ + 6, + "var=" + ], + "COMMENT": [ + 7, + "var=" + ], + "CONNECTION": [ + 8, + "var" + ], + "DATA DIRECTORY": [ + 9, + "var" + ], + "DELAY_KEY_WRITE": [ + 10, + "var" + ], + "INDEX DIRECTORY": [ + 11, + "var" + ], + "INSERT_METHOD": [ + 12, + "var" + ], + "KEY_BLOCK_SIZE": [ + 13, + "var" + ], + "MAX_ROWS": [ + 14, + "var" + ], + "MIN_ROWS": [ + 15, + "var" + ], + "PACK_KEYS": [ + 16, + "var" + ], + "PASSWORD": [ + 17, + "var" + ], + "ROW_FORMAT": [ + 18, + "var" + ], + "TABLESPACE": [ + 19, + "var" + ], + "STORAGE": [ + 20, + "var" + ], + "UNION": [ + 21, + "var" + ] + }, + "FUNC_OPTIONS": { + "NOT": [ + 2, + "var" + ], + "FUNCTION": [ + 3, + "var=" + ], + "PROCEDURE": [ + 3, + "var=" + ], + "CONTAINS": [ + 4, + "expr" + ], + "NO": [ + 4, + "var" + ], + "READS": [ + 4, + "var" + ], + "MODIFIES": [ + 4, + "expr" + ], + "SQL SECURITY": [ + 6, + "var" + ], + "LANGUAGE": [ + 7, + "var" + ], + "COMMENT": [ + 8, + "var" + ], + "CREATE": 1, + "DETERMINISTIC": 2, + "DATA": 5 + }, + "TRIGGER_OPTIONS": { + "BEFORE": 1, + "AFTER": 1, + "INSERT": 2, + "UPDATE": 2, + "DELETE": 2 + }, + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "ins_sum", + "column": null, + "expr": "ins_sum", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "BEFORE", + "2": "INSERT" + } + }, + "fields": null, + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "account", + "column": null, + "expr": "account", + "alias": null, + "function": null, + "subquery": null + }, + "return": null, + "parameters": null, + "body": [ + { + "@type": "@18" + }, + { + "@type": "@19" + }, + { + "@type": "@20" + }, + { + "@type": "@21" + }, + { + "@type": "@22" + }, + { + "@type": "@23" + }, + { + "@type": "@24" + }, + { + "@type": "@25" + }, + { + "@type": "@26" + }, + { + "@type": "@27" + }, + { + "@type": "@28" + }, + { + "@type": "@29" + }, + { + "@type": "@30" + }, + { + "@type": "@31" + }, + { + "@type": "@32" + }, + { + "@type": "@33" + }, + { + "@type": "@34" + }, + { + "@type": "@35" + } + ], + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "TRIGGER" + } + }, + "first": 0, + "last": 34 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateUser.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateUser.in new file mode 100644 index 0000000000..336646a81e --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateUser.in @@ -0,0 +1 @@ +CREATE USER test \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateUser.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateUser.out new file mode 100644 index 0000000000..28d8b779bb --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateUser.out @@ -0,0 +1,660 @@ +{ + "query": "CREATE USER test", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "CREATE USER test", + "len": 16, + "last": 16, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USER", + "value": "USER", + "keyword": "USER", + "type": 1, + "flags": 33, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "test", + "value": "test", + "keyword": null, + "type": 0, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 6, + "idx": 6 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "OPTIONS": { + "TEMPORARY": 1, + "OR REPLACE": 2, + "ALGORITHM": [ + 3, + "var=" + ], + "DEFINER": [ + 4, + "expr=" + ], + "SQL SECURITY": [ + 5, + "var" + ], + "DATABASE": 6, + "EVENT": 6, + "FUNCTION": 6, + "INDEX": 6, + "UNIQUE INDEX": 6, + "FULLTEXT INDEX": 6, + "SPATIAL INDEX": 6, + "PROCEDURE": 6, + "SERVER": 6, + "TABLE": 6, + "TABLESPACE": 6, + "TRIGGER": 6, + "USER": 6, + "VIEW": 6, + "SCHEMA": 6, + "IF NOT EXISTS": 7 + }, + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var=" + ], + "CHARSET": [ + 1, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var=" + ], + "DEFAULT CHARSET": [ + 1, + "var=" + ], + "DEFAULT COLLATE": [ + 2, + "var=" + ], + "COLLATE": [ + 2, + "var=" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 2, + "var=" + ], + "AVG_ROW_LENGTH": [ + 3, + "var" + ], + "CHARACTER SET": [ + 4, + "var=" + ], + "CHARSET": [ + 4, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 4, + "var=" + ], + "DEFAULT CHARSET": [ + 4, + "var=" + ], + "CHECKSUM": [ + 5, + "var" + ], + "DEFAULT COLLATE": [ + 6, + "var=" + ], + "COLLATE": [ + 6, + "var=" + ], + "COMMENT": [ + 7, + "var=" + ], + "CONNECTION": [ + 8, + "var" + ], + "DATA DIRECTORY": [ + 9, + "var" + ], + "DELAY_KEY_WRITE": [ + 10, + "var" + ], + "INDEX DIRECTORY": [ + 11, + "var" + ], + "INSERT_METHOD": [ + 12, + "var" + ], + "KEY_BLOCK_SIZE": [ + 13, + "var" + ], + "MAX_ROWS": [ + 14, + "var" + ], + "MIN_ROWS": [ + 15, + "var" + ], + "PACK_KEYS": [ + 16, + "var" + ], + "PASSWORD": [ + 17, + "var" + ], + "ROW_FORMAT": [ + 18, + "var" + ], + "TABLESPACE": [ + 19, + "var" + ], + "STORAGE": [ + 20, + "var" + ], + "UNION": [ + 21, + "var" + ] + }, + "FUNC_OPTIONS": { + "NOT": [ + 2, + "var" + ], + "FUNCTION": [ + 3, + "var=" + ], + "PROCEDURE": [ + 3, + "var=" + ], + "CONTAINS": [ + 4, + "expr" + ], + "NO": [ + 4, + "var" + ], + "READS": [ + 4, + "var" + ], + "MODIFIES": [ + 4, + "expr" + ], + "SQL SECURITY": [ + 6, + "var" + ], + "LANGUAGE": [ + 7, + "var" + ], + "COMMENT": [ + 8, + "var" + ], + "CREATE": 1, + "DETERMINISTIC": 2, + "DATA": 5 + }, + "TRIGGER_OPTIONS": { + "BEFORE": 1, + "AFTER": 1, + "INSERT": 2, + "UPDATE": 2, + "DELETE": 2 + }, + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "test", + "column": null, + "expr": "test", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": null, + "fields": null, + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [], + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "USER" + } + }, + "first": 0, + "last": 5 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateView.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateView.in new file mode 100644 index 0000000000..1bd25ed8b7 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateView.in @@ -0,0 +1 @@ +CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY INVOKER VIEW `sakila`.`actor_info` AS select `a`.`actor_id` AS `actor_id`,`a`.`first_name` AS `first_name`,`a`.`last_name` AS `last_name`,group_concat(distinct concat(`c`.`name`,': ',(select group_concat(`f`.`title` order by `f`.`title` ASC separator ', ') from ((`sakila`.`film` `f` join `sakila`.`film_category` `fc` on((`f`.`film_id` = `fc`.`film_id`))) join `sakila`.`film_actor` `fa` on((`f`.`film_id` = `fa`.`film_id`))) where ((`fc`.`category_id` = `c`.`category_id`) and (`fa`.`actor_id` = `a`.`actor_id`)))) order by `c`.`name` ASC separator '; ') AS `film_info` from (((`sakila`.`actor` `a` left join `sakila`.`film_actor` `fa` on((`a`.`actor_id` = `fa`.`actor_id`))) left join `sakila`.`film_category` `fc` on((`fa`.`film_id` = `fc`.`film_id`))) left join `sakila`.`category` `c` on((`fc`.`category_id` = `c`.`category_id`))) group by `a`.`actor_id`,`a`.`first_name`,`a`.`last_name` \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateView.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateView.out new file mode 100644 index 0000000000..6506af8f32 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateView.out @@ -0,0 +1,3592 @@ +{ + "query": "CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY INVOKER VIEW `sakila`.`actor_info` AS select `a`.`actor_id` AS `actor_id`,`a`.`first_name` AS `first_name`,`a`.`last_name` AS `last_name`,group_concat(distinct concat(`c`.`name`,': ',(select group_concat(`f`.`title` order by `f`.`title` ASC separator ', ') from ((`sakila`.`film` `f` join `sakila`.`film_category` `fc` on((`f`.`film_id` = `fc`.`film_id`))) join `sakila`.`film_actor` `fa` on((`f`.`film_id` = `fa`.`film_id`))) where ((`fc`.`category_id` = `c`.`category_id`) and (`fa`.`actor_id` = `a`.`actor_id`)))) order by `c`.`name` ASC separator '; ') AS `film_info` from (((`sakila`.`actor` `a` left join `sakila`.`film_actor` `fa` on((`a`.`actor_id` = `fa`.`actor_id`))) left join `sakila`.`film_category` `fc` on((`fa`.`film_id` = `fc`.`film_id`))) left join `sakila`.`category` `c` on((`fc`.`category_id` = `c`.`category_id`))) group by `a`.`actor_id`,`a`.`first_name`,`a`.`last_name`", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` SQL SECURITY INVOKER VIEW `sakila`.`actor_info` AS select `a`.`actor_id` AS `actor_id`,`a`.`first_name` AS `first_name`,`a`.`last_name` AS `last_name`,group_concat(distinct concat(`c`.`name`,': ',(select group_concat(`f`.`title` order by `f`.`title` ASC separator ', ') from ((`sakila`.`film` `f` join `sakila`.`film_category` `fc` on((`f`.`film_id` = `fc`.`film_id`))) join `sakila`.`film_actor` `fa` on((`f`.`film_id` = `fa`.`film_id`))) where ((`fc`.`category_id` = `c`.`category_id`) and (`fa`.`actor_id` = `a`.`actor_id`)))) order by `c`.`name` ASC separator '; ') AS `film_info` from (((`sakila`.`actor` `a` left join `sakila`.`film_actor` `fa` on((`a`.`actor_id` = `fa`.`actor_id`))) left join `sakila`.`film_category` `fc` on((`fa`.`film_id` = `fc`.`film_id`))) left join `sakila`.`category` `c` on((`fc`.`category_id` = `c`.`category_id`))) group by `a`.`actor_id`,`a`.`first_name`,`a`.`last_name`", + "len": 960, + "last": 960, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALGORITHM", + "value": "ALGORITHM", + "keyword": "ALGORITHM", + "type": 1, + "flags": 1, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNDEFINED", + "value": "UNDEFINED", + "keyword": "UNDEFINED", + "type": 1, + "flags": 1, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFINER", + "value": "DEFINER", + "keyword": "DEFINER", + "type": 1, + "flags": 1, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`root`@`localhost`", + "value": "root@localhost", + "keyword": null, + "type": 8, + "flags": 4, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SQL SECURITY", + "value": "SQL SECURITY", + "keyword": "SQL SECURITY", + "type": 1, + "flags": 7, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INVOKER", + "value": "INVOKER", + "keyword": "INVOKER", + "type": 1, + "flags": 1, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VIEW", + "value": "VIEW", + "keyword": "VIEW", + "type": 1, + "flags": 1, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`sakila`", + "value": "sakila", + "keyword": null, + "type": 8, + "flags": 2, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`actor_info`", + "value": "actor_info", + "keyword": null, + "type": 8, + "flags": 2, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 101 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 102 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 104 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "select", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 105 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 111 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`a`", + "value": "a", + "keyword": null, + "type": 8, + "flags": 2, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 115 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`actor_id`", + "value": "actor_id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 116 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 126 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 127 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 129 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`actor_id`", + "value": "actor_id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 130 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 140 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`a`", + "value": "a", + "keyword": null, + "type": 8, + "flags": 2, + "position": 141 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 144 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`first_name`", + "value": "first_name", + "keyword": null, + "type": 8, + "flags": 2, + "position": 145 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 157 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 158 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 160 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`first_name`", + "value": "first_name", + "keyword": null, + "type": 8, + "flags": 2, + "position": 161 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 173 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`a`", + "value": "a", + "keyword": null, + "type": 8, + "flags": 2, + "position": 174 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 177 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`last_name`", + "value": "last_name", + "keyword": null, + "type": 8, + "flags": 2, + "position": 178 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 189 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 190 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 192 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`last_name`", + "value": "last_name", + "keyword": null, + "type": 8, + "flags": 2, + "position": 193 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 204 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "group_concat", + "value": "group_concat", + "keyword": "GROUP_CONCAT", + "type": 1, + "flags": 33, + "position": 205 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 217 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "distinct", + "value": "DISTINCT", + "keyword": "DISTINCT", + "type": 1, + "flags": 3, + "position": 218 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 226 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "concat", + "value": "concat", + "keyword": "CONCAT", + "type": 1, + "flags": 33, + "position": 227 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 233 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`c`", + "value": "c", + "keyword": null, + "type": 8, + "flags": 2, + "position": 234 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 237 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`name`", + "value": "name", + "keyword": null, + "type": 8, + "flags": 2, + "position": 238 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 244 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "': '", + "value": ": ", + "keyword": null, + "type": 7, + "flags": 1, + "position": 245 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 249 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 250 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "select", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 251 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 257 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "group_concat", + "value": "group_concat", + "keyword": "GROUP_CONCAT", + "type": 1, + "flags": 33, + "position": 258 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 270 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`f`", + "value": "f", + "keyword": null, + "type": 8, + "flags": 2, + "position": 271 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 274 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`title`", + "value": "title", + "keyword": null, + "type": 8, + "flags": 2, + "position": 275 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 282 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "order by", + "value": "ORDER BY", + "keyword": "ORDER BY", + "type": 1, + "flags": 7, + "position": 283 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 291 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`f`", + "value": "f", + "keyword": null, + "type": 8, + "flags": 2, + "position": 292 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 295 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`title`", + "value": "title", + "keyword": null, + "type": 8, + "flags": 2, + "position": 296 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 303 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ASC", + "value": "ASC", + "keyword": "ASC", + "type": 1, + "flags": 3, + "position": 304 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 307 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "separator", + "value": "SEPARATOR", + "keyword": "SEPARATOR", + "type": 1, + "flags": 3, + "position": 308 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 317 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "', '", + "value": ", ", + "keyword": null, + "type": 7, + "flags": 1, + "position": 318 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 322 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 323 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "from", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 324 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 328 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 329 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 330 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`sakila`", + "value": "sakila", + "keyword": null, + "type": 8, + "flags": 2, + "position": 331 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 339 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`film`", + "value": "film", + "keyword": null, + "type": 8, + "flags": 2, + "position": 340 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 346 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`f`", + "value": "f", + "keyword": null, + "type": 8, + "flags": 2, + "position": 347 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 350 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "join", + "value": "JOIN", + "keyword": "JOIN", + "type": 1, + "flags": 3, + "position": 351 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 355 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`sakila`", + "value": "sakila", + "keyword": null, + "type": 8, + "flags": 2, + "position": 356 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 364 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`film_category`", + "value": "film_category", + "keyword": null, + "type": 8, + "flags": 2, + "position": 365 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 380 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`fc`", + "value": "fc", + "keyword": null, + "type": 8, + "flags": 2, + "position": 381 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 385 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "on", + "value": "ON", + "keyword": "ON", + "type": 1, + "flags": 3, + "position": 386 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 388 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 389 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`f`", + "value": "f", + "keyword": null, + "type": 8, + "flags": 2, + "position": 390 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 393 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`film_id`", + "value": "film_id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 394 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 403 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 404 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 405 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`fc`", + "value": "fc", + "keyword": null, + "type": 8, + "flags": 2, + "position": 406 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 410 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`film_id`", + "value": "film_id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 411 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 420 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 421 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 422 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 423 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "join", + "value": "JOIN", + "keyword": "JOIN", + "type": 1, + "flags": 3, + "position": 424 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 428 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`sakila`", + "value": "sakila", + "keyword": null, + "type": 8, + "flags": 2, + "position": 429 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 437 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`film_actor`", + "value": "film_actor", + "keyword": null, + "type": 8, + "flags": 2, + "position": 438 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 450 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`fa`", + "value": "fa", + "keyword": null, + "type": 8, + "flags": 2, + "position": 451 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 455 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "on", + "value": "ON", + "keyword": "ON", + "type": 1, + "flags": 3, + "position": 456 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 458 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 459 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`f`", + "value": "f", + "keyword": null, + "type": 8, + "flags": 2, + "position": 460 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 463 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`film_id`", + "value": "film_id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 464 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 473 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 474 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 475 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`fa`", + "value": "fa", + "keyword": null, + "type": 8, + "flags": 2, + "position": 476 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 480 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`film_id`", + "value": "film_id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 481 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 490 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 491 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 492 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 493 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "where", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 494 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 499 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 500 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 501 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`fc`", + "value": "fc", + "keyword": null, + "type": 8, + "flags": 2, + "position": 502 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 506 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`category_id`", + "value": "category_id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 507 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 520 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 521 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 522 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`c`", + "value": "c", + "keyword": null, + "type": 8, + "flags": 2, + "position": 523 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 526 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`category_id`", + "value": "category_id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 527 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 540 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 541 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "and", + "value": "AND", + "keyword": "AND", + "type": 1, + "flags": 3, + "position": 542 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 545 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 546 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`fa`", + "value": "fa", + "keyword": null, + "type": 8, + "flags": 2, + "position": 547 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 551 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`actor_id`", + "value": "actor_id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 552 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 562 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 563 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 564 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`a`", + "value": "a", + "keyword": null, + "type": 8, + "flags": 2, + "position": 565 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 568 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`actor_id`", + "value": "actor_id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 569 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 579 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 580 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 581 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 582 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 583 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "order by", + "value": "ORDER BY", + "keyword": "ORDER BY", + "type": 1, + "flags": 7, + "position": 584 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 592 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`c`", + "value": "c", + "keyword": null, + "type": 8, + "flags": 2, + "position": 593 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 596 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`name`", + "value": "name", + "keyword": null, + "type": 8, + "flags": 2, + "position": 597 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 603 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ASC", + "value": "ASC", + "keyword": "ASC", + "type": 1, + "flags": 3, + "position": 604 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 607 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "separator", + "value": "SEPARATOR", + "keyword": "SEPARATOR", + "type": 1, + "flags": 3, + "position": 608 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 617 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'; '", + "value": "; ", + "keyword": null, + "type": 7, + "flags": 1, + "position": 618 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 622 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 623 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 624 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 626 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`film_info`", + "value": "film_info", + "keyword": null, + "type": 8, + "flags": 2, + "position": 627 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 638 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "from", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 639 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 643 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 644 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 645 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 646 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`sakila`", + "value": "sakila", + "keyword": null, + "type": 8, + "flags": 2, + "position": 647 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 655 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`actor`", + "value": "actor", + "keyword": null, + "type": 8, + "flags": 2, + "position": 656 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 663 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`a`", + "value": "a", + "keyword": null, + "type": 8, + "flags": 2, + "position": 664 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 667 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "left join", + "value": "LEFT JOIN", + "keyword": "LEFT JOIN", + "type": 1, + "flags": 7, + "position": 668 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 677 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`sakila`", + "value": "sakila", + "keyword": null, + "type": 8, + "flags": 2, + "position": 678 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 686 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`film_actor`", + "value": "film_actor", + "keyword": null, + "type": 8, + "flags": 2, + "position": 687 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 699 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`fa`", + "value": "fa", + "keyword": null, + "type": 8, + "flags": 2, + "position": 700 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 704 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "on", + "value": "ON", + "keyword": "ON", + "type": 1, + "flags": 3, + "position": 705 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 707 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 708 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`a`", + "value": "a", + "keyword": null, + "type": 8, + "flags": 2, + "position": 709 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 712 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`actor_id`", + "value": "actor_id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 713 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 723 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 724 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 725 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`fa`", + "value": "fa", + "keyword": null, + "type": 8, + "flags": 2, + "position": 726 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 730 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`actor_id`", + "value": "actor_id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 731 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 741 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 742 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 743 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 744 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "left join", + "value": "LEFT JOIN", + "keyword": "LEFT JOIN", + "type": 1, + "flags": 7, + "position": 745 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 754 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`sakila`", + "value": "sakila", + "keyword": null, + "type": 8, + "flags": 2, + "position": 755 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 763 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`film_category`", + "value": "film_category", + "keyword": null, + "type": 8, + "flags": 2, + "position": 764 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 779 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`fc`", + "value": "fc", + "keyword": null, + "type": 8, + "flags": 2, + "position": 780 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 784 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "on", + "value": "ON", + "keyword": "ON", + "type": 1, + "flags": 3, + "position": 785 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 787 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 788 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`fa`", + "value": "fa", + "keyword": null, + "type": 8, + "flags": 2, + "position": 789 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 793 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`film_id`", + "value": "film_id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 794 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 803 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 804 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 805 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`fc`", + "value": "fc", + "keyword": null, + "type": 8, + "flags": 2, + "position": 806 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 810 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`film_id`", + "value": "film_id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 811 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 820 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 821 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 822 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 823 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "left join", + "value": "LEFT JOIN", + "keyword": "LEFT JOIN", + "type": 1, + "flags": 7, + "position": 824 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 833 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`sakila`", + "value": "sakila", + "keyword": null, + "type": 8, + "flags": 2, + "position": 834 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 842 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`category`", + "value": "category", + "keyword": null, + "type": 8, + "flags": 2, + "position": 843 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 853 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`c`", + "value": "c", + "keyword": null, + "type": 8, + "flags": 2, + "position": 854 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 857 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "on", + "value": "ON", + "keyword": "ON", + "type": 1, + "flags": 3, + "position": 858 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 860 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 861 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`fc`", + "value": "fc", + "keyword": null, + "type": 8, + "flags": 2, + "position": 862 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 866 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`category_id`", + "value": "category_id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 867 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 880 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 881 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 882 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`c`", + "value": "c", + "keyword": null, + "type": 8, + "flags": 2, + "position": 883 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 886 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`category_id`", + "value": "category_id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 887 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 900 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 901 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 902 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 903 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "group by", + "value": "GROUP BY", + "keyword": "GROUP BY", + "type": 1, + "flags": 7, + "position": 904 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 912 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`a`", + "value": "a", + "keyword": null, + "type": 8, + "flags": 2, + "position": 913 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 916 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`actor_id`", + "value": "actor_id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 917 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 927 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`a`", + "value": "a", + "keyword": null, + "type": 8, + "flags": 2, + "position": 928 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 931 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`first_name`", + "value": "first_name", + "keyword": null, + "type": 8, + "flags": 2, + "position": 932 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 944 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`a`", + "value": "a", + "keyword": null, + "type": 8, + "flags": 2, + "position": 945 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 948 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`last_name`", + "value": "last_name", + "keyword": null, + "type": 8, + "flags": 2, + "position": 949 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 286, + "idx": 286 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "OPTIONS": { + "TEMPORARY": 1, + "OR REPLACE": 2, + "ALGORITHM": [ + 3, + "var=" + ], + "DEFINER": [ + 4, + "expr=" + ], + "SQL SECURITY": [ + 5, + "var" + ], + "DATABASE": 6, + "EVENT": 6, + "FUNCTION": 6, + "INDEX": 6, + "UNIQUE INDEX": 6, + "FULLTEXT INDEX": 6, + "SPATIAL INDEX": 6, + "PROCEDURE": 6, + "SERVER": 6, + "TABLE": 6, + "TABLESPACE": 6, + "TRIGGER": 6, + "USER": 6, + "VIEW": 6, + "SCHEMA": 6, + "IF NOT EXISTS": 7 + }, + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var=" + ], + "CHARSET": [ + 1, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var=" + ], + "DEFAULT CHARSET": [ + 1, + "var=" + ], + "DEFAULT COLLATE": [ + 2, + "var=" + ], + "COLLATE": [ + 2, + "var=" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 2, + "var=" + ], + "AVG_ROW_LENGTH": [ + 3, + "var" + ], + "CHARACTER SET": [ + 4, + "var=" + ], + "CHARSET": [ + 4, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 4, + "var=" + ], + "DEFAULT CHARSET": [ + 4, + "var=" + ], + "CHECKSUM": [ + 5, + "var" + ], + "DEFAULT COLLATE": [ + 6, + "var=" + ], + "COLLATE": [ + 6, + "var=" + ], + "COMMENT": [ + 7, + "var=" + ], + "CONNECTION": [ + 8, + "var" + ], + "DATA DIRECTORY": [ + 9, + "var" + ], + "DELAY_KEY_WRITE": [ + 10, + "var" + ], + "INDEX DIRECTORY": [ + 11, + "var" + ], + "INSERT_METHOD": [ + 12, + "var" + ], + "KEY_BLOCK_SIZE": [ + 13, + "var" + ], + "MAX_ROWS": [ + 14, + "var" + ], + "MIN_ROWS": [ + 15, + "var" + ], + "PACK_KEYS": [ + 16, + "var" + ], + "PASSWORD": [ + 17, + "var" + ], + "ROW_FORMAT": [ + 18, + "var" + ], + "TABLESPACE": [ + 19, + "var" + ], + "STORAGE": [ + 20, + "var" + ], + "UNION": [ + 21, + "var" + ] + }, + "FUNC_OPTIONS": { + "NOT": [ + 2, + "var" + ], + "FUNCTION": [ + 3, + "var=" + ], + "PROCEDURE": [ + 3, + "var=" + ], + "CONTAINS": [ + 4, + "expr" + ], + "NO": [ + 4, + "var" + ], + "READS": [ + 4, + "var" + ], + "MODIFIES": [ + 4, + "expr" + ], + "SQL SECURITY": [ + 6, + "var" + ], + "LANGUAGE": [ + 7, + "var" + ], + "COMMENT": [ + 8, + "var" + ], + "CREATE": 1, + "DETERMINISTIC": 2, + "DATA": 5 + }, + "TRIGGER_OPTIONS": { + "BEFORE": 1, + "AFTER": 1, + "INSERT": 2, + "UPDATE": 2, + "DELETE": 2 + }, + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": "sakila", + "table": "actor_info", + "column": null, + "expr": "`sakila`.`actor_info`", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": null, + "fields": null, + "select": { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "a", + "column": "actor_id", + "expr": "`a`.`actor_id`", + "alias": "actor_id", + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "a", + "column": "first_name", + "expr": "`a`.`first_name`", + "alias": "first_name", + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "a", + "column": "last_name", + "expr": "`a`.`last_name`", + "alias": "last_name", + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "group_concat(distinct concat(`c`.`name`,': ',(select group_concat(`f`.`title` order by `f`.`title` ASC separator ', ') from ((`sakila`.`film` `f` join `sakila`.`film_category` `fc` on((`f`.`film_id` = `fc`.`film_id`))) join `sakila`.`film_actor` `fa` on((`f`.`film_id` = `fa`.`film_id`))) where ((`fc`.`category_id` = `c`.`category_id`) and (`fa`.`actor_id` = `a`.`actor_id`)))) order by `c`.`name` ASC separator '; ')", + "alias": "film_info", + "function": "group_concat", + "subquery": "SELECT" + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "(((`sakila`.`actor` `a` left join `sakila`.`film_actor` `fa` on((`a`.`actor_id` = `fa`.`actor_id`))) left join `sakila`.`film_category` `fc` on((`fa`.`film_id` = `fc`.`film_id`))) left join `sakila`.`category` `c` on((`fc`.`category_id` = `c`.`category_id`)))", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": null, + "group": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "type": null, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "a", + "column": "actor_id", + "expr": "`a`.`actor_id`", + "alias": null, + "function": null, + "subquery": null + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "type": null, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "a", + "column": "first_name", + "expr": "`a`.`first_name`", + "alias": null, + "function": null, + "subquery": null + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "type": null, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "a", + "column": "last_name", + "expr": "`a`.`last_name`", + "alias": null, + "function": null, + "subquery": null + } + } + ], + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 22, + "last": 284 + }, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [ + { + "@type": "@286" + } + ], + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": { + "name": "ALGORITHM", + "equals": true, + "expr": "UNDEFINED", + "value": "UNDEFINED" + }, + "4": { + "name": "DEFINER", + "equals": true, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "root@localhost", + "expr": "`root`@`localhost`", + "alias": null, + "function": null, + "subquery": null + }, + "value": "`root`@`localhost`" + }, + "5": { + "name": "SQL SECURITY", + "equals": false, + "expr": "INVOKER", + "value": "INVOKER" + }, + "6": "VIEW" + } + }, + "first": 0, + "last": 285 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateView2.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateView2.in new file mode 100644 index 0000000000..7e64abc378 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateView2.in @@ -0,0 +1,2 @@ +CREATE VIEW myView (vid, vfirstname) AS +SELECT id, first_name FROM employee WHERE id = 1; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateView2.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateView2.out new file mode 100644 index 0000000000..e440b9e290 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateView2.out @@ -0,0 +1,989 @@ +{ + "query": "CREATE VIEW myView (vid, vfirstname) AS\nSELECT id, first_name FROM employee WHERE id = 1;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "CREATE VIEW myView (vid, vfirstname) AS\nSELECT id, first_name FROM employee WHERE id = 1;", + "len": 89, + "last": 89, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VIEW", + "value": "VIEW", + "keyword": "VIEW", + "type": 1, + "flags": 1, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "myView", + "value": "myView", + "keyword": null, + "type": 0, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "vid", + "value": "vid", + "keyword": null, + "type": 0, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "vfirstname", + "value": "vfirstname", + "keyword": null, + "type": 0, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "first_name", + "value": "first_name", + "keyword": null, + "type": 0, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "employee", + "value": "employee", + "keyword": null, + "type": 0, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 35, + "idx": 35 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "OPTIONS": { + "TEMPORARY": 1, + "OR REPLACE": 2, + "ALGORITHM": [ + 3, + "var=" + ], + "DEFINER": [ + 4, + "expr=" + ], + "SQL SECURITY": [ + 5, + "var" + ], + "DATABASE": 6, + "EVENT": 6, + "FUNCTION": 6, + "INDEX": 6, + "UNIQUE INDEX": 6, + "FULLTEXT INDEX": 6, + "SPATIAL INDEX": 6, + "PROCEDURE": 6, + "SERVER": 6, + "TABLE": 6, + "TABLESPACE": 6, + "TRIGGER": 6, + "USER": 6, + "VIEW": 6, + "SCHEMA": 6, + "IF NOT EXISTS": 7 + }, + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var=" + ], + "CHARSET": [ + 1, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var=" + ], + "DEFAULT CHARSET": [ + 1, + "var=" + ], + "DEFAULT COLLATE": [ + 2, + "var=" + ], + "COLLATE": [ + 2, + "var=" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 2, + "var=" + ], + "AVG_ROW_LENGTH": [ + 3, + "var" + ], + "CHARACTER SET": [ + 4, + "var=" + ], + "CHARSET": [ + 4, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 4, + "var=" + ], + "DEFAULT CHARSET": [ + 4, + "var=" + ], + "CHECKSUM": [ + 5, + "var" + ], + "DEFAULT COLLATE": [ + 6, + "var=" + ], + "COLLATE": [ + 6, + "var=" + ], + "COMMENT": [ + 7, + "var=" + ], + "CONNECTION": [ + 8, + "var" + ], + "DATA DIRECTORY": [ + 9, + "var" + ], + "DELAY_KEY_WRITE": [ + 10, + "var" + ], + "INDEX DIRECTORY": [ + 11, + "var" + ], + "INSERT_METHOD": [ + 12, + "var" + ], + "KEY_BLOCK_SIZE": [ + 13, + "var" + ], + "MAX_ROWS": [ + 14, + "var" + ], + "MIN_ROWS": [ + 15, + "var" + ], + "PACK_KEYS": [ + 16, + "var" + ], + "PASSWORD": [ + 17, + "var" + ], + "ROW_FORMAT": [ + 18, + "var" + ], + "TABLESPACE": [ + 19, + "var" + ], + "STORAGE": [ + 20, + "var" + ], + "UNION": [ + 21, + "var" + ] + }, + "FUNC_OPTIONS": { + "NOT": [ + 2, + "var" + ], + "FUNCTION": [ + 3, + "var=" + ], + "PROCEDURE": [ + 3, + "var=" + ], + "CONTAINS": [ + 4, + "expr" + ], + "NO": [ + 4, + "var" + ], + "READS": [ + 4, + "var" + ], + "MODIFIES": [ + 4, + "expr" + ], + "SQL SECURITY": [ + 6, + "var" + ], + "LANGUAGE": [ + 7, + "var" + ], + "COMMENT": [ + 8, + "var" + ], + "CREATE": 1, + "DETERMINISTIC": 2, + "DATA": 5 + }, + "TRIGGER_OPTIONS": { + "BEFORE": 1, + "AFTER": 1, + "INSERT": 2, + "UPDATE": 2, + "DELETE": 2 + }, + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "myView", + "column": null, + "expr": "myView", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": null, + "fields": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "raw": [ + "vid", + "vfirstname" + ], + "values": [ + "vid", + "vfirstname" + ] + }, + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [ + { + "@type": "@16" + }, + { + "@type": "@17" + }, + { + "@type": "@18" + }, + { + "@type": "@19" + }, + { + "@type": "@20" + }, + { + "@type": "@21" + }, + { + "@type": "@22" + }, + { + "@type": "@23" + }, + { + "@type": "@24" + }, + { + "@type": "@25" + }, + { + "@type": "@26" + }, + { + "@type": "@27" + }, + { + "@type": "@28" + }, + { + "@type": "@29" + }, + { + "@type": "@30" + }, + { + "@type": "@31" + }, + { + "@type": "@32" + }, + { + "@type": "@33" + }, + { + "@type": "@34" + } + ], + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "VIEW" + } + }, + "first": 0, + "last": 33 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateView3.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateView3.in new file mode 100644 index 0000000000..5de3a133c6 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateView3.in @@ -0,0 +1,5 @@ +CREATE VIEW GoodStudent AS + SELECT `one space`, `two spaces` + FROM `Une table espace` + WHERE `one space` > 3.0 + WITH CHECK OPTION diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateView3.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateView3.out new file mode 100644 index 0000000000..dd7559ef4f --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateView3.out @@ -0,0 +1,1219 @@ +{ + "query": "CREATE VIEW GoodStudent AS\n SELECT `one space`, `two spaces`\n FROM `Une table espace`\n WHERE `one space` > 3.0\n WITH CHECK OPTION\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "CREATE VIEW GoodStudent AS\n SELECT `one space`, `two spaces`\n FROM `Une table espace`\n WHERE `one space` > 3.0\n WITH CHECK OPTION\n", + "len": 148, + "last": 148, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VIEW", + "value": "VIEW", + "keyword": "VIEW", + "type": 1, + "flags": 1, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "GoodStudent", + "value": "GoodStudent", + "keyword": null, + "type": 0, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`one space`", + "value": "one space", + "keyword": null, + "type": 8, + "flags": 2, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`two spaces`", + "value": "two spaces", + "keyword": null, + "type": 8, + "flags": 2, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`Une table espace`", + "value": "Une table espace", + "keyword": null, + "type": 8, + "flags": 2, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 102 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`one space`", + "value": "one space", + "keyword": null, + "type": 8, + "flags": 2, + "position": 108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 119 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ">", + "value": ">", + "keyword": null, + "type": 2, + "flags": 2, + "position": 120 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3.0", + "value": 3.0, + "keyword": null, + "type": 6, + "flags": 2, + "position": 122 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 125 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WITH", + "value": "WITH", + "keyword": "WITH", + "type": 1, + "flags": 3, + "position": 130 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 134 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CHECK", + "value": "CHECK", + "keyword": "CHECK", + "type": 1, + "flags": 3, + "position": 135 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 140 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "OPTION", + "value": "OPTION", + "keyword": "OPTION", + "type": 1, + "flags": 3, + "position": 141 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 147 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 34, + "idx": 34 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "OPTIONS": { + "TEMPORARY": 1, + "OR REPLACE": 2, + "ALGORITHM": [ + 3, + "var=" + ], + "DEFINER": [ + 4, + "expr=" + ], + "SQL SECURITY": [ + 5, + "var" + ], + "DATABASE": 6, + "EVENT": 6, + "FUNCTION": 6, + "INDEX": 6, + "UNIQUE INDEX": 6, + "FULLTEXT INDEX": 6, + "SPATIAL INDEX": 6, + "PROCEDURE": 6, + "SERVER": 6, + "TABLE": 6, + "TABLESPACE": 6, + "TRIGGER": 6, + "USER": 6, + "VIEW": 6, + "SCHEMA": 6, + "IF NOT EXISTS": 7 + }, + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var=" + ], + "CHARSET": [ + 1, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var=" + ], + "DEFAULT CHARSET": [ + 1, + "var=" + ], + "DEFAULT COLLATE": [ + 2, + "var=" + ], + "COLLATE": [ + 2, + "var=" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 2, + "var=" + ], + "AVG_ROW_LENGTH": [ + 3, + "var" + ], + "CHARACTER SET": [ + 4, + "var=" + ], + "CHARSET": [ + 4, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 4, + "var=" + ], + "DEFAULT CHARSET": [ + 4, + "var=" + ], + "CHECKSUM": [ + 5, + "var" + ], + "DEFAULT COLLATE": [ + 6, + "var=" + ], + "COLLATE": [ + 6, + "var=" + ], + "COMMENT": [ + 7, + "var=" + ], + "CONNECTION": [ + 8, + "var" + ], + "DATA DIRECTORY": [ + 9, + "var" + ], + "DELAY_KEY_WRITE": [ + 10, + "var" + ], + "INDEX DIRECTORY": [ + 11, + "var" + ], + "INSERT_METHOD": [ + 12, + "var" + ], + "KEY_BLOCK_SIZE": [ + 13, + "var" + ], + "MAX_ROWS": [ + 14, + "var" + ], + "MIN_ROWS": [ + 15, + "var" + ], + "PACK_KEYS": [ + 16, + "var" + ], + "PASSWORD": [ + 17, + "var" + ], + "ROW_FORMAT": [ + 18, + "var" + ], + "TABLESPACE": [ + 19, + "var" + ], + "STORAGE": [ + 20, + "var" + ], + "UNION": [ + 21, + "var" + ] + }, + "FUNC_OPTIONS": { + "NOT": [ + 2, + "var" + ], + "FUNCTION": [ + 3, + "var=" + ], + "PROCEDURE": [ + 3, + "var=" + ], + "CONTAINS": [ + 4, + "expr" + ], + "NO": [ + 4, + "var" + ], + "READS": [ + 4, + "var" + ], + "MODIFIES": [ + 4, + "expr" + ], + "SQL SECURITY": [ + 6, + "var" + ], + "LANGUAGE": [ + 7, + "var" + ], + "COMMENT": [ + 8, + "var" + ], + "CREATE": 1, + "DETERMINISTIC": 2, + "DATA": 5 + }, + "TRIGGER_OPTIONS": { + "BEFORE": 1, + "AFTER": 1, + "INSERT": 2, + "UPDATE": 2, + "DELETE": 2 + }, + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "GoodStudent", + "column": null, + "expr": "GoodStudent", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": null, + "fields": null, + "select": { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "one space", + "expr": "`one space`", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "two spaces", + "expr": "`two spaces`", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "Une table espace", + "column": null, + "expr": "`Une table espace`", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [ + "one space" + ], + "isOperator": false, + "expr": "`one space` > 3.0" + } + ], + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 8, + "last": 26 + }, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [ + { + "@type": "@28" + }, + { + "@type": "@29" + }, + { + "@type": "@30" + }, + { + "@type": "@31" + }, + { + "@type": "@32" + }, + { + "@type": "@33" + }, + { + "@type": "@34" + } + ], + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "VIEW" + } + }, + "first": 0, + "last": 33 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "A new statement was found, but no delimiter between it and the previous one.", + { + "@type": "@29" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateView4.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateView4.in new file mode 100644 index 0000000000..dfa6fbfb96 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateView4.in @@ -0,0 +1 @@ +CREATE VIEW v (mycol) AS SELECT 'abc'; diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateView4.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateView4.out new file mode 100644 index 0000000000..b34d8e744d --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateView4.out @@ -0,0 +1,789 @@ +{ + "query": "CREATE VIEW v (mycol) AS SELECT 'abc';\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "CREATE VIEW v (mycol) AS SELECT 'abc';\n", + "len": 39, + "last": 39, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VIEW", + "value": "VIEW", + "keyword": "VIEW", + "type": 1, + "flags": 1, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "v", + "value": "v", + "keyword": null, + "type": 0, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "mycol", + "value": "mycol", + "keyword": null, + "type": 0, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'abc'", + "value": "abc", + "keyword": null, + "type": 7, + "flags": 1, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 18, + "idx": 18 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "OPTIONS": { + "TEMPORARY": 1, + "OR REPLACE": 2, + "ALGORITHM": [ + 3, + "var=" + ], + "DEFINER": [ + 4, + "expr=" + ], + "SQL SECURITY": [ + 5, + "var" + ], + "DATABASE": 6, + "EVENT": 6, + "FUNCTION": 6, + "INDEX": 6, + "UNIQUE INDEX": 6, + "FULLTEXT INDEX": 6, + "SPATIAL INDEX": 6, + "PROCEDURE": 6, + "SERVER": 6, + "TABLE": 6, + "TABLESPACE": 6, + "TRIGGER": 6, + "USER": 6, + "VIEW": 6, + "SCHEMA": 6, + "IF NOT EXISTS": 7 + }, + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var=" + ], + "CHARSET": [ + 1, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var=" + ], + "DEFAULT CHARSET": [ + 1, + "var=" + ], + "DEFAULT COLLATE": [ + 2, + "var=" + ], + "COLLATE": [ + 2, + "var=" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 2, + "var=" + ], + "AVG_ROW_LENGTH": [ + 3, + "var" + ], + "CHARACTER SET": [ + 4, + "var=" + ], + "CHARSET": [ + 4, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 4, + "var=" + ], + "DEFAULT CHARSET": [ + 4, + "var=" + ], + "CHECKSUM": [ + 5, + "var" + ], + "DEFAULT COLLATE": [ + 6, + "var=" + ], + "COLLATE": [ + 6, + "var=" + ], + "COMMENT": [ + 7, + "var=" + ], + "CONNECTION": [ + 8, + "var" + ], + "DATA DIRECTORY": [ + 9, + "var" + ], + "DELAY_KEY_WRITE": [ + 10, + "var" + ], + "INDEX DIRECTORY": [ + 11, + "var" + ], + "INSERT_METHOD": [ + 12, + "var" + ], + "KEY_BLOCK_SIZE": [ + 13, + "var" + ], + "MAX_ROWS": [ + 14, + "var" + ], + "MIN_ROWS": [ + 15, + "var" + ], + "PACK_KEYS": [ + 16, + "var" + ], + "PASSWORD": [ + 17, + "var" + ], + "ROW_FORMAT": [ + 18, + "var" + ], + "TABLESPACE": [ + 19, + "var" + ], + "STORAGE": [ + 20, + "var" + ], + "UNION": [ + 21, + "var" + ] + }, + "FUNC_OPTIONS": { + "NOT": [ + 2, + "var" + ], + "FUNCTION": [ + 3, + "var=" + ], + "PROCEDURE": [ + 3, + "var=" + ], + "CONTAINS": [ + 4, + "expr" + ], + "NO": [ + 4, + "var" + ], + "READS": [ + 4, + "var" + ], + "MODIFIES": [ + 4, + "expr" + ], + "SQL SECURITY": [ + 6, + "var" + ], + "LANGUAGE": [ + 7, + "var" + ], + "COMMENT": [ + 8, + "var" + ], + "CREATE": 1, + "DETERMINISTIC": 2, + "DATA": 5 + }, + "TRIGGER_OPTIONS": { + "BEFORE": 1, + "AFTER": 1, + "INSERT": 2, + "UPDATE": 2, + "DELETE": 2 + }, + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "v", + "column": null, + "expr": "v", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": null, + "fields": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "raw": [ + "mycol" + ], + "values": [ + "mycol" + ] + }, + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [ + { + "@type": "@13" + }, + { + "@type": "@14" + }, + { + "@type": "@15" + }, + { + "@type": "@16" + } + ], + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "VIEW" + } + }, + "first": 0, + "last": 15 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateViewAsWithAs.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateViewAsWithAs.in new file mode 100644 index 0000000000..9b98303650 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateViewAsWithAs.in @@ -0,0 +1,25 @@ +-- create first view +CREATE VIEW withclause AS + +WITH cte AS ( + SELECT p.name, p.shape + FROM gis_all as p +) + +SELECT cte.* +FROM cte +CROSS JOIN gis_all; +-- create second view +CREATE VIEW withclause2 AS + +WITH cte AS ( + SELECT p.name, p.shape + FROM gis_all as p +), cte2 AS ( + SELECT p.name as n2, p.shape as sh2 + FROM gis_all as p +) + +SELECT cte.*,cte2.* +FROM cte,cte2 +CROSS JOIN gis_all; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateViewAsWithAs.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateViewAsWithAs.out new file mode 100644 index 0000000000..12415be87d --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateViewAsWithAs.out @@ -0,0 +1,2603 @@ +{ + "query": "-- create first view\nCREATE VIEW withclause AS\n\nWITH cte AS (\n SELECT p.name, p.shape\n FROM gis_all as p\n)\n\nSELECT cte.*\nFROM cte\nCROSS JOIN gis_all;\n-- create second view\nCREATE VIEW withclause2 AS\n\nWITH cte AS (\n SELECT p.name, p.shape\n FROM gis_all as p\n), cte2 AS (\n SELECT p.name as n2, p.shape as sh2\n FROM gis_all as p\n)\n\nSELECT cte.*,cte2.*\nFROM cte,cte2\nCROSS JOIN gis_all;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "-- create first view\nCREATE VIEW withclause AS\n\nWITH cte AS (\n SELECT p.name, p.shape\n FROM gis_all as p\n)\n\nSELECT cte.*\nFROM cte\nCROSS JOIN gis_all;\n-- create second view\nCREATE VIEW withclause2 AS\n\nWITH cte AS (\n SELECT p.name, p.shape\n FROM gis_all as p\n), cte2 AS (\n SELECT p.name as n2, p.shape as sh2\n FROM gis_all as p\n)\n\nSELECT cte.*,cte2.*\nFROM cte,cte2\nCROSS JOIN gis_all;", + "len": 388, + "last": 388, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-- create first view", + "value": "-- create first view", + "keyword": null, + "type": 4, + "flags": 4, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": 1, + "flags": 3, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VIEW", + "value": "VIEW", + "keyword": "VIEW", + "type": 1, + "flags": 1, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "withclause", + "value": "withclause", + "keyword": null, + "type": 0, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WITH", + "value": "WITH", + "keyword": "WITH", + "type": 1, + "flags": 3, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "cte", + "value": "cte", + "keyword": null, + "type": 0, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p", + "value": "p", + "keyword": null, + "type": 0, + "flags": 0, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": 0, + "flags": 0, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p", + "value": "p", + "keyword": null, + "type": 0, + "flags": 0, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "shape", + "value": "shape", + "keyword": null, + "type": 0, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "gis_all", + "value": "gis_all", + "keyword": null, + "type": 0, + "flags": 0, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 101 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 102 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 104 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p", + "value": "p", + "keyword": null, + "type": 0, + "flags": 0, + "position": 105 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 106 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 110 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 116 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "cte", + "value": "cte", + "keyword": null, + "type": 0, + "flags": 0, + "position": 117 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 120 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 122 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 123 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 127 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "cte", + "value": "cte", + "keyword": null, + "type": 0, + "flags": 0, + "position": 128 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 131 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CROSS JOIN", + "value": "CROSS JOIN", + "keyword": "CROSS JOIN", + "type": 1, + "flags": 7, + "position": 132 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 142 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "gis_all", + "value": "gis_all", + "keyword": null, + "type": 0, + "flags": 0, + "position": 143 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 150 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 151 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-- create second view", + "value": "-- create second view", + "keyword": null, + "type": 4, + "flags": 4, + "position": 152 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 173 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": 1, + "flags": 3, + "position": 174 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 180 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VIEW", + "value": "VIEW", + "keyword": "VIEW", + "type": 1, + "flags": 1, + "position": 181 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 185 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "withclause2", + "value": "withclause2", + "keyword": null, + "type": 0, + "flags": 0, + "position": 186 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 197 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 198 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 200 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WITH", + "value": "WITH", + "keyword": "WITH", + "type": 1, + "flags": 3, + "position": 202 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 206 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "cte", + "value": "cte", + "keyword": null, + "type": 0, + "flags": 0, + "position": 207 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 210 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 211 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 213 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 214 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 215 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 218 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 224 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p", + "value": "p", + "keyword": null, + "type": 0, + "flags": 0, + "position": 225 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 226 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": 0, + "flags": 0, + "position": 227 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 231 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 232 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p", + "value": "p", + "keyword": null, + "type": 0, + "flags": 0, + "position": 233 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 234 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "shape", + "value": "shape", + "keyword": null, + "type": 0, + "flags": 0, + "position": 235 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 240 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 243 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 247 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "gis_all", + "value": "gis_all", + "keyword": null, + "type": 0, + "flags": 0, + "position": 248 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 255 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 256 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 258 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p", + "value": "p", + "keyword": null, + "type": 0, + "flags": 0, + "position": 259 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 260 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 261 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 262 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 263 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "cte2", + "value": "cte2", + "keyword": null, + "type": 0, + "flags": 0, + "position": 264 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 268 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 269 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 271 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 272 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 273 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 276 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 282 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p", + "value": "p", + "keyword": null, + "type": 0, + "flags": 0, + "position": 283 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 284 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": 0, + "flags": 0, + "position": 285 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 289 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 290 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 292 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "n2", + "value": "n2", + "keyword": null, + "type": 0, + "flags": 0, + "position": 293 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 295 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 296 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p", + "value": "p", + "keyword": null, + "type": 0, + "flags": 0, + "position": 297 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 298 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "shape", + "value": "shape", + "keyword": null, + "type": 0, + "flags": 0, + "position": 299 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 304 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 305 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 307 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "sh2", + "value": "sh2", + "keyword": null, + "type": 0, + "flags": 0, + "position": 308 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 311 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 314 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 318 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "gis_all", + "value": "gis_all", + "keyword": null, + "type": 0, + "flags": 0, + "position": 319 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 326 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 327 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 329 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p", + "value": "p", + "keyword": null, + "type": 0, + "flags": 0, + "position": 330 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 331 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 332 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 333 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 335 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 341 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "cte", + "value": "cte", + "keyword": null, + "type": 0, + "flags": 0, + "position": 342 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 345 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 346 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 347 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "cte2", + "value": "cte2", + "keyword": null, + "type": 0, + "flags": 0, + "position": 348 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 352 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 353 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 354 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 355 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 359 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "cte", + "value": "cte", + "keyword": null, + "type": 0, + "flags": 0, + "position": 360 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 363 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "cte2", + "value": "cte2", + "keyword": null, + "type": 0, + "flags": 0, + "position": 364 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 368 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CROSS JOIN", + "value": "CROSS JOIN", + "keyword": "CROSS JOIN", + "type": 1, + "flags": 7, + "position": 369 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 379 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "gis_all", + "value": "gis_all", + "keyword": null, + "type": 0, + "flags": 0, + "position": 380 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 387 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 150, + "idx": 150 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "OPTIONS": { + "TEMPORARY": 1, + "OR REPLACE": 2, + "ALGORITHM": [ + 3, + "var=" + ], + "DEFINER": [ + 4, + "expr=" + ], + "SQL SECURITY": [ + 5, + "var" + ], + "DATABASE": 6, + "EVENT": 6, + "FUNCTION": 6, + "INDEX": 6, + "UNIQUE INDEX": 6, + "FULLTEXT INDEX": 6, + "SPATIAL INDEX": 6, + "PROCEDURE": 6, + "SERVER": 6, + "TABLE": 6, + "TABLESPACE": 6, + "TRIGGER": 6, + "USER": 6, + "VIEW": 6, + "SCHEMA": 6, + "IF NOT EXISTS": 7 + }, + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var=" + ], + "CHARSET": [ + 1, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var=" + ], + "DEFAULT CHARSET": [ + 1, + "var=" + ], + "DEFAULT COLLATE": [ + 2, + "var=" + ], + "COLLATE": [ + 2, + "var=" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 2, + "var=" + ], + "AVG_ROW_LENGTH": [ + 3, + "var" + ], + "CHARACTER SET": [ + 4, + "var=" + ], + "CHARSET": [ + 4, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 4, + "var=" + ], + "DEFAULT CHARSET": [ + 4, + "var=" + ], + "CHECKSUM": [ + 5, + "var" + ], + "DEFAULT COLLATE": [ + 6, + "var=" + ], + "COLLATE": [ + 6, + "var=" + ], + "COMMENT": [ + 7, + "var=" + ], + "CONNECTION": [ + 8, + "var" + ], + "DATA DIRECTORY": [ + 9, + "var" + ], + "DELAY_KEY_WRITE": [ + 10, + "var" + ], + "INDEX DIRECTORY": [ + 11, + "var" + ], + "INSERT_METHOD": [ + 12, + "var" + ], + "KEY_BLOCK_SIZE": [ + 13, + "var" + ], + "MAX_ROWS": [ + 14, + "var" + ], + "MIN_ROWS": [ + 15, + "var" + ], + "PACK_KEYS": [ + 16, + "var" + ], + "PASSWORD": [ + 17, + "var" + ], + "ROW_FORMAT": [ + 18, + "var" + ], + "TABLESPACE": [ + 19, + "var" + ], + "STORAGE": [ + 20, + "var" + ], + "UNION": [ + 21, + "var" + ] + }, + "FUNC_OPTIONS": { + "NOT": [ + 2, + "var" + ], + "FUNCTION": [ + 3, + "var=" + ], + "PROCEDURE": [ + 3, + "var=" + ], + "CONTAINS": [ + 4, + "expr" + ], + "NO": [ + 4, + "var" + ], + "READS": [ + 4, + "var" + ], + "MODIFIES": [ + 4, + "expr" + ], + "SQL SECURITY": [ + 6, + "var" + ], + "LANGUAGE": [ + 7, + "var" + ], + "COMMENT": [ + 8, + "var" + ], + "CREATE": 1, + "DETERMINISTIC": 2, + "DATA": 5 + }, + "TRIGGER_OPTIONS": { + "BEFORE": 1, + "AFTER": 1, + "INSERT": 2, + "UPDATE": 2, + "DELETE": 2 + }, + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "withclause", + "column": null, + "expr": "withclause", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": null, + "fields": null, + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [ + { + "@type": "@11" + }, + { + "@type": "@12" + }, + { + "@type": "@13" + }, + { + "@type": "@14" + }, + { + "@type": "@15" + }, + { + "@type": "@16" + }, + { + "@type": "@17" + }, + { + "@type": "@18" + }, + { + "@type": "@19" + }, + { + "@type": "@20" + }, + { + "@type": "@21" + }, + { + "@type": "@22" + }, + { + "@type": "@23" + }, + { + "@type": "@24" + }, + { + "@type": "@25" + }, + { + "@type": "@26" + }, + { + "@type": "@27" + }, + { + "@type": "@28" + }, + { + "@type": "@29" + }, + { + "@type": "@30" + }, + { + "@type": "@31" + }, + { + "@type": "@32" + }, + { + "@type": "@33" + }, + { + "@type": "@34" + }, + { + "@type": "@35" + }, + { + "@type": "@36" + }, + { + "@type": "@37" + }, + { + "@type": "@38" + }, + { + "@type": "@39" + }, + { + "@type": "@40" + }, + { + "@type": "@41" + }, + { + "@type": "@42" + }, + { + "@type": "@43" + }, + { + "@type": "@44" + }, + { + "@type": "@45" + }, + { + "@type": "@46" + }, + { + "@type": "@47" + }, + { + "@type": "@48" + }, + { + "@type": "@49" + }, + { + "@type": "@50" + }, + { + "@type": "@51" + }, + { + "@type": "@52" + }, + { + "@type": "@53" + } + ], + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "VIEW" + } + }, + "first": 0, + "last": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "OPTIONS": { + "TEMPORARY": 1, + "OR REPLACE": 2, + "ALGORITHM": [ + 3, + "var=" + ], + "DEFINER": [ + 4, + "expr=" + ], + "SQL SECURITY": [ + 5, + "var" + ], + "DATABASE": 6, + "EVENT": 6, + "FUNCTION": 6, + "INDEX": 6, + "UNIQUE INDEX": 6, + "FULLTEXT INDEX": 6, + "SPATIAL INDEX": 6, + "PROCEDURE": 6, + "SERVER": 6, + "TABLE": 6, + "TABLESPACE": 6, + "TRIGGER": 6, + "USER": 6, + "VIEW": 6, + "SCHEMA": 6, + "IF NOT EXISTS": 7 + }, + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var=" + ], + "CHARSET": [ + 1, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var=" + ], + "DEFAULT CHARSET": [ + 1, + "var=" + ], + "DEFAULT COLLATE": [ + 2, + "var=" + ], + "COLLATE": [ + 2, + "var=" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 2, + "var=" + ], + "AVG_ROW_LENGTH": [ + 3, + "var" + ], + "CHARACTER SET": [ + 4, + "var=" + ], + "CHARSET": [ + 4, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 4, + "var=" + ], + "DEFAULT CHARSET": [ + 4, + "var=" + ], + "CHECKSUM": [ + 5, + "var" + ], + "DEFAULT COLLATE": [ + 6, + "var=" + ], + "COLLATE": [ + 6, + "var=" + ], + "COMMENT": [ + 7, + "var=" + ], + "CONNECTION": [ + 8, + "var" + ], + "DATA DIRECTORY": [ + 9, + "var" + ], + "DELAY_KEY_WRITE": [ + 10, + "var" + ], + "INDEX DIRECTORY": [ + 11, + "var" + ], + "INSERT_METHOD": [ + 12, + "var" + ], + "KEY_BLOCK_SIZE": [ + 13, + "var" + ], + "MAX_ROWS": [ + 14, + "var" + ], + "MIN_ROWS": [ + 15, + "var" + ], + "PACK_KEYS": [ + 16, + "var" + ], + "PASSWORD": [ + 17, + "var" + ], + "ROW_FORMAT": [ + 18, + "var" + ], + "TABLESPACE": [ + 19, + "var" + ], + "STORAGE": [ + 20, + "var" + ], + "UNION": [ + 21, + "var" + ] + }, + "FUNC_OPTIONS": { + "NOT": [ + 2, + "var" + ], + "FUNCTION": [ + 3, + "var=" + ], + "PROCEDURE": [ + 3, + "var=" + ], + "CONTAINS": [ + 4, + "expr" + ], + "NO": [ + 4, + "var" + ], + "READS": [ + 4, + "var" + ], + "MODIFIES": [ + 4, + "expr" + ], + "SQL SECURITY": [ + 6, + "var" + ], + "LANGUAGE": [ + 7, + "var" + ], + "COMMENT": [ + 8, + "var" + ], + "CREATE": 1, + "DETERMINISTIC": 2, + "DATA": 5 + }, + "TRIGGER_OPTIONS": { + "BEFORE": 1, + "AFTER": 1, + "INSERT": 2, + "UPDATE": 2, + "DELETE": 2 + }, + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "withclause2", + "column": null, + "expr": "withclause2", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": null, + "fields": null, + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [ + { + "@type": "@65" + }, + { + "@type": "@66" + }, + { + "@type": "@67" + }, + { + "@type": "@68" + }, + { + "@type": "@69" + }, + { + "@type": "@70" + }, + { + "@type": "@71" + }, + { + "@type": "@72" + }, + { + "@type": "@73" + }, + { + "@type": "@74" + }, + { + "@type": "@75" + }, + { + "@type": "@76" + }, + { + "@type": "@77" + }, + { + "@type": "@78" + }, + { + "@type": "@79" + }, + { + "@type": "@80" + }, + { + "@type": "@81" + }, + { + "@type": "@82" + }, + { + "@type": "@83" + }, + { + "@type": "@84" + }, + { + "@type": "@85" + }, + { + "@type": "@86" + }, + { + "@type": "@87" + }, + { + "@type": "@88" + }, + { + "@type": "@89" + }, + { + "@type": "@90" + }, + { + "@type": "@91" + }, + { + "@type": "@92" + }, + { + "@type": "@93" + }, + { + "@type": "@94" + }, + { + "@type": "@95" + }, + { + "@type": "@96" + }, + { + "@type": "@97" + }, + { + "@type": "@98" + }, + { + "@type": "@99" + }, + { + "@type": "@100" + }, + { + "@type": "@101" + }, + { + "@type": "@102" + }, + { + "@type": "@103" + }, + { + "@type": "@104" + }, + { + "@type": "@105" + }, + { + "@type": "@106" + }, + { + "@type": "@107" + }, + { + "@type": "@108" + }, + { + "@type": "@109" + }, + { + "@type": "@110" + }, + { + "@type": "@111" + }, + { + "@type": "@112" + }, + { + "@type": "@113" + }, + { + "@type": "@114" + }, + { + "@type": "@115" + }, + { + "@type": "@116" + }, + { + "@type": "@117" + }, + { + "@type": "@118" + }, + { + "@type": "@119" + }, + { + "@type": "@120" + }, + { + "@type": "@121" + }, + { + "@type": "@122" + }, + { + "@type": "@123" + }, + { + "@type": "@124" + }, + { + "@type": "@125" + }, + { + "@type": "@126" + }, + { + "@type": "@127" + }, + { + "@type": "@128" + }, + { + "@type": "@129" + }, + { + "@type": "@130" + }, + { + "@type": "@131" + }, + { + "@type": "@132" + }, + { + "@type": "@133" + }, + { + "@type": "@134" + }, + { + "@type": "@135" + }, + { + "@type": "@136" + }, + { + "@type": "@137" + }, + { + "@type": "@138" + }, + { + "@type": "@139" + }, + { + "@type": "@140" + }, + { + "@type": "@141" + }, + { + "@type": "@142" + }, + { + "@type": "@143" + }, + { + "@type": "@144" + }, + { + "@type": "@145" + }, + { + "@type": "@146" + }, + { + "@type": "@147" + }, + { + "@type": "@148" + }, + { + "@type": "@149" + } + ], + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "VIEW" + } + }, + "first": 53, + "last": 148 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateViewMultiple.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateViewMultiple.in new file mode 100644 index 0000000000..5531bf29ec --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateViewMultiple.in @@ -0,0 +1,18 @@ +CREATE TABLE T1 (COL1 CHAR(10)) + +CREATE VIEW V1 AS SELECT COL1 + FROM T1 WHERE COL1 LIKE 'A%' + +CREATE VIEW V2 AS SELECT COL1 + FROM V1 WHERE COL1 LIKE '%Z' + WITH LOCAL CHECK OPTION + +CREATE VIEW V3 AS SELECT COL1 + FROM V2 WHERE COL1 LIKE 'AB%' + +CREATE VIEW V4 AS SELECT COL1 + FROM V3 WHERE COL1 LIKE '%YZ' + WITH CASCADED CHECK OPTION + +CREATE VIEW V5 AS SELECT COL1 + FROM V4 WHERE COL1 LIKE 'ABC%' diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateViewMultiple.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateViewMultiple.out new file mode 100644 index 0000000000..d56fd2a3e3 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateViewMultiple.out @@ -0,0 +1,2075 @@ +{ + "query": "CREATE TABLE T1 (COL1 CHAR(10))\n\nCREATE VIEW V1 AS SELECT COL1\n FROM T1 WHERE COL1 LIKE 'A%'\n\nCREATE VIEW V2 AS SELECT COL1\n FROM V1 WHERE COL1 LIKE '%Z'\n WITH LOCAL CHECK OPTION\n\nCREATE VIEW V3 AS SELECT COL1\n FROM V2 WHERE COL1 LIKE 'AB%'\n\nCREATE VIEW V4 AS SELECT COL1\n FROM V3 WHERE COL1 LIKE '%YZ'\n WITH CASCADED CHECK OPTION\n\nCREATE VIEW V5 AS SELECT COL1\n FROM V4 WHERE COL1 LIKE 'ABC%'\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "CREATE TABLE T1 (COL1 CHAR(10))\n\nCREATE VIEW V1 AS SELECT COL1\n FROM T1 WHERE COL1 LIKE 'A%'\n\nCREATE VIEW V2 AS SELECT COL1\n FROM V1 WHERE COL1 LIKE '%Z'\n WITH LOCAL CHECK OPTION\n\nCREATE VIEW V3 AS SELECT COL1\n FROM V2 WHERE COL1 LIKE 'AB%'\n\nCREATE VIEW V4 AS SELECT COL1\n FROM V3 WHERE COL1 LIKE '%YZ'\n WITH CASCADED CHECK OPTION\n\nCREATE VIEW V5 AS SELECT COL1\n FROM V4 WHERE COL1 LIKE 'ABC%'\n", + "len": 464, + "last": 464, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": 1, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "T1", + "value": "T1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COL1", + "value": "COL1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CHAR", + "value": "CHAR", + "keyword": "CHAR", + "type": 1, + "flags": 43, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "10", + "value": 10, + "keyword": null, + "type": 6, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": 1, + "flags": 3, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VIEW", + "value": "VIEW", + "keyword": "VIEW", + "type": 1, + "flags": 1, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "V1", + "value": "V1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COL1", + "value": "COL1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "T1", + "value": "T1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COL1", + "value": "COL1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LIKE", + "value": "LIKE", + "keyword": "LIKE", + "type": 1, + "flags": 3, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 91 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'A%'", + "value": "A%", + "keyword": null, + "type": 7, + "flags": 1, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": 1, + "flags": 3, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 104 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VIEW", + "value": "VIEW", + "keyword": "VIEW", + "type": 1, + "flags": 1, + "position": 105 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 109 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "V2", + "value": "V2", + "keyword": null, + "type": 0, + "flags": 0, + "position": 110 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 115 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 116 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 122 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COL1", + "value": "COL1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 123 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 127 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 132 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 136 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "V1", + "value": "V1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 137 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 139 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 140 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 145 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COL1", + "value": "COL1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 146 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 150 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LIKE", + "value": "LIKE", + "keyword": "LIKE", + "type": 1, + "flags": 3, + "position": 151 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 155 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'%Z'", + "value": "%Z", + "keyword": null, + "type": 7, + "flags": 1, + "position": 156 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 160 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WITH", + "value": "WITH", + "keyword": "WITH", + "type": 1, + "flags": 3, + "position": 189 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 193 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOCAL", + "value": "LOCAL", + "keyword": "LOCAL", + "type": 1, + "flags": 1, + "position": 194 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 199 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CHECK", + "value": "CHECK", + "keyword": "CHECK", + "type": 1, + "flags": 3, + "position": 200 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 205 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "OPTION", + "value": "OPTION", + "keyword": "OPTION", + "type": 1, + "flags": 3, + "position": 206 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 212 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": 1, + "flags": 3, + "position": 214 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 220 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VIEW", + "value": "VIEW", + "keyword": "VIEW", + "type": 1, + "flags": 1, + "position": 221 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 225 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "V3", + "value": "V3", + "keyword": null, + "type": 0, + "flags": 0, + "position": 226 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 228 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 229 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 231 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 232 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 238 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COL1", + "value": "COL1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 239 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 243 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 248 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 252 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "V2", + "value": "V2", + "keyword": null, + "type": 0, + "flags": 0, + "position": 253 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 255 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 256 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 261 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COL1", + "value": "COL1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 262 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 266 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LIKE", + "value": "LIKE", + "keyword": "LIKE", + "type": 1, + "flags": 3, + "position": 267 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 271 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'AB%'", + "value": "AB%", + "keyword": null, + "type": 7, + "flags": 1, + "position": 272 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 277 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": 1, + "flags": 3, + "position": 279 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 285 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VIEW", + "value": "VIEW", + "keyword": "VIEW", + "type": 1, + "flags": 1, + "position": 286 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 290 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "V4", + "value": "V4", + "keyword": null, + "type": 0, + "flags": 0, + "position": 291 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 293 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 294 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 296 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 297 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 303 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COL1", + "value": "COL1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 304 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 308 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 313 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 317 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "V3", + "value": "V3", + "keyword": null, + "type": 0, + "flags": 0, + "position": 318 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 320 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 321 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 326 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COL1", + "value": "COL1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 327 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 331 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LIKE", + "value": "LIKE", + "keyword": "LIKE", + "type": 1, + "flags": 3, + "position": 332 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 336 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'%YZ'", + "value": "%YZ", + "keyword": null, + "type": 7, + "flags": 1, + "position": 337 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 342 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WITH", + "value": "WITH", + "keyword": "WITH", + "type": 1, + "flags": 3, + "position": 371 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 375 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CASCADED", + "value": "CASCADED", + "keyword": "CASCADED", + "type": 1, + "flags": 1, + "position": 376 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 384 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CHECK", + "value": "CHECK", + "keyword": "CHECK", + "type": 1, + "flags": 3, + "position": 385 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 390 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "OPTION", + "value": "OPTION", + "keyword": "OPTION", + "type": 1, + "flags": 3, + "position": 391 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 397 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": 1, + "flags": 3, + "position": 399 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 405 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VIEW", + "value": "VIEW", + "keyword": "VIEW", + "type": 1, + "flags": 1, + "position": 406 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 410 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "V5", + "value": "V5", + "keyword": null, + "type": 0, + "flags": 0, + "position": 411 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 413 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 414 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 416 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 417 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 423 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COL1", + "value": "COL1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 424 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 428 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 433 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 437 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "V4", + "value": "V4", + "keyword": null, + "type": 0, + "flags": 0, + "position": 438 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 440 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 441 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 446 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COL1", + "value": "COL1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 447 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 451 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LIKE", + "value": "LIKE", + "keyword": "LIKE", + "type": 1, + "flags": 3, + "position": 452 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 456 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'ABC%'", + "value": "ABC%", + "keyword": null, + "type": 7, + "flags": 1, + "position": 457 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 463 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 152, + "idx": 152 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "OPTIONS": { + "TEMPORARY": 1, + "OR REPLACE": 2, + "ALGORITHM": [ + 3, + "var=" + ], + "DEFINER": [ + 4, + "expr=" + ], + "SQL SECURITY": [ + 5, + "var" + ], + "DATABASE": 6, + "EVENT": 6, + "FUNCTION": 6, + "INDEX": 6, + "UNIQUE INDEX": 6, + "FULLTEXT INDEX": 6, + "SPATIAL INDEX": 6, + "PROCEDURE": 6, + "SERVER": 6, + "TABLE": 6, + "TABLESPACE": 6, + "TRIGGER": 6, + "USER": 6, + "VIEW": 6, + "SCHEMA": 6, + "IF NOT EXISTS": 7 + }, + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var=" + ], + "CHARSET": [ + 1, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var=" + ], + "DEFAULT CHARSET": [ + 1, + "var=" + ], + "DEFAULT COLLATE": [ + 2, + "var=" + ], + "COLLATE": [ + 2, + "var=" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 2, + "var=" + ], + "AVG_ROW_LENGTH": [ + 3, + "var" + ], + "CHARACTER SET": [ + 4, + "var=" + ], + "CHARSET": [ + 4, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 4, + "var=" + ], + "DEFAULT CHARSET": [ + 4, + "var=" + ], + "CHECKSUM": [ + 5, + "var" + ], + "DEFAULT COLLATE": [ + 6, + "var=" + ], + "COLLATE": [ + 6, + "var=" + ], + "COMMENT": [ + 7, + "var=" + ], + "CONNECTION": [ + 8, + "var" + ], + "DATA DIRECTORY": [ + 9, + "var" + ], + "DELAY_KEY_WRITE": [ + 10, + "var" + ], + "INDEX DIRECTORY": [ + 11, + "var" + ], + "INSERT_METHOD": [ + 12, + "var" + ], + "KEY_BLOCK_SIZE": [ + 13, + "var" + ], + "MAX_ROWS": [ + 14, + "var" + ], + "MIN_ROWS": [ + 15, + "var" + ], + "PACK_KEYS": [ + 16, + "var" + ], + "PASSWORD": [ + 17, + "var" + ], + "ROW_FORMAT": [ + 18, + "var" + ], + "TABLESPACE": [ + 19, + "var" + ], + "STORAGE": [ + 20, + "var" + ], + "UNION": [ + 21, + "var" + ] + }, + "FUNC_OPTIONS": { + "NOT": [ + 2, + "var" + ], + "FUNCTION": [ + 3, + "var=" + ], + "PROCEDURE": [ + 3, + "var=" + ], + "CONTAINS": [ + 4, + "expr" + ], + "NO": [ + 4, + "var" + ], + "READS": [ + 4, + "var" + ], + "MODIFIES": [ + 4, + "expr" + ], + "SQL SECURITY": [ + 6, + "var" + ], + "LANGUAGE": [ + 7, + "var" + ], + "COMMENT": [ + 8, + "var" + ], + "CREATE": 1, + "DETERMINISTIC": 2, + "DATA": 5 + }, + "TRIGGER_OPTIONS": { + "BEFORE": 1, + "AFTER": 1, + "INSERT": 2, + "UPDATE": 2, + "DELETE": 2 + }, + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "T1", + "column": null, + "expr": "T1", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "fields": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CreateDefinition", + "FIELD_OPTIONS": { + "_UNSORTED": true, + "NOT NULL": 1, + "NULL": 1, + "DEFAULT": [ + 2, + "expr", + { + "breakOnAlias": true + } + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "AUTO_INCREMENT": 3, + "PRIMARY": 4, + "PRIMARY KEY": 4, + "UNIQUE": 4, + "UNIQUE KEY": 4, + "COMMENT": [ + 5, + "var" + ], + "COLUMN_FORMAT": [ + 6, + "var" + ], + "ON UPDATE": [ + 7, + "expr" + ], + "GENERATED ALWAYS": 8, + "AS": [ + 9, + "expr", + { + "parenthesesDelimited": true + } + ], + "VIRTUAL": 10, + "PERSISTENT": 11, + "STORED": 11, + "CHECK": [ + 12, + "expr", + { + "parenthesesDelimited": true + } + ], + "INVISIBLE": 13, + "ENFORCED": 14, + "NOT": 15 + }, + "name": "COL1", + "isConstraint": null, + "type": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\DataType", + "DATA_TYPE_OPTIONS": { + "BINARY": 1, + "CHARACTER SET": [ + 2, + "var" + ], + "CHARSET": [ + 2, + "var" + ], + "COLLATE": [ + 3, + "var" + ], + "UNSIGNED": 4, + "ZEROFILL": 5 + }, + "name": "CHAR", + "parameters": [ + "10" + ], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + }, + "key": null, + "references": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + } + } + ], + "select": null, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [], + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "TABLE" + } + }, + "first": 0, + "last": 151 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateViewWithQuotes.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateViewWithQuotes.in new file mode 100644 index 0000000000..2155a8d25c --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateViewWithQuotes.in @@ -0,0 +1,4 @@ +CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost` +SQL SECURITY DEFINER VIEW `test_view` AS +select `email_content`.`content_id` AS `content_id`, +`email_content`.`brand_id` AS `brand_id` from `email_content`; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateViewWithQuotes.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateViewWithQuotes.out new file mode 100644 index 0000000000..72caf43344 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateViewWithQuotes.out @@ -0,0 +1,1286 @@ +{ + "query": "CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost`\nSQL SECURITY DEFINER VIEW `test_view` AS\nselect `email_content`.`content_id` AS `content_id`,\n`email_content`.`brand_id` AS `brand_id` from `email_content`;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "CREATE ALGORITHM=UNDEFINED DEFINER=`root`@`localhost`\nSQL SECURITY DEFINER VIEW `test_view` AS\nselect `email_content`.`content_id` AS `content_id`,\n`email_content`.`brand_id` AS `brand_id` from `email_content`;", + "len": 211, + "last": 211, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALGORITHM", + "value": "ALGORITHM", + "keyword": "ALGORITHM", + "type": 1, + "flags": 1, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNDEFINED", + "value": "UNDEFINED", + "keyword": "UNDEFINED", + "type": 1, + "flags": 1, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFINER", + "value": "DEFINER", + "keyword": "DEFINER", + "type": 1, + "flags": 1, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`root`@`localhost`", + "value": "root@localhost", + "keyword": null, + "type": 8, + "flags": 4, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SQL SECURITY", + "value": "SQL SECURITY", + "keyword": "SQL SECURITY", + "type": 1, + "flags": 7, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFINER", + "value": "DEFINER", + "keyword": "DEFINER", + "type": 1, + "flags": 1, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VIEW", + "value": "VIEW", + "keyword": "VIEW", + "type": 1, + "flags": 1, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`test_view`", + "value": "test_view", + "keyword": null, + "type": 8, + "flags": 2, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 91 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 95 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "select", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 102 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`email_content`", + "value": "email_content", + "keyword": null, + "type": 8, + "flags": 2, + "position": 103 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 118 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`content_id`", + "value": "content_id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 119 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 131 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 132 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 134 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`content_id`", + "value": "content_id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 135 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 147 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 148 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`email_content`", + "value": "email_content", + "keyword": null, + "type": 8, + "flags": 2, + "position": 149 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 164 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`brand_id`", + "value": "brand_id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 165 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 175 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 176 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 178 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`brand_id`", + "value": "brand_id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 179 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 189 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "from", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 190 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 194 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`email_content`", + "value": "email_content", + "keyword": null, + "type": 8, + "flags": 2, + "position": 195 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 210 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 44, + "idx": 44 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "OPTIONS": { + "TEMPORARY": 1, + "OR REPLACE": 2, + "ALGORITHM": [ + 3, + "var=" + ], + "DEFINER": [ + 4, + "expr=" + ], + "SQL SECURITY": [ + 5, + "var" + ], + "DATABASE": 6, + "EVENT": 6, + "FUNCTION": 6, + "INDEX": 6, + "UNIQUE INDEX": 6, + "FULLTEXT INDEX": 6, + "SPATIAL INDEX": 6, + "PROCEDURE": 6, + "SERVER": 6, + "TABLE": 6, + "TABLESPACE": 6, + "TRIGGER": 6, + "USER": 6, + "VIEW": 6, + "SCHEMA": 6, + "IF NOT EXISTS": 7 + }, + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var=" + ], + "CHARSET": [ + 1, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var=" + ], + "DEFAULT CHARSET": [ + 1, + "var=" + ], + "DEFAULT COLLATE": [ + 2, + "var=" + ], + "COLLATE": [ + 2, + "var=" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 2, + "var=" + ], + "AVG_ROW_LENGTH": [ + 3, + "var" + ], + "CHARACTER SET": [ + 4, + "var=" + ], + "CHARSET": [ + 4, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 4, + "var=" + ], + "DEFAULT CHARSET": [ + 4, + "var=" + ], + "CHECKSUM": [ + 5, + "var" + ], + "DEFAULT COLLATE": [ + 6, + "var=" + ], + "COLLATE": [ + 6, + "var=" + ], + "COMMENT": [ + 7, + "var=" + ], + "CONNECTION": [ + 8, + "var" + ], + "DATA DIRECTORY": [ + 9, + "var" + ], + "DELAY_KEY_WRITE": [ + 10, + "var" + ], + "INDEX DIRECTORY": [ + 11, + "var" + ], + "INSERT_METHOD": [ + 12, + "var" + ], + "KEY_BLOCK_SIZE": [ + 13, + "var" + ], + "MAX_ROWS": [ + 14, + "var" + ], + "MIN_ROWS": [ + 15, + "var" + ], + "PACK_KEYS": [ + 16, + "var" + ], + "PASSWORD": [ + 17, + "var" + ], + "ROW_FORMAT": [ + 18, + "var" + ], + "TABLESPACE": [ + 19, + "var" + ], + "STORAGE": [ + 20, + "var" + ], + "UNION": [ + 21, + "var" + ] + }, + "FUNC_OPTIONS": { + "NOT": [ + 2, + "var" + ], + "FUNCTION": [ + 3, + "var=" + ], + "PROCEDURE": [ + 3, + "var=" + ], + "CONTAINS": [ + 4, + "expr" + ], + "NO": [ + 4, + "var" + ], + "READS": [ + 4, + "var" + ], + "MODIFIES": [ + 4, + "expr" + ], + "SQL SECURITY": [ + 6, + "var" + ], + "LANGUAGE": [ + 7, + "var" + ], + "COMMENT": [ + 8, + "var" + ], + "CREATE": 1, + "DETERMINISTIC": 2, + "DATA": 5 + }, + "TRIGGER_OPTIONS": { + "BEFORE": 1, + "AFTER": 1, + "INSERT": 2, + "UPDATE": 2, + "DELETE": 2 + }, + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "test_view", + "column": null, + "expr": "`test_view`", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": null, + "fields": null, + "select": { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "email_content", + "column": "content_id", + "expr": "`email_content`.`content_id`", + "alias": "content_id", + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "email_content", + "column": "brand_id", + "expr": "`email_content`.`brand_id`", + "alias": "brand_id", + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "email_content", + "column": null, + "expr": "`email_content`", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": null, + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 20, + "last": 41 + }, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [ + { + "@type": "@43" + } + ], + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": { + "name": "ALGORITHM", + "equals": true, + "expr": "UNDEFINED", + "value": "UNDEFINED" + }, + "4": { + "name": "DEFINER", + "equals": true, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "root@localhost", + "expr": "`root`@`localhost`", + "alias": null, + "function": null, + "subquery": null + }, + "value": "`root`@`localhost`" + }, + "5": { + "name": "SQL SECURITY", + "equals": false, + "expr": "DEFINER", + "value": "DEFINER" + }, + "6": "VIEW" + } + }, + "first": 0, + "last": 42 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateViewWithUnion.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateViewWithUnion.in new file mode 100644 index 0000000000..4ea9741469 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateViewWithUnion.in @@ -0,0 +1,12 @@ +CREATE VIEW `employees_view` AS +SELECT * +FROM + `employees` +WHERE + `employees`.`gender` = 'M' +UNION +SELECT * +FROM + `employees` +WHERE + `employees`.`gender` = 'F'; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateViewWithUnion.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateViewWithUnion.out new file mode 100644 index 0000000000..78b88416ce --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateViewWithUnion.out @@ -0,0 +1,1346 @@ +{ + "query": "CREATE VIEW `employees_view` AS\nSELECT *\nFROM\n `employees`\nWHERE\n `employees`.`gender` = 'M'\nUNION\nSELECT *\nFROM\n `employees`\nWHERE\n `employees`.`gender` = 'F';", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "CREATE VIEW `employees_view` AS\nSELECT *\nFROM\n `employees`\nWHERE\n `employees`.`gender` = 'M'\nUNION\nSELECT *\nFROM\n `employees`\nWHERE\n `employees`.`gender` = 'F';", + "len": 173, + "last": 173, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VIEW", + "value": "VIEW", + "keyword": "VIEW", + "type": 1, + "flags": 1, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`employees_view`", + "value": "employees_view", + "keyword": null, + "type": 8, + "flags": 2, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`employees`", + "value": "employees", + "keyword": null, + "type": 8, + "flags": 2, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`employees`", + "value": "employees", + "keyword": null, + "type": 8, + "flags": 2, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`gender`", + "value": "gender", + "keyword": null, + "type": 8, + "flags": 2, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 95 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'M'", + "value": "M", + "keyword": null, + "type": 7, + "flags": 1, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNION", + "value": "UNION", + "keyword": "UNION", + "type": 1, + "flags": 3, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 105 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 106 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 114 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 115 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 119 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`employees`", + "value": "employees", + "keyword": null, + "type": 8, + "flags": 2, + "position": 124 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 135 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 136 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 141 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`employees`", + "value": "employees", + "keyword": null, + "type": 8, + "flags": 2, + "position": 146 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 157 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`gender`", + "value": "gender", + "keyword": null, + "type": 8, + "flags": 2, + "position": 158 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 166 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 167 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 168 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'F'", + "value": "F", + "keyword": null, + "type": 7, + "flags": 1, + "position": 169 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 172 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 47, + "idx": 47 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "OPTIONS": { + "TEMPORARY": 1, + "OR REPLACE": 2, + "ALGORITHM": [ + 3, + "var=" + ], + "DEFINER": [ + 4, + "expr=" + ], + "SQL SECURITY": [ + 5, + "var" + ], + "DATABASE": 6, + "EVENT": 6, + "FUNCTION": 6, + "INDEX": 6, + "UNIQUE INDEX": 6, + "FULLTEXT INDEX": 6, + "SPATIAL INDEX": 6, + "PROCEDURE": 6, + "SERVER": 6, + "TABLE": 6, + "TABLESPACE": 6, + "TRIGGER": 6, + "USER": 6, + "VIEW": 6, + "SCHEMA": 6, + "IF NOT EXISTS": 7 + }, + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var=" + ], + "CHARSET": [ + 1, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var=" + ], + "DEFAULT CHARSET": [ + 1, + "var=" + ], + "DEFAULT COLLATE": [ + 2, + "var=" + ], + "COLLATE": [ + 2, + "var=" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 2, + "var=" + ], + "AVG_ROW_LENGTH": [ + 3, + "var" + ], + "CHARACTER SET": [ + 4, + "var=" + ], + "CHARSET": [ + 4, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 4, + "var=" + ], + "DEFAULT CHARSET": [ + 4, + "var=" + ], + "CHECKSUM": [ + 5, + "var" + ], + "DEFAULT COLLATE": [ + 6, + "var=" + ], + "COLLATE": [ + 6, + "var=" + ], + "COMMENT": [ + 7, + "var=" + ], + "CONNECTION": [ + 8, + "var" + ], + "DATA DIRECTORY": [ + 9, + "var" + ], + "DELAY_KEY_WRITE": [ + 10, + "var" + ], + "INDEX DIRECTORY": [ + 11, + "var" + ], + "INSERT_METHOD": [ + 12, + "var" + ], + "KEY_BLOCK_SIZE": [ + 13, + "var" + ], + "MAX_ROWS": [ + 14, + "var" + ], + "MIN_ROWS": [ + 15, + "var" + ], + "PACK_KEYS": [ + 16, + "var" + ], + "PASSWORD": [ + 17, + "var" + ], + "ROW_FORMAT": [ + 18, + "var" + ], + "TABLESPACE": [ + 19, + "var" + ], + "STORAGE": [ + 20, + "var" + ], + "UNION": [ + 21, + "var" + ] + }, + "FUNC_OPTIONS": { + "NOT": [ + 2, + "var" + ], + "FUNCTION": [ + 3, + "var=" + ], + "PROCEDURE": [ + 3, + "var=" + ], + "CONTAINS": [ + 4, + "expr" + ], + "NO": [ + 4, + "var" + ], + "READS": [ + 4, + "var" + ], + "MODIFIES": [ + 4, + "expr" + ], + "SQL SECURITY": [ + 6, + "var" + ], + "LANGUAGE": [ + 7, + "var" + ], + "COMMENT": [ + 8, + "var" + ], + "CREATE": 1, + "DETERMINISTIC": 2, + "DATA": 5 + }, + "TRIGGER_OPTIONS": { + "BEFORE": 1, + "AFTER": 1, + "INSERT": 2, + "UPDATE": 2, + "DELETE": 2 + }, + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "employees_view", + "column": null, + "expr": "`employees_view`", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": null, + "fields": null, + "select": { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "employees", + "column": null, + "expr": "`employees`", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [ + "employees", + "gender", + "M" + ], + "isOperator": false, + "expr": "`employees`.`gender` = 'M'" + } + ], + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 8, + "last": 25 + }, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [ + { + "@type": "@27" + }, + { + "@type": "@28" + }, + { + "@type": "@29" + }, + { + "@type": "@30" + }, + { + "@type": "@31" + }, + { + "@type": "@32" + }, + { + "@type": "@33" + }, + { + "@type": "@34" + }, + { + "@type": "@35" + }, + { + "@type": "@36" + }, + { + "@type": "@37" + }, + { + "@type": "@38" + }, + { + "@type": "@39" + }, + { + "@type": "@40" + }, + { + "@type": "@41" + }, + { + "@type": "@42" + }, + { + "@type": "@43" + }, + { + "@type": "@44" + }, + { + "@type": "@45" + }, + { + "@type": "@46" + } + ], + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "VIEW" + } + }, + "first": 0, + "last": 45 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateViewWithWrongSyntax.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateViewWithWrongSyntax.in new file mode 100644 index 0000000000..be32797788 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateViewWithWrongSyntax.in @@ -0,0 +1 @@ +CREATE VIEW abc AS SELECT a, b, FROM a \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateViewWithWrongSyntax.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateViewWithWrongSyntax.out new file mode 100644 index 0000000000..c0f8262d37 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateViewWithWrongSyntax.out @@ -0,0 +1,1038 @@ +{ + "query": "CREATE VIEW abc AS SELECT a, b, FROM a", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "CREATE VIEW abc AS SELECT a, b, FROM a", + "len": 38, + "last": 38, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VIEW", + "value": "VIEW", + "keyword": "VIEW", + "type": 1, + "flags": 1, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "abc", + "value": "abc", + "keyword": null, + "type": 0, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": 0, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "b", + "value": "b", + "keyword": null, + "type": 0, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": 0, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 20, + "idx": 20 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "OPTIONS": { + "TEMPORARY": 1, + "OR REPLACE": 2, + "ALGORITHM": [ + 3, + "var=" + ], + "DEFINER": [ + 4, + "expr=" + ], + "SQL SECURITY": [ + 5, + "var" + ], + "DATABASE": 6, + "EVENT": 6, + "FUNCTION": 6, + "INDEX": 6, + "UNIQUE INDEX": 6, + "FULLTEXT INDEX": 6, + "SPATIAL INDEX": 6, + "PROCEDURE": 6, + "SERVER": 6, + "TABLE": 6, + "TABLESPACE": 6, + "TRIGGER": 6, + "USER": 6, + "VIEW": 6, + "SCHEMA": 6, + "IF NOT EXISTS": 7 + }, + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var=" + ], + "CHARSET": [ + 1, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var=" + ], + "DEFAULT CHARSET": [ + 1, + "var=" + ], + "DEFAULT COLLATE": [ + 2, + "var=" + ], + "COLLATE": [ + 2, + "var=" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 2, + "var=" + ], + "AVG_ROW_LENGTH": [ + 3, + "var" + ], + "CHARACTER SET": [ + 4, + "var=" + ], + "CHARSET": [ + 4, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 4, + "var=" + ], + "DEFAULT CHARSET": [ + 4, + "var=" + ], + "CHECKSUM": [ + 5, + "var" + ], + "DEFAULT COLLATE": [ + 6, + "var=" + ], + "COLLATE": [ + 6, + "var=" + ], + "COMMENT": [ + 7, + "var=" + ], + "CONNECTION": [ + 8, + "var" + ], + "DATA DIRECTORY": [ + 9, + "var" + ], + "DELAY_KEY_WRITE": [ + 10, + "var" + ], + "INDEX DIRECTORY": [ + 11, + "var" + ], + "INSERT_METHOD": [ + 12, + "var" + ], + "KEY_BLOCK_SIZE": [ + 13, + "var" + ], + "MAX_ROWS": [ + 14, + "var" + ], + "MIN_ROWS": [ + 15, + "var" + ], + "PACK_KEYS": [ + 16, + "var" + ], + "PASSWORD": [ + 17, + "var" + ], + "ROW_FORMAT": [ + 18, + "var" + ], + "TABLESPACE": [ + 19, + "var" + ], + "STORAGE": [ + 20, + "var" + ], + "UNION": [ + 21, + "var" + ] + }, + "FUNC_OPTIONS": { + "NOT": [ + 2, + "var" + ], + "FUNCTION": [ + 3, + "var=" + ], + "PROCEDURE": [ + 3, + "var=" + ], + "CONTAINS": [ + 4, + "expr" + ], + "NO": [ + 4, + "var" + ], + "READS": [ + 4, + "var" + ], + "MODIFIES": [ + 4, + "expr" + ], + "SQL SECURITY": [ + 6, + "var" + ], + "LANGUAGE": [ + 7, + "var" + ], + "COMMENT": [ + 8, + "var" + ], + "CREATE": 1, + "DETERMINISTIC": 2, + "DATA": 5 + }, + "TRIGGER_OPTIONS": { + "BEFORE": 1, + "AFTER": 1, + "INSERT": 2, + "UPDATE": 2, + "DELETE": 2 + }, + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "abc", + "column": null, + "expr": "abc", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": null, + "fields": null, + "select": { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "a", + "expr": "a", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "b", + "expr": "b", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "a", + "column": null, + "expr": "a", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": null, + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 8, + "last": 18 + }, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [ + { + "@type": "@20" + } + ], + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "6": "VIEW" + } + }, + "first": 0, + "last": 19 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "An expression was expected.", + { + "@type": "@18" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateViewWithoutQuotes.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateViewWithoutQuotes.in new file mode 100644 index 0000000000..26276fb4ea --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateViewWithoutQuotes.in @@ -0,0 +1,4 @@ +CREATE ALGORITHM=UNDEFINED DEFINER=root@localhost +SQL SECURITY DEFINER VIEW `test_view` AS +select `email_content`.`content_id` AS `content_id`, +`email_content`.`brand_id` AS `brand_id` from `email_content`; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateViewWithoutQuotes.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateViewWithoutQuotes.out new file mode 100644 index 0000000000..78af91ba06 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseCreateViewWithoutQuotes.out @@ -0,0 +1,1295 @@ +{ + "query": "CREATE ALGORITHM=UNDEFINED DEFINER=root@localhost\nSQL SECURITY DEFINER VIEW `test_view` AS\nselect `email_content`.`content_id` AS `content_id`,\n`email_content`.`brand_id` AS `brand_id` from `email_content`;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "CREATE ALGORITHM=UNDEFINED DEFINER=root@localhost\nSQL SECURITY DEFINER VIEW `test_view` AS\nselect `email_content`.`content_id` AS `content_id`,\n`email_content`.`brand_id` AS `brand_id` from `email_content`;", + "len": 207, + "last": 207, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CREATE", + "value": "CREATE", + "keyword": "CREATE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALGORITHM", + "value": "ALGORITHM", + "keyword": "ALGORITHM", + "type": 1, + "flags": 1, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNDEFINED", + "value": "UNDEFINED", + "keyword": "UNDEFINED", + "type": 1, + "flags": 1, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFINER", + "value": "DEFINER", + "keyword": "DEFINER", + "type": 1, + "flags": 1, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "root", + "value": "root", + "keyword": null, + "type": 0, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@localhost", + "value": "localhost", + "keyword": null, + "type": 8, + "flags": 1, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SQL SECURITY", + "value": "SQL SECURITY", + "keyword": "SQL SECURITY", + "type": 1, + "flags": 7, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFINER", + "value": "DEFINER", + "keyword": "DEFINER", + "type": 1, + "flags": 1, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VIEW", + "value": "VIEW", + "keyword": "VIEW", + "type": 1, + "flags": 1, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`test_view`", + "value": "test_view", + "keyword": null, + "type": 8, + "flags": 2, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 91 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "select", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`email_content`", + "value": "email_content", + "keyword": null, + "type": 8, + "flags": 2, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 114 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`content_id`", + "value": "content_id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 115 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 127 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 128 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 130 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`content_id`", + "value": "content_id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 131 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 143 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 144 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`email_content`", + "value": "email_content", + "keyword": null, + "type": 8, + "flags": 2, + "position": 145 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 160 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`brand_id`", + "value": "brand_id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 161 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 171 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 172 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 174 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`brand_id`", + "value": "brand_id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 175 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 185 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "from", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 186 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 190 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`email_content`", + "value": "email_content", + "keyword": null, + "type": 8, + "flags": 2, + "position": 191 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 206 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 45, + "idx": 45 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "OPTIONS": { + "TEMPORARY": 1, + "OR REPLACE": 2, + "ALGORITHM": [ + 3, + "var=" + ], + "DEFINER": [ + 4, + "expr=" + ], + "SQL SECURITY": [ + 5, + "var" + ], + "DATABASE": 6, + "EVENT": 6, + "FUNCTION": 6, + "INDEX": 6, + "UNIQUE INDEX": 6, + "FULLTEXT INDEX": 6, + "SPATIAL INDEX": 6, + "PROCEDURE": 6, + "SERVER": 6, + "TABLE": 6, + "TABLESPACE": 6, + "TRIGGER": 6, + "USER": 6, + "VIEW": 6, + "SCHEMA": 6, + "IF NOT EXISTS": 7 + }, + "DB_OPTIONS": { + "CHARACTER SET": [ + 1, + "var=" + ], + "CHARSET": [ + 1, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 1, + "var=" + ], + "DEFAULT CHARSET": [ + 1, + "var=" + ], + "DEFAULT COLLATE": [ + 2, + "var=" + ], + "COLLATE": [ + 2, + "var=" + ] + }, + "TABLE_OPTIONS": { + "ENGINE": [ + 1, + "var=" + ], + "AUTO_INCREMENT": [ + 2, + "var=" + ], + "AVG_ROW_LENGTH": [ + 3, + "var" + ], + "CHARACTER SET": [ + 4, + "var=" + ], + "CHARSET": [ + 4, + "var=" + ], + "DEFAULT CHARACTER SET": [ + 4, + "var=" + ], + "DEFAULT CHARSET": [ + 4, + "var=" + ], + "CHECKSUM": [ + 5, + "var" + ], + "DEFAULT COLLATE": [ + 6, + "var=" + ], + "COLLATE": [ + 6, + "var=" + ], + "COMMENT": [ + 7, + "var=" + ], + "CONNECTION": [ + 8, + "var" + ], + "DATA DIRECTORY": [ + 9, + "var" + ], + "DELAY_KEY_WRITE": [ + 10, + "var" + ], + "INDEX DIRECTORY": [ + 11, + "var" + ], + "INSERT_METHOD": [ + 12, + "var" + ], + "KEY_BLOCK_SIZE": [ + 13, + "var" + ], + "MAX_ROWS": [ + 14, + "var" + ], + "MIN_ROWS": [ + 15, + "var" + ], + "PACK_KEYS": [ + 16, + "var" + ], + "PASSWORD": [ + 17, + "var" + ], + "ROW_FORMAT": [ + 18, + "var" + ], + "TABLESPACE": [ + 19, + "var" + ], + "STORAGE": [ + 20, + "var" + ], + "UNION": [ + 21, + "var" + ] + }, + "FUNC_OPTIONS": { + "NOT": [ + 2, + "var" + ], + "FUNCTION": [ + 3, + "var=" + ], + "PROCEDURE": [ + 3, + "var=" + ], + "CONTAINS": [ + 4, + "expr" + ], + "NO": [ + 4, + "var" + ], + "READS": [ + 4, + "var" + ], + "MODIFIES": [ + 4, + "expr" + ], + "SQL SECURITY": [ + 6, + "var" + ], + "LANGUAGE": [ + 7, + "var" + ], + "COMMENT": [ + 8, + "var" + ], + "CREATE": 1, + "DETERMINISTIC": 2, + "DATA": 5 + }, + "TRIGGER_OPTIONS": { + "BEFORE": 1, + "AFTER": 1, + "INSERT": 2, + "UPDATE": 2, + "DELETE": 2 + }, + "name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "test_view", + "column": null, + "expr": "`test_view`", + "alias": null, + "function": null, + "subquery": null + }, + "entityOptions": null, + "fields": null, + "select": { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "email_content", + "column": "content_id", + "expr": "`email_content`.`content_id`", + "alias": "content_id", + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "email_content", + "column": "brand_id", + "expr": "`email_content`.`brand_id`", + "alias": "brand_id", + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "email_content", + "column": null, + "expr": "`email_content`", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": null, + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 21, + "last": 42 + }, + "like": null, + "partitionBy": null, + "partitionsNum": null, + "subpartitionBy": null, + "subpartitionsNum": null, + "partitions": null, + "table": null, + "return": null, + "parameters": null, + "body": [ + { + "@type": "@44" + } + ], + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": { + "name": "ALGORITHM", + "equals": true, + "expr": "UNDEFINED", + "value": "UNDEFINED" + }, + "4": { + "name": "DEFINER", + "equals": true, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "root", + "expr": "root@localhost", + "alias": null, + "function": null, + "subquery": null + }, + "value": "root@localhost" + }, + "5": { + "name": "SQL SECURITY", + "equals": false, + "expr": "DEFINER", + "value": "DEFINER" + }, + "6": "VIEW" + } + }, + "first": 0, + "last": 43 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelete.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelete.in new file mode 100644 index 0000000000..40dbb86afd --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelete.in @@ -0,0 +1,9 @@ +DELETE LOW_PRIORITY +/* */ +FROM + `test`.users +WHERE + `id`<3 AND (username="Dan" or username="Paul") +ORDER BY + id +; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelete.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelete.out new file mode 100644 index 0000000000..6bd3509043 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelete.out @@ -0,0 +1,977 @@ +{ + "query": "DELETE LOW_PRIORITY\n\/* *\/\nFROM\n `test`.users\nWHERE\n `id`<3 AND (username=\"Dan\" or username=\"Paul\")\nORDER BY\n id\n;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "DELETE LOW_PRIORITY\n\/* *\/\nFROM\n `test`.users\nWHERE\n `id`<3 AND (username=\"Dan\" or username=\"Paul\")\nORDER BY\n id\n;", + "len": 122, + "last": 122, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOW_PRIORITY", + "value": "LOW_PRIORITY", + "keyword": "LOW_PRIORITY", + "type": 1, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* *\/", + "value": "\/* *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`test`", + "value": "test", + "keyword": null, + "type": 8, + "flags": 2, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "users", + "value": "users", + "keyword": null, + "type": 0, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`id`", + "value": "id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "<", + "value": "<", + "keyword": null, + "type": 2, + "flags": 2, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3", + "value": 3, + "keyword": null, + "type": 6, + "flags": 0, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AND", + "value": "AND", + "keyword": "AND", + "type": 1, + "flags": 3, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "username", + "value": "username", + "keyword": null, + "type": 0, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Dan\"", + "value": "Dan", + "keyword": null, + "type": 7, + "flags": 2, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "or", + "value": "OR", + "keyword": "OR", + "type": 1, + "flags": 3, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "username", + "value": "username", + "keyword": null, + "type": 0, + "flags": 0, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Paul\"", + "value": "Paul", + "keyword": null, + "type": 7, + "flags": 2, + "position": 97 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 103 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 104 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ORDER BY", + "value": "ORDER BY", + "keyword": "ORDER BY", + "type": 1, + "flags": 7, + "position": 105 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 118 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 120 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 38, + "idx": 38 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "OPTIONS": { + "LOW_PRIORITY": 1, + "QUICK": 2, + "IGNORE": 3 + }, + "CLAUSES": { + "DELETE": [ + "DELETE", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "FROM": [ + "FROM", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "USING": [ + "USING", + 3 + ], + "WHERE": [ + "WHERE", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ] + }, + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": "test", + "table": "users", + "column": null, + "expr": "`test`.users", + "alias": null, + "function": null, + "subquery": null + } + ], + "join": null, + "using": null, + "columns": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [ + "id" + ], + "isOperator": false, + "expr": "`id`<3" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [], + "isOperator": true, + "expr": "AND" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [ + "username", + "Dan" + ], + "isOperator": false, + "expr": "(username=\"Dan\"" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [], + "isOperator": true, + "expr": "OR" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [ + "username", + "Paul" + ], + "isOperator": false, + "expr": "username=\"Paul\")" + } + ], + "order": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "id", + "expr": "id", + "alias": null, + "function": null, + "subquery": null + }, + "type": "ASC" + } + ], + "limit": null, + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "LOW_PRIORITY" + } + }, + "first": 0, + "last": 35 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelete10.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelete10.in new file mode 100644 index 0000000000..190c95d7da --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelete10.in @@ -0,0 +1 @@ +DELETE QUICK table1, table2.* FROM table1 as t1, table2 as t2 WHERE 1=1 \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelete10.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelete10.out new file mode 100644 index 0000000000..a1f2f86f43 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelete10.out @@ -0,0 +1,821 @@ +{ + "query": "DELETE QUICK table1, table2.* FROM table1 as t1, table2 as t2 WHERE 1=1", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "DELETE QUICK table1, table2.* FROM table1 as t1, table2 as t2 WHERE 1=1", + "len": 71, + "last": 71, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "QUICK", + "value": "QUICK", + "keyword": "QUICK", + "type": 1, + "flags": 1, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table2", + "value": "table2", + "keyword": null, + "type": 0, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t1", + "value": "t1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table2", + "value": "table2", + "keyword": null, + "type": 0, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t2", + "value": "t2", + "keyword": null, + "type": 0, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 32, + "idx": 32 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "OPTIONS": { + "LOW_PRIORITY": 1, + "QUICK": 2, + "IGNORE": 3 + }, + "CLAUSES": { + "DELETE": [ + "DELETE", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "FROM": [ + "FROM", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "USING": [ + "USING", + 3 + ], + "WHERE": [ + "WHERE", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ] + }, + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "table1", + "column": null, + "expr": "table1", + "alias": "t1", + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "table2", + "column": null, + "expr": "table2", + "alias": "t2", + "function": null, + "subquery": null + } + ], + "join": null, + "using": null, + "columns": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "table1", + "expr": "table1", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "table2", + "column": null, + "expr": "table2.*", + "alias": null, + "function": null, + "subquery": null + } + ], + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [], + "isOperator": false, + "expr": "1=1" + } + ], + "order": null, + "limit": null, + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": "QUICK" + } + }, + "first": 0, + "last": 30 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelete11.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelete11.in new file mode 100644 index 0000000000..8c9ad7ab69 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelete11.in @@ -0,0 +1 @@ +DELETE QUICK FROM table1, table2.* USING table1 AS `t1`, table2 AS `t2` WHERE 1=1 \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelete11.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelete11.out new file mode 100644 index 0000000000..07c16b879e --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelete11.out @@ -0,0 +1,839 @@ +{ + "query": "DELETE QUICK FROM table1, table2.* USING table1 AS `t1`, table2 AS `t2` WHERE 1=1", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "DELETE QUICK FROM table1, table2.* USING table1 AS `t1`, table2 AS `t2` WHERE 1=1", + "len": 81, + "last": 81, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "QUICK", + "value": "QUICK", + "keyword": "QUICK", + "type": 1, + "flags": 1, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table2", + "value": "table2", + "keyword": null, + "type": 0, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USING", + "value": "USING", + "keyword": "USING", + "type": 1, + "flags": 3, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`t1`", + "value": "t1", + "keyword": null, + "type": 8, + "flags": 2, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table2", + "value": "table2", + "keyword": null, + "type": 0, + "flags": 0, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`t2`", + "value": "t2", + "keyword": null, + "type": 8, + "flags": 2, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 34, + "idx": 34 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "OPTIONS": { + "LOW_PRIORITY": 1, + "QUICK": 2, + "IGNORE": 3 + }, + "CLAUSES": { + "DELETE": [ + "DELETE", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "FROM": [ + "FROM", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "USING": [ + "USING", + 3 + ], + "WHERE": [ + "WHERE", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ] + }, + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "table1", + "column": null, + "expr": "table1", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": "table2", + "table": null, + "column": null, + "expr": "table2.*", + "alias": null, + "function": null, + "subquery": null + } + ], + "join": null, + "using": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "table1", + "expr": "table1", + "alias": "t1", + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "table2", + "expr": "table2", + "alias": "t2", + "function": null, + "subquery": null + } + ], + "columns": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [], + "isOperator": false, + "expr": "1=1" + } + ], + "order": null, + "limit": null, + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": "QUICK" + } + }, + "first": 0, + "last": 32 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelete12.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelete12.in new file mode 100644 index 0000000000..d781113b94 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelete12.in @@ -0,0 +1 @@ +DELETE QUICK FROM table1 WHERE 1=1 LIMIT 0, 25 \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelete12.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelete12.out new file mode 100644 index 0000000000..fe09f83bbd --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelete12.out @@ -0,0 +1,656 @@ +{ + "query": "DELETE QUICK FROM table1 WHERE 1=1 LIMIT 0, 25", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "DELETE QUICK FROM table1 WHERE 1=1 LIMIT 0, 25", + "len": 46, + "last": 46, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "QUICK", + "value": "QUICK", + "keyword": "QUICK", + "type": 1, + "flags": 1, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LIMIT", + "value": "LIMIT", + "keyword": "LIMIT", + "type": 1, + "flags": 3, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "0", + "value": 0, + "keyword": null, + "type": 6, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "25", + "value": 25, + "keyword": null, + "type": 6, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 21, + "idx": 21 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "OPTIONS": { + "LOW_PRIORITY": 1, + "QUICK": 2, + "IGNORE": 3 + }, + "CLAUSES": { + "DELETE": [ + "DELETE", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "FROM": [ + "FROM", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "USING": [ + "USING", + 3 + ], + "WHERE": [ + "WHERE", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ] + }, + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "table1", + "column": null, + "expr": "table1", + "alias": null, + "function": null, + "subquery": null + } + ], + "join": null, + "using": null, + "columns": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [], + "isOperator": false, + "expr": "1=1" + } + ], + "order": null, + "limit": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "offset": 0, + "rowCount": 25 + }, + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": "QUICK" + } + }, + "first": 0, + "last": 19 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelete2.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelete2.in new file mode 100644 index 0000000000..df7954afb8 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelete2.in @@ -0,0 +1 @@ +DELETE IGNORE FROM t1 \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelete2.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelete2.out new file mode 100644 index 0000000000..73d801f34b --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelete2.out @@ -0,0 +1,500 @@ +{ + "query": "DELETE IGNORE FROM t1", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "DELETE IGNORE FROM t1", + "len": 21, + "last": 21, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IGNORE", + "value": "IGNORE", + "keyword": "IGNORE", + "type": 1, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t1", + "value": "t1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 8, + "idx": 8 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "OPTIONS": { + "LOW_PRIORITY": 1, + "QUICK": 2, + "IGNORE": 3 + }, + "CLAUSES": { + "DELETE": [ + "DELETE", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "FROM": [ + "FROM", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "USING": [ + "USING", + 3 + ], + "WHERE": [ + "WHERE", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ] + }, + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "t1", + "column": null, + "expr": "t1", + "alias": null, + "function": null, + "subquery": null + } + ], + "join": null, + "using": null, + "columns": null, + "partition": null, + "where": null, + "order": null, + "limit": null, + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "IGNORE" + } + }, + "first": 0, + "last": 6 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelete3.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelete3.in new file mode 100644 index 0000000000..3f0b94fe82 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelete3.in @@ -0,0 +1 @@ +DELETE IGNORE FROM t1 WHERE 1=1 \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelete3.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelete3.out new file mode 100644 index 0000000000..78fdbf22ad --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelete3.out @@ -0,0 +1,589 @@ +{ + "query": "DELETE IGNORE FROM t1 WHERE 1=1", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "DELETE IGNORE FROM t1 WHERE 1=1", + "len": 31, + "last": 31, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IGNORE", + "value": "IGNORE", + "keyword": "IGNORE", + "type": 1, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t1", + "value": "t1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 14, + "idx": 14 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "OPTIONS": { + "LOW_PRIORITY": 1, + "QUICK": 2, + "IGNORE": 3 + }, + "CLAUSES": { + "DELETE": [ + "DELETE", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "FROM": [ + "FROM", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "USING": [ + "USING", + 3 + ], + "WHERE": [ + "WHERE", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ] + }, + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "t1", + "column": null, + "expr": "t1", + "alias": null, + "function": null, + "subquery": null + } + ], + "join": null, + "using": null, + "columns": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [], + "isOperator": false, + "expr": "1=1" + } + ], + "order": null, + "limit": null, + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "IGNORE" + } + }, + "first": 0, + "last": 12 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelete4.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelete4.in new file mode 100644 index 0000000000..77eb49dfc0 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelete4.in @@ -0,0 +1 @@ +DELETE IGNORE FROM t1 WHERE 1=1 ORDER BY id \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelete4.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelete4.out new file mode 100644 index 0000000000..4b2494ad2e --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelete4.out @@ -0,0 +1,653 @@ +{ + "query": "DELETE IGNORE FROM t1 WHERE 1=1 ORDER BY id", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "DELETE IGNORE FROM t1 WHERE 1=1 ORDER BY id", + "len": 43, + "last": 43, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IGNORE", + "value": "IGNORE", + "keyword": "IGNORE", + "type": 1, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t1", + "value": "t1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ORDER BY", + "value": "ORDER BY", + "keyword": "ORDER BY", + "type": 1, + "flags": 7, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 18, + "idx": 18 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "OPTIONS": { + "LOW_PRIORITY": 1, + "QUICK": 2, + "IGNORE": 3 + }, + "CLAUSES": { + "DELETE": [ + "DELETE", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "FROM": [ + "FROM", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "USING": [ + "USING", + 3 + ], + "WHERE": [ + "WHERE", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ] + }, + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "t1", + "column": null, + "expr": "t1", + "alias": null, + "function": null, + "subquery": null + } + ], + "join": null, + "using": null, + "columns": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [], + "isOperator": false, + "expr": "1=1" + } + ], + "order": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "id", + "expr": "id", + "alias": null, + "function": null, + "subquery": null + }, + "type": "ASC" + } + ], + "limit": null, + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "IGNORE" + } + }, + "first": 0, + "last": 16 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelete5.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelete5.in new file mode 100644 index 0000000000..1db7d3c9c8 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelete5.in @@ -0,0 +1 @@ +DELETE IGNORE FROM t1 WHERE 1=1 ORDER BY id LIMIT 0,25 \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelete5.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelete5.out new file mode 100644 index 0000000000..2071d8ad49 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelete5.out @@ -0,0 +1,711 @@ +{ + "query": "DELETE IGNORE FROM t1 WHERE 1=1 ORDER BY id LIMIT 0,25", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "DELETE IGNORE FROM t1 WHERE 1=1 ORDER BY id LIMIT 0,25", + "len": 54, + "last": 54, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IGNORE", + "value": "IGNORE", + "keyword": "IGNORE", + "type": 1, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t1", + "value": "t1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ORDER BY", + "value": "ORDER BY", + "keyword": "ORDER BY", + "type": 1, + "flags": 7, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LIMIT", + "value": "LIMIT", + "keyword": "LIMIT", + "type": 1, + "flags": 3, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "0", + "value": 0, + "keyword": null, + "type": 6, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "25", + "value": 25, + "keyword": null, + "type": 6, + "flags": 0, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 24, + "idx": 24 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "OPTIONS": { + "LOW_PRIORITY": 1, + "QUICK": 2, + "IGNORE": 3 + }, + "CLAUSES": { + "DELETE": [ + "DELETE", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "FROM": [ + "FROM", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "USING": [ + "USING", + 3 + ], + "WHERE": [ + "WHERE", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ] + }, + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "t1", + "column": null, + "expr": "t1", + "alias": null, + "function": null, + "subquery": null + } + ], + "join": null, + "using": null, + "columns": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [], + "isOperator": false, + "expr": "1=1" + } + ], + "order": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "id", + "expr": "id", + "alias": null, + "function": null, + "subquery": null + }, + "type": "ASC" + } + ], + "limit": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "offset": 0, + "rowCount": 25 + }, + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "IGNORE" + } + }, + "first": 0, + "last": 22 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelete6.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelete6.in new file mode 100644 index 0000000000..0a018b7b17 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelete6.in @@ -0,0 +1 @@ +DELETE IGNORE FROM t1 ORDER BY id \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelete6.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelete6.out new file mode 100644 index 0000000000..05fd27bd75 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelete6.out @@ -0,0 +1,564 @@ +{ + "query": "DELETE IGNORE FROM t1 ORDER BY id", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "DELETE IGNORE FROM t1 ORDER BY id", + "len": 33, + "last": 33, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IGNORE", + "value": "IGNORE", + "keyword": "IGNORE", + "type": 1, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t1", + "value": "t1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ORDER BY", + "value": "ORDER BY", + "keyword": "ORDER BY", + "type": 1, + "flags": 7, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 12, + "idx": 12 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "OPTIONS": { + "LOW_PRIORITY": 1, + "QUICK": 2, + "IGNORE": 3 + }, + "CLAUSES": { + "DELETE": [ + "DELETE", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "FROM": [ + "FROM", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "USING": [ + "USING", + 3 + ], + "WHERE": [ + "WHERE", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ] + }, + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "t1", + "column": null, + "expr": "t1", + "alias": null, + "function": null, + "subquery": null + } + ], + "join": null, + "using": null, + "columns": null, + "partition": null, + "where": null, + "order": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "id", + "expr": "id", + "alias": null, + "function": null, + "subquery": null + }, + "type": "ASC" + } + ], + "limit": null, + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "IGNORE" + } + }, + "first": 0, + "last": 10 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelete7.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelete7.in new file mode 100644 index 0000000000..cea23bb4f5 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelete7.in @@ -0,0 +1 @@ +DELETE IGNORE FROM t1 ORDER BY id LIMIT 0,25 \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelete7.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelete7.out new file mode 100644 index 0000000000..d4fcfdbb96 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelete7.out @@ -0,0 +1,622 @@ +{ + "query": "DELETE IGNORE FROM t1 ORDER BY id LIMIT 0,25", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "DELETE IGNORE FROM t1 ORDER BY id LIMIT 0,25", + "len": 44, + "last": 44, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IGNORE", + "value": "IGNORE", + "keyword": "IGNORE", + "type": 1, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t1", + "value": "t1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ORDER BY", + "value": "ORDER BY", + "keyword": "ORDER BY", + "type": 1, + "flags": 7, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LIMIT", + "value": "LIMIT", + "keyword": "LIMIT", + "type": 1, + "flags": 3, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "0", + "value": 0, + "keyword": null, + "type": 6, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "25", + "value": 25, + "keyword": null, + "type": 6, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 18, + "idx": 18 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "OPTIONS": { + "LOW_PRIORITY": 1, + "QUICK": 2, + "IGNORE": 3 + }, + "CLAUSES": { + "DELETE": [ + "DELETE", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "FROM": [ + "FROM", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "USING": [ + "USING", + 3 + ], + "WHERE": [ + "WHERE", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ] + }, + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "t1", + "column": null, + "expr": "t1", + "alias": null, + "function": null, + "subquery": null + } + ], + "join": null, + "using": null, + "columns": null, + "partition": null, + "where": null, + "order": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "id", + "expr": "id", + "alias": null, + "function": null, + "subquery": null + }, + "type": "ASC" + } + ], + "limit": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "offset": 0, + "rowCount": 25 + }, + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "IGNORE" + } + }, + "first": 0, + "last": 16 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelete8.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelete8.in new file mode 100644 index 0000000000..47542f6800 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelete8.in @@ -0,0 +1 @@ +DELETE IGNORE FROM t1 LIMIT 0, 25 \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelete8.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelete8.out new file mode 100644 index 0000000000..4d0c341b53 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelete8.out @@ -0,0 +1,567 @@ +{ + "query": "DELETE IGNORE FROM t1 LIMIT 0, 25", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "DELETE IGNORE FROM t1 LIMIT 0, 25", + "len": 33, + "last": 33, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IGNORE", + "value": "IGNORE", + "keyword": "IGNORE", + "type": 1, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t1", + "value": "t1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LIMIT", + "value": "LIMIT", + "keyword": "LIMIT", + "type": 1, + "flags": 3, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "0", + "value": 0, + "keyword": null, + "type": 6, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "25", + "value": 25, + "keyword": null, + "type": 6, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 15, + "idx": 15 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "OPTIONS": { + "LOW_PRIORITY": 1, + "QUICK": 2, + "IGNORE": 3 + }, + "CLAUSES": { + "DELETE": [ + "DELETE", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "FROM": [ + "FROM", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "USING": [ + "USING", + 3 + ], + "WHERE": [ + "WHERE", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ] + }, + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "t1", + "column": null, + "expr": "t1", + "alias": null, + "function": null, + "subquery": null + } + ], + "join": null, + "using": null, + "columns": null, + "partition": null, + "where": null, + "order": null, + "limit": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "offset": 0, + "rowCount": 25 + }, + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": "IGNORE" + } + }, + "first": 0, + "last": 13 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelete9.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelete9.in new file mode 100644 index 0000000000..695847c957 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelete9.in @@ -0,0 +1 @@ +DELETE QUICK table1, table2.* FROM table1 as t1, table2 as t2 \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelete9.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelete9.out new file mode 100644 index 0000000000..3e55a91d82 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelete9.out @@ -0,0 +1,732 @@ +{ + "query": "DELETE QUICK table1, table2.* FROM table1 as t1, table2 as t2", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "DELETE QUICK table1, table2.* FROM table1 as t1, table2 as t2", + "len": 61, + "last": 61, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "QUICK", + "value": "QUICK", + "keyword": "QUICK", + "type": 1, + "flags": 1, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table2", + "value": "table2", + "keyword": null, + "type": 0, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t1", + "value": "t1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table2", + "value": "table2", + "keyword": null, + "type": 0, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t2", + "value": "t2", + "keyword": null, + "type": 0, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 26, + "idx": 26 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "OPTIONS": { + "LOW_PRIORITY": 1, + "QUICK": 2, + "IGNORE": 3 + }, + "CLAUSES": { + "DELETE": [ + "DELETE", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "FROM": [ + "FROM", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "USING": [ + "USING", + 3 + ], + "WHERE": [ + "WHERE", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ] + }, + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "table1", + "column": null, + "expr": "table1", + "alias": "t1", + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "table2", + "column": null, + "expr": "table2", + "alias": "t2", + "function": null, + "subquery": null + } + ], + "join": null, + "using": null, + "columns": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "table1", + "expr": "table1", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "table2", + "column": null, + "expr": "table2.*", + "alias": null, + "function": null, + "subquery": null + } + ], + "partition": null, + "where": null, + "order": null, + "limit": null, + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": "QUICK" + } + }, + "first": 0, + "last": 24 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteErr1.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteErr1.in new file mode 100644 index 0000000000..c04c39afa5 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteErr1.in @@ -0,0 +1 @@ +DELETE QUICK USING table1, table2.* \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteErr1.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteErr1.out new file mode 100644 index 0000000000..ba2f34513a --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteErr1.out @@ -0,0 +1,536 @@ +{ + "query": "DELETE QUICK USING table1, table2.*", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "DELETE QUICK USING table1, table2.*", + "len": 35, + "last": 35, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "QUICK", + "value": "QUICK", + "keyword": "QUICK", + "type": 1, + "flags": 1, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USING", + "value": "USING", + "keyword": "USING", + "type": 1, + "flags": 3, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table2", + "value": "table2", + "keyword": null, + "type": 0, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 1, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 13, + "idx": 14 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "OPTIONS": { + "LOW_PRIORITY": 1, + "QUICK": 2, + "IGNORE": 3 + }, + "CLAUSES": { + "DELETE": [ + "DELETE", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "FROM": [ + "FROM", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "USING": [ + "USING", + 3 + ], + "WHERE": [ + "WHERE", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ] + }, + "from": null, + "join": null, + "using": null, + "columns": null, + "partition": null, + "where": null, + "order": null, + "limit": null, + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": "QUICK" + } + }, + "first": 0, + "last": 3 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected keyword.", + { + "@type": "@6" + }, + 0 + ], + [ + "Unrecognized statement type.", + { + "@type": "@6" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteErr10.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteErr10.in new file mode 100644 index 0000000000..f1a090f8f3 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteErr10.in @@ -0,0 +1 @@ +DELETE QUICK FROM table1, table2 USING t1 as t,t2 as tt ASC a =1; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteErr10.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteErr10.out new file mode 100644 index 0000000000..ad3f07883d --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteErr10.out @@ -0,0 +1,810 @@ +{ + "query": "DELETE QUICK FROM table1, table2 USING t1 as t,t2 as tt ASC a =1;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "DELETE QUICK FROM table1, table2 USING t1 as t,t2 as tt ASC a =1;", + "len": 65, + "last": 65, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "QUICK", + "value": "QUICK", + "keyword": "QUICK", + "type": 1, + "flags": 1, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table2", + "value": "table2", + "keyword": null, + "type": 0, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USING", + "value": "USING", + "keyword": "USING", + "type": 1, + "flags": 3, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t1", + "value": "t1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t", + "value": "t", + "keyword": null, + "type": 0, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t2", + "value": "t2", + "keyword": null, + "type": 0, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "tt", + "value": "tt", + "keyword": null, + "type": 0, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ASC", + "value": "ASC", + "keyword": "ASC", + "type": 1, + "flags": 3, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": 0, + "flags": 0, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 33, + "idx": 33 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "OPTIONS": { + "LOW_PRIORITY": 1, + "QUICK": 2, + "IGNORE": 3 + }, + "CLAUSES": { + "DELETE": [ + "DELETE", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "FROM": [ + "FROM", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "USING": [ + "USING", + 3 + ], + "WHERE": [ + "WHERE", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ] + }, + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "table1", + "column": null, + "expr": "table1", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "table2", + "column": null, + "expr": "table2", + "alias": null, + "function": null, + "subquery": null + } + ], + "join": null, + "using": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "t1", + "expr": "t1", + "alias": "t", + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "t2", + "expr": "t2", + "alias": "tt", + "function": null, + "subquery": null + } + ], + "columns": null, + "partition": null, + "where": null, + "order": null, + "limit": null, + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": "QUICK" + } + }, + "first": 0, + "last": 24 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected keyword.", + { + "@type": "@27" + }, + 0 + ], + [ + "Unrecognized statement type.", + { + "@type": "@27" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteErr11.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteErr11.in new file mode 100644 index 0000000000..eef5682f8b --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteErr11.in @@ -0,0 +1 @@ +DELETE QUICK FROM table1 WHERE a = 1 ASC \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteErr11.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteErr11.out new file mode 100644 index 0000000000..9168a85098 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteErr11.out @@ -0,0 +1,642 @@ +{ + "query": "DELETE QUICK FROM table1 WHERE a = 1 ASC", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "DELETE QUICK FROM table1 WHERE a = 1 ASC", + "len": 40, + "last": 40, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "QUICK", + "value": "QUICK", + "keyword": "QUICK", + "type": 1, + "flags": 1, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": 0, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ASC", + "value": "ASC", + "keyword": "ASC", + "type": 1, + "flags": 3, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 18, + "idx": 19 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "OPTIONS": { + "LOW_PRIORITY": 1, + "QUICK": 2, + "IGNORE": 3 + }, + "CLAUSES": { + "DELETE": [ + "DELETE", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "FROM": [ + "FROM", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "USING": [ + "USING", + 3 + ], + "WHERE": [ + "WHERE", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ] + }, + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "table1", + "column": null, + "expr": "table1", + "alias": null, + "function": null, + "subquery": null + } + ], + "join": null, + "using": null, + "columns": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [ + "a" + ], + "isOperator": false, + "expr": "a = 1" + } + ], + "order": null, + "limit": null, + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": "QUICK" + } + }, + "first": 0, + "last": 15 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected keyword.", + { + "@type": "@18" + }, + 0 + ], + [ + "Unrecognized statement type.", + { + "@type": "@18" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteErr12.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteErr12.in new file mode 100644 index 0000000000..f2fa227ef2 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteErr12.in @@ -0,0 +1 @@ +DELETE QUICK FROM table1, table2 USING t1 as t,t2 as tt as ttt WHEE a =1; diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteErr12.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteErr12.out new file mode 100644 index 0000000000..be99bb83ef --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteErr12.out @@ -0,0 +1,890 @@ +{ + "query": "DELETE QUICK FROM table1, table2 USING t1 as t,t2 as tt as ttt WHEE a =1;\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "DELETE QUICK FROM table1, table2 USING t1 as t,t2 as tt as ttt WHEE a =1;\n", + "len": 74, + "last": 74, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "QUICK", + "value": "QUICK", + "keyword": "QUICK", + "type": 1, + "flags": 1, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table2", + "value": "table2", + "keyword": null, + "type": 0, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USING", + "value": "USING", + "keyword": "USING", + "type": 1, + "flags": 3, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t1", + "value": "t1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t", + "value": "t", + "keyword": null, + "type": 0, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t2", + "value": "t2", + "keyword": null, + "type": 0, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "tt", + "value": "tt", + "keyword": null, + "type": 0, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ttt", + "value": "ttt", + "keyword": null, + "type": 0, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHEE", + "value": "WHEE", + "keyword": null, + "type": 0, + "flags": 0, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": 0, + "flags": 0, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 38, + "idx": 38 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "OPTIONS": { + "LOW_PRIORITY": 1, + "QUICK": 2, + "IGNORE": 3 + }, + "CLAUSES": { + "DELETE": [ + "DELETE", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "FROM": [ + "FROM", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "USING": [ + "USING", + 3 + ], + "WHERE": [ + "WHERE", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ] + }, + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "table1", + "column": null, + "expr": "table1", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "table2", + "column": null, + "expr": "table2", + "alias": null, + "function": null, + "subquery": null + } + ], + "join": null, + "using": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "t1", + "expr": "t1", + "alias": "t", + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "t2", + "expr": "t2", + "alias": "tt", + "function": null, + "subquery": null + } + ], + "columns": null, + "partition": null, + "where": null, + "order": null, + "limit": null, + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": "QUICK" + } + }, + "first": 0, + "last": 26 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "An alias was previously found.", + { + "@type": "@29" + }, + 0 + ], + [ + "An alias was expected.", + { + "@type": "@28" + }, + 0 + ], + [ + "Unexpected token.", + { + "@type": "@29" + }, + 0 + ], + [ + "Unexpected beginning of statement.", + { + "@type": "@29" + }, + 0 + ], + [ + "Unexpected beginning of statement.", + { + "@type": "@31" + }, + 0 + ], + [ + "Unexpected beginning of statement.", + { + "@type": "@33" + }, + 0 + ], + [ + "Unexpected beginning of statement.", + { + "@type": "@36" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteErr2.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteErr2.in new file mode 100644 index 0000000000..7df3901458 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteErr2.in @@ -0,0 +1 @@ +DELETE QUICK table1, table2.* USING table1 AS `t1`, table2 AS `t2` WHERE 1=1 \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteErr2.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteErr2.out new file mode 100644 index 0000000000..659b2bfb5f --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteErr2.out @@ -0,0 +1,754 @@ +{ + "query": "DELETE QUICK table1, table2.* USING table1 AS `t1`, table2 AS `t2` WHERE 1=1", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "DELETE QUICK table1, table2.* USING table1 AS `t1`, table2 AS `t2` WHERE 1=1", + "len": 76, + "last": 76, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "QUICK", + "value": "QUICK", + "keyword": "QUICK", + "type": 1, + "flags": 1, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table2", + "value": "table2", + "keyword": null, + "type": 0, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USING", + "value": "USING", + "keyword": "USING", + "type": 1, + "flags": 3, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`t1`", + "value": "t1", + "keyword": null, + "type": 8, + "flags": 2, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table2", + "value": "table2", + "keyword": null, + "type": 0, + "flags": 0, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`t2`", + "value": "t2", + "keyword": null, + "type": 8, + "flags": 2, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 32, + "idx": 33 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "OPTIONS": { + "LOW_PRIORITY": 1, + "QUICK": 2, + "IGNORE": 3 + }, + "CLAUSES": { + "DELETE": [ + "DELETE", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "FROM": [ + "FROM", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "USING": [ + "USING", + 3 + ], + "WHERE": [ + "WHERE", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ] + }, + "from": null, + "join": null, + "using": null, + "columns": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "table1", + "expr": "table1", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "table2", + "column": null, + "expr": "table2.*", + "alias": null, + "function": null, + "subquery": null + } + ], + "partition": null, + "where": null, + "order": null, + "limit": null, + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": "QUICK" + } + }, + "first": 0, + "last": 10 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected keyword.", + { + "@type": "@13" + }, + 0 + ], + [ + "Unrecognized statement type.", + { + "@type": "@13" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteErr3.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteErr3.in new file mode 100644 index 0000000000..1bbda4289a --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteErr3.in @@ -0,0 +1 @@ +DELETE QUICK table1, table2.* table1 AS `t1` table2 AS `t2` WHERE 1=1 \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteErr3.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteErr3.out new file mode 100644 index 0000000000..140419c301 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteErr3.out @@ -0,0 +1,741 @@ +{ + "query": "DELETE QUICK table1, table2.* table1 AS `t1` table2 AS `t2` WHERE 1=1", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "DELETE QUICK table1, table2.* table1 AS `t1` table2 AS `t2` WHERE 1=1", + "len": 69, + "last": 69, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "QUICK", + "value": "QUICK", + "keyword": "QUICK", + "type": 1, + "flags": 1, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table2", + "value": "table2", + "keyword": null, + "type": 0, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 1, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`t1`", + "value": "t1", + "keyword": null, + "type": 8, + "flags": 2, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table2", + "value": "table2", + "keyword": null, + "type": 0, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`t2`", + "value": "t2", + "keyword": null, + "type": 8, + "flags": 2, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 29, + "idx": 30 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "OPTIONS": { + "LOW_PRIORITY": 1, + "QUICK": 2, + "IGNORE": 3 + }, + "CLAUSES": { + "DELETE": [ + "DELETE", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "FROM": [ + "FROM", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "USING": [ + "USING", + 3 + ], + "WHERE": [ + "WHERE", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ] + }, + "from": null, + "join": null, + "using": null, + "columns": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "table1", + "expr": "table1", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "table2", + "column": null, + "expr": "table2.* table1", + "alias": "t1", + "function": null, + "subquery": null + } + ], + "partition": null, + "where": null, + "order": null, + "limit": null, + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": "QUICK" + } + }, + "first": 0, + "last": 16 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "An alias was previously found.", + { + "@type": "@19" + }, + 0 + ], + [ + "Unexpected token.", + { + "@type": "@19" + }, + 0 + ], + [ + "Unexpected beginning of statement.", + { + "@type": "@19" + }, + 0 + ], + [ + "Unrecognized statement type.", + { + "@type": "@21" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteErr4.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteErr4.in new file mode 100644 index 0000000000..6d5f0d8897 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteErr4.in @@ -0,0 +1 @@ +DELETE QUICK FROM table1, table2.* table1 AS `t1` USING table2 AS `t2` WHERE 1=1 ORDER BY id ASC \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteErr4.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteErr4.out new file mode 100644 index 0000000000..6dcd79c835 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteErr4.out @@ -0,0 +1,876 @@ +{ + "query": "DELETE QUICK FROM table1, table2.* table1 AS `t1` USING table2 AS `t2` WHERE 1=1 ORDER BY id ASC", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "DELETE QUICK FROM table1, table2.* table1 AS `t1` USING table2 AS `t2` WHERE 1=1 ORDER BY id ASC", + "len": 96, + "last": 96, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "QUICK", + "value": "QUICK", + "keyword": "QUICK", + "type": 1, + "flags": 1, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table2", + "value": "table2", + "keyword": null, + "type": 0, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 1, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`t1`", + "value": "t1", + "keyword": null, + "type": 8, + "flags": 2, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USING", + "value": "USING", + "keyword": "USING", + "type": 1, + "flags": 3, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table2", + "value": "table2", + "keyword": null, + "type": 0, + "flags": 0, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`t2`", + "value": "t2", + "keyword": null, + "type": 8, + "flags": 2, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ORDER BY", + "value": "ORDER BY", + "keyword": "ORDER BY", + "type": 1, + "flags": 7, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 90 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ASC", + "value": "ASC", + "keyword": "ASC", + "type": 1, + "flags": 3, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 39, + "idx": 40 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "OPTIONS": { + "LOW_PRIORITY": 1, + "QUICK": 2, + "IGNORE": 3 + }, + "CLAUSES": { + "DELETE": [ + "DELETE", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "FROM": [ + "FROM", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "USING": [ + "USING", + 3 + ], + "WHERE": [ + "WHERE", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ] + }, + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "table1", + "column": null, + "expr": "table1", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": "table2", + "table": null, + "column": null, + "expr": "table2.* table1", + "alias": "t1", + "function": null, + "subquery": null + } + ], + "join": null, + "using": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "table2", + "expr": "table2", + "alias": "t2", + "function": null, + "subquery": null + } + ], + "columns": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [], + "isOperator": false, + "expr": "1=1" + } + ], + "order": null, + "limit": null, + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": "QUICK" + } + }, + "first": 0, + "last": 32 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "This type of clause is not valid in Multi-table queries.", + { + "@type": "@35" + }, + 0 + ], + [ + "Unrecognized statement type.", + { + "@type": "@35" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteErr5.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteErr5.in new file mode 100644 index 0000000000..6fd841363c --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteErr5.in @@ -0,0 +1 @@ +DELETE QUICK FROM table1 WHERE 1=1 ORDER BY id ASC WHERE 1=1 \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteErr5.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteErr5.out new file mode 100644 index 0000000000..d49248f72e --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteErr5.out @@ -0,0 +1,740 @@ +{ + "query": "DELETE QUICK FROM table1 WHERE 1=1 ORDER BY id ASC WHERE 1=1", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "DELETE QUICK FROM table1 WHERE 1=1 ORDER BY id ASC WHERE 1=1", + "len": 60, + "last": 60, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "QUICK", + "value": "QUICK", + "keyword": "QUICK", + "type": 1, + "flags": 1, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ORDER BY", + "value": "ORDER BY", + "keyword": "ORDER BY", + "type": 1, + "flags": 7, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ASC", + "value": "ASC", + "keyword": "ASC", + "type": 1, + "flags": 3, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 26, + "idx": 27 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "OPTIONS": { + "LOW_PRIORITY": 1, + "QUICK": 2, + "IGNORE": 3 + }, + "CLAUSES": { + "DELETE": [ + "DELETE", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "FROM": [ + "FROM", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "USING": [ + "USING", + 3 + ], + "WHERE": [ + "WHERE", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ] + }, + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "table1", + "column": null, + "expr": "table1", + "alias": null, + "function": null, + "subquery": null + } + ], + "join": null, + "using": null, + "columns": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [], + "isOperator": false, + "expr": "1=1" + } + ], + "order": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "id", + "expr": "id", + "alias": null, + "function": null, + "subquery": null + }, + "type": "ASC" + } + ], + "limit": null, + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": "QUICK" + } + }, + "first": 0, + "last": 19 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected keyword.", + { + "@type": "@22" + }, + 0 + ], + [ + "Unrecognized statement type.", + { + "@type": "@22" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteErr6.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteErr6.in new file mode 100644 index 0000000000..da53badbfc --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteErr6.in @@ -0,0 +1 @@ +DELETE QUICK FROM table1, table2.* table1 AS `t1` USING table2 AS `t2` WHERE 1=1 LIMIT 0, 25 \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteErr6.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteErr6.out new file mode 100644 index 0000000000..3f8040a7fe --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteErr6.out @@ -0,0 +1,885 @@ +{ + "query": "DELETE QUICK FROM table1, table2.* table1 AS `t1` USING table2 AS `t2` WHERE 1=1 LIMIT 0, 25", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "DELETE QUICK FROM table1, table2.* table1 AS `t1` USING table2 AS `t2` WHERE 1=1 LIMIT 0, 25", + "len": 92, + "last": 92, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "QUICK", + "value": "QUICK", + "keyword": "QUICK", + "type": 1, + "flags": 1, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table2", + "value": "table2", + "keyword": null, + "type": 0, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 1, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`t1`", + "value": "t1", + "keyword": null, + "type": 8, + "flags": 2, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USING", + "value": "USING", + "keyword": "USING", + "type": 1, + "flags": 3, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table2", + "value": "table2", + "keyword": null, + "type": 0, + "flags": 0, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`t2`", + "value": "t2", + "keyword": null, + "type": 8, + "flags": 2, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LIMIT", + "value": "LIMIT", + "keyword": "LIMIT", + "type": 1, + "flags": 3, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "0", + "value": 0, + "keyword": null, + "type": 6, + "flags": 0, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "25", + "value": 25, + "keyword": null, + "type": 6, + "flags": 0, + "position": 90 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 40, + "idx": 41 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "OPTIONS": { + "LOW_PRIORITY": 1, + "QUICK": 2, + "IGNORE": 3 + }, + "CLAUSES": { + "DELETE": [ + "DELETE", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "FROM": [ + "FROM", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "USING": [ + "USING", + 3 + ], + "WHERE": [ + "WHERE", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ] + }, + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "table1", + "column": null, + "expr": "table1", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": "table2", + "table": null, + "column": null, + "expr": "table2.* table1", + "alias": "t1", + "function": null, + "subquery": null + } + ], + "join": null, + "using": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "table2", + "expr": "table2", + "alias": "t2", + "function": null, + "subquery": null + } + ], + "columns": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [], + "isOperator": false, + "expr": "1=1" + } + ], + "order": null, + "limit": null, + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": "QUICK" + } + }, + "first": 0, + "last": 32 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "This type of clause is not valid in Multi-table queries.", + { + "@type": "@35" + }, + 0 + ], + [ + "Unrecognized statement type.", + { + "@type": "@35" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteErr7.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteErr7.in new file mode 100644 index 0000000000..a2949b8592 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteErr7.in @@ -0,0 +1 @@ +DELETE QUICK FROM table1 WHERE a = 1 ORDER BY id ASC WHERE \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteErr7.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteErr7.out new file mode 100644 index 0000000000..97bd126b06 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteErr7.out @@ -0,0 +1,724 @@ +{ + "query": "DELETE QUICK FROM table1 WHERE a = 1 ORDER BY id ASC WHERE", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "DELETE QUICK FROM table1 WHERE a = 1 ORDER BY id ASC WHERE", + "len": 58, + "last": 58, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "QUICK", + "value": "QUICK", + "keyword": "QUICK", + "type": 1, + "flags": 1, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": 0, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ORDER BY", + "value": "ORDER BY", + "keyword": "ORDER BY", + "type": 1, + "flags": 7, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ASC", + "value": "ASC", + "keyword": "ASC", + "type": 1, + "flags": 3, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 24, + "idx": 25 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "OPTIONS": { + "LOW_PRIORITY": 1, + "QUICK": 2, + "IGNORE": 3 + }, + "CLAUSES": { + "DELETE": [ + "DELETE", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "FROM": [ + "FROM", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "USING": [ + "USING", + 3 + ], + "WHERE": [ + "WHERE", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ] + }, + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "table1", + "column": null, + "expr": "table1", + "alias": null, + "function": null, + "subquery": null + } + ], + "join": null, + "using": null, + "columns": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [ + "a" + ], + "isOperator": false, + "expr": "a = 1" + } + ], + "order": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "id", + "expr": "id", + "alias": null, + "function": null, + "subquery": null + }, + "type": "ASC" + } + ], + "limit": null, + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": "QUICK" + } + }, + "first": 0, + "last": 21 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected keyword.", + { + "@type": "@24" + }, + 0 + ], + [ + "Unrecognized statement type.", + { + "@type": "@24" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteErr8.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteErr8.in new file mode 100644 index 0000000000..c0805c32a5 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteErr8.in @@ -0,0 +1 @@ +DELETE QUICK FROM table1 ASC \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteErr8.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteErr8.out new file mode 100644 index 0000000000..684c526dc3 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteErr8.out @@ -0,0 +1,533 @@ +{ + "query": "DELETE QUICK FROM table1 ASC", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "DELETE QUICK FROM table1 ASC", + "len": 28, + "last": 28, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "QUICK", + "value": "QUICK", + "keyword": "QUICK", + "type": 1, + "flags": 1, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ASC", + "value": "ASC", + "keyword": "ASC", + "type": 1, + "flags": 3, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 10, + "idx": 11 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "OPTIONS": { + "LOW_PRIORITY": 1, + "QUICK": 2, + "IGNORE": 3 + }, + "CLAUSES": { + "DELETE": [ + "DELETE", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "FROM": [ + "FROM", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "USING": [ + "USING", + 3 + ], + "WHERE": [ + "WHERE", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ] + }, + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "table1", + "column": null, + "expr": "table1", + "alias": null, + "function": null, + "subquery": null + } + ], + "join": null, + "using": null, + "columns": null, + "partition": null, + "where": null, + "order": null, + "limit": null, + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": "QUICK" + } + }, + "first": 0, + "last": 7 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected keyword.", + { + "@type": "@10" + }, + 0 + ], + [ + "Unrecognized statement type.", + { + "@type": "@10" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteErr9.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteErr9.in new file mode 100644 index 0000000000..92b0232912 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteErr9.in @@ -0,0 +1 @@ +DELETE QUICK FROM table1, table2 USING t1 as t,t2 as tt WHEE a =1; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteErr9.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteErr9.out new file mode 100644 index 0000000000..4d895cf63e --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteErr9.out @@ -0,0 +1,831 @@ +{ + "query": "DELETE QUICK FROM table1, table2 USING t1 as t,t2 as tt WHEE a =1;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "DELETE QUICK FROM table1, table2 USING t1 as t,t2 as tt WHEE a =1;", + "len": 66, + "last": 66, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "QUICK", + "value": "QUICK", + "keyword": "QUICK", + "type": 1, + "flags": 1, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table2", + "value": "table2", + "keyword": null, + "type": 0, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USING", + "value": "USING", + "keyword": "USING", + "type": 1, + "flags": 3, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t1", + "value": "t1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t", + "value": "t", + "keyword": null, + "type": 0, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t2", + "value": "t2", + "keyword": null, + "type": 0, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "tt", + "value": "tt", + "keyword": null, + "type": 0, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHEE", + "value": "WHEE", + "keyword": null, + "type": 0, + "flags": 0, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": 0, + "flags": 0, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 33, + "idx": 33 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "OPTIONS": { + "LOW_PRIORITY": 1, + "QUICK": 2, + "IGNORE": 3 + }, + "CLAUSES": { + "DELETE": [ + "DELETE", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "FROM": [ + "FROM", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "USING": [ + "USING", + 3 + ], + "WHERE": [ + "WHERE", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ] + }, + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "table1", + "column": null, + "expr": "table1", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "table2", + "column": null, + "expr": "table2", + "alias": null, + "function": null, + "subquery": null + } + ], + "join": null, + "using": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "t1", + "expr": "t1", + "alias": "t", + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "t2", + "expr": "t2", + "alias": "tt", + "function": null, + "subquery": null + } + ], + "columns": null, + "partition": null, + "where": null, + "order": null, + "limit": null, + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": "QUICK" + } + }, + "first": 0, + "last": 24 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "An alias was previously found.", + { + "@type": "@27" + }, + 0 + ], + [ + "Unexpected token.", + { + "@type": "@27" + }, + 0 + ], + [ + "Unexpected beginning of statement.", + { + "@type": "@27" + }, + 0 + ], + [ + "Unexpected beginning of statement.", + { + "@type": "@29" + }, + 0 + ], + [ + "Unexpected beginning of statement.", + { + "@type": "@32" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteJoin.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteJoin.in new file mode 100644 index 0000000000..0621d7becd --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteJoin.in @@ -0,0 +1 @@ +DELETE t1, t2 FROM t1 INNER JOIN t2 INNER JOIN t3 WHERE t1.id=t2.id AND t2.id=t3.id \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteJoin.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteJoin.out new file mode 100644 index 0000000000..c6ea935f39 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDeleteJoin.out @@ -0,0 +1,1028 @@ +{ + "query": "DELETE t1, t2 FROM t1 INNER JOIN t2 INNER JOIN t3 WHERE t1.id=t2.id AND t2.id=t3.id", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "DELETE t1, t2 FROM t1 INNER JOIN t2 INNER JOIN t3 WHERE t1.id=t2.id AND t2.id=t3.id", + "len": 83, + "last": 83, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELETE", + "value": "DELETE", + "keyword": "DELETE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t1", + "value": "t1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t2", + "value": "t2", + "keyword": null, + "type": 0, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t1", + "value": "t1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INNER JOIN", + "value": "INNER JOIN", + "keyword": "INNER JOIN", + "type": 1, + "flags": 7, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t2", + "value": "t2", + "keyword": null, + "type": 0, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INNER JOIN", + "value": "INNER JOIN", + "keyword": "INNER JOIN", + "type": 1, + "flags": 7, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t3", + "value": "t3", + "keyword": null, + "type": 0, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t1", + "value": "t1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t2", + "value": "t2", + "keyword": null, + "type": 0, + "flags": 0, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AND", + "value": "AND", + "keyword": "AND", + "type": 1, + "flags": 3, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t2", + "value": "t2", + "keyword": null, + "type": 0, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t3", + "value": "t3", + "keyword": null, + "type": 0, + "flags": 0, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 39, + "idx": 39 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "OPTIONS": { + "LOW_PRIORITY": 1, + "QUICK": 2, + "IGNORE": 3 + }, + "CLAUSES": { + "DELETE": [ + "DELETE", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "FROM": [ + "FROM", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "USING": [ + "USING", + 3 + ], + "WHERE": [ + "WHERE", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ] + }, + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "t1", + "column": null, + "expr": "t1", + "alias": null, + "function": null, + "subquery": null + } + ], + "join": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "JOINS": { + "CROSS JOIN": "CROSS", + "FULL JOIN": "FULL", + "FULL OUTER JOIN": "FULL", + "INNER JOIN": "INNER", + "JOIN": "JOIN", + "LEFT JOIN": "LEFT", + "LEFT OUTER JOIN": "LEFT", + "RIGHT JOIN": "RIGHT", + "RIGHT OUTER JOIN": "RIGHT", + "NATURAL JOIN": "NATURAL", + "NATURAL LEFT JOIN": "NATURAL LEFT", + "NATURAL RIGHT JOIN": "NATURAL RIGHT", + "NATURAL LEFT OUTER JOIN": "NATURAL LEFT OUTER", + "NATURAL RIGHT OUTER JOIN": "NATURAL RIGHT OUTER", + "STRAIGHT_JOIN": "STRAIGHT" + }, + "type": "INNER", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "t2", + "column": null, + "expr": "t2", + "alias": null, + "function": null, + "subquery": null + }, + "on": null, + "using": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "JOINS": { + "CROSS JOIN": "CROSS", + "FULL JOIN": "FULL", + "FULL OUTER JOIN": "FULL", + "INNER JOIN": "INNER", + "JOIN": "JOIN", + "LEFT JOIN": "LEFT", + "LEFT OUTER JOIN": "LEFT", + "RIGHT JOIN": "RIGHT", + "RIGHT OUTER JOIN": "RIGHT", + "NATURAL JOIN": "NATURAL", + "NATURAL LEFT JOIN": "NATURAL LEFT", + "NATURAL RIGHT JOIN": "NATURAL RIGHT", + "NATURAL LEFT OUTER JOIN": "NATURAL LEFT OUTER", + "NATURAL RIGHT OUTER JOIN": "NATURAL RIGHT OUTER", + "STRAIGHT_JOIN": "STRAIGHT" + }, + "type": "INNER", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "t3", + "column": null, + "expr": "t3", + "alias": null, + "function": null, + "subquery": null + }, + "on": null, + "using": null + } + ], + "using": null, + "columns": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "t1", + "expr": "t1", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "t2", + "expr": "t2", + "alias": null, + "function": null, + "subquery": null + } + ], + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [ + "t1", + "id", + "t2" + ], + "isOperator": false, + "expr": "t1.id=t2.id" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [], + "isOperator": true, + "expr": "AND" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [ + "t2", + "id", + "t3" + ], + "isOperator": false, + "expr": "t2.id=t3.id" + } + ], + "order": null, + "limit": null, + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 37 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelimiter.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelimiter.in new file mode 100644 index 0000000000..2522c055fd --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelimiter.in @@ -0,0 +1,5 @@ +SELECT * FROM foo; +DELIMITER $$ +SELECT * FROM bar$$ +DELIMITER ; +SELECT * FROM baz; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelimiter.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelimiter.out new file mode 100644 index 0000000000..fe096cf04b --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDelimiter.out @@ -0,0 +1,1314 @@ +{ + "query": "SELECT * FROM foo;\nDELIMITER $$\nSELECT * FROM bar$$\nDELIMITER ;\nSELECT * FROM baz;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SELECT * FROM foo;\nDELIMITER $$\nSELECT * FROM bar$$\nDELIMITER ;\nSELECT * FROM baz;", + "len": 82, + "last": 82, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "foo", + "value": "foo", + "keyword": null, + "type": 0, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELIMITER", + "value": "DELIMITER", + "keyword": null, + "type": 0, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "$$", + "value": "$$", + "keyword": null, + "type": 9, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "bar", + "value": "bar", + "keyword": null, + "type": 0, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "$$", + "value": "$$", + "keyword": null, + "type": 9, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DELIMITER", + "value": "DELIMITER", + "keyword": null, + "type": 0, + "flags": 0, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "baz", + "value": "baz", + "keyword": null, + "type": 0, + "flags": 0, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 35, + "idx": 35 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "foo", + "column": null, + "expr": "foo", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": null, + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "bar", + "column": null, + "expr": "bar", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": null, + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 13, + "last": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "baz", + "column": null, + "expr": "baz", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": null, + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 26, + "last": 32 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDrop.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDrop.in new file mode 100644 index 0000000000..4cda4b6fed --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDrop.in @@ -0,0 +1 @@ +DROP USER IF EXISTS 'testtest'@'%'; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDrop.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDrop.out new file mode 100644 index 0000000000..ad945d596c --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDrop.out @@ -0,0 +1,500 @@ +{ + "query": "DROP USER IF EXISTS 'testtest'@'%';", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "DROP USER IF EXISTS 'testtest'@'%';", + "len": 35, + "last": 35, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DROP", + "value": "DROP", + "keyword": "DROP", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USER", + "value": "USER", + "keyword": "USER", + "type": 1, + "flags": 33, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IF EXISTS", + "value": "IF EXISTS", + "keyword": "IF EXISTS", + "type": 1, + "flags": 7, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'testtest'@'%'", + "value": "testtest@%", + "keyword": null, + "type": 8, + "flags": 4, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 9, + "idx": 9 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "OPTIONS": { + "DATABASE": 1, + "EVENT": 1, + "FUNCTION": 1, + "INDEX": 1, + "LOGFILE": 1, + "PROCEDURE": 1, + "SCHEMA": 1, + "SERVER": 1, + "TABLE": 1, + "VIEW": 1, + "TABLESPACE": 1, + "TRIGGER": 1, + "USER": 1, + "TEMPORARY": 2, + "IF EXISTS": 3 + }, + "CLAUSES": { + "DROP": [ + "DROP", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "DROP_": [ + "DROP", + 1 + ], + "ON": [ + "ON", + 3 + ] + }, + "fields": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "testtest@%", + "column": null, + "expr": "'testtest'@'%'", + "alias": null, + "function": null, + "subquery": null + } + ], + "table": null, + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "USER", + "3": "IF EXISTS" + } + }, + "first": 0, + "last": 6 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDrop2.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDrop2.in new file mode 100644 index 0000000000..34b5dc0141 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDrop2.in @@ -0,0 +1 @@ +DROP USER 'testtest'@'%'; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDrop2.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDrop2.out new file mode 100644 index 0000000000..5f15c6a21f --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseDrop2.out @@ -0,0 +1,481 @@ +{ + "query": "DROP USER 'testtest'@'%';", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "DROP USER 'testtest'@'%';", + "len": 25, + "last": 25, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DROP", + "value": "DROP", + "keyword": "DROP", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USER", + "value": "USER", + "keyword": "USER", + "type": 1, + "flags": 33, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'testtest'@'%'", + "value": "testtest@%", + "keyword": null, + "type": 8, + "flags": 4, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 7, + "idx": 7 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "OPTIONS": { + "DATABASE": 1, + "EVENT": 1, + "FUNCTION": 1, + "INDEX": 1, + "LOGFILE": 1, + "PROCEDURE": 1, + "SCHEMA": 1, + "SERVER": 1, + "TABLE": 1, + "VIEW": 1, + "TABLESPACE": 1, + "TRIGGER": 1, + "USER": 1, + "TEMPORARY": 2, + "IF EXISTS": 3 + }, + "CLAUSES": { + "DROP": [ + "DROP", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "DROP_": [ + "DROP", + 1 + ], + "ON": [ + "ON", + 3 + ] + }, + "fields": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "testtest@%", + "column": null, + "expr": "'testtest'@'%'", + "alias": null, + "function": null, + "subquery": null + } + ], + "table": null, + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "USER" + } + }, + "first": 0, + "last": 4 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseExplain.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseExplain.in new file mode 100644 index 0000000000..bb599d6438 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseExplain.in @@ -0,0 +1 @@ +EXPLAIN SELECT * FROM test; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseExplain.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseExplain.out new file mode 100644 index 0000000000..86e78cf570 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseExplain.out @@ -0,0 +1,482 @@ +{ + "query": "EXPLAIN SELECT * FROM test;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "EXPLAIN SELECT * FROM test;", + "len": 27, + "last": 27, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "EXPLAIN", + "value": "EXPLAIN", + "keyword": "EXPLAIN", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "test", + "value": "test", + "keyword": null, + "type": 0, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 11, + "idx": 11 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "unknown": [ + { + "@type": "@2" + }, + { + "@type": "@3" + }, + { + "@type": "@4" + }, + { + "@type": "@5" + }, + { + "@type": "@6" + }, + { + "@type": "@7" + }, + { + "@type": "@8" + }, + { + "@type": "@9" + }, + { + "@type": "@10" + } + ], + "OPTIONS": [], + "CLAUSES": [], + "END_OPTIONS": [], + "options": null, + "first": 0, + "last": 9 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseInsert.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseInsert.in new file mode 100644 index 0000000000..4f200e2cbd --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseInsert.in @@ -0,0 +1,6 @@ +INSERT LOW_PRIORITY +INTO + users(`id`, `username`, `password`) +VALUES + (1, "Dan", "5d41402abc4b2a76b9719d911017c592"), + (2, "Paul", "7d793037a0760186574b0282f2f435e7"); \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseInsert.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseInsert.out new file mode 100644 index 0000000000..c0d8719b71 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseInsert.out @@ -0,0 +1,825 @@ +{ + "query": "INSERT LOW_PRIORITY\nINTO\n users(`id`, `username`, `password`)\nVALUES\n (1, \"Dan\", \"5d41402abc4b2a76b9719d911017c592\"),\n (2, \"Paul\", \"7d793037a0760186574b0282f2f435e7\");", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "INSERT LOW_PRIORITY\nINTO\n users(`id`, `username`, `password`)\nVALUES\n (1, \"Dan\", \"5d41402abc4b2a76b9719d911017c592\"),\n (2, \"Paul\", \"7d793037a0760186574b0282f2f435e7\");", + "len": 176, + "last": 176, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INSERT", + "value": "INSERT", + "keyword": "INSERT", + "type": 1, + "flags": 35, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOW_PRIORITY", + "value": "LOW_PRIORITY", + "keyword": "LOW_PRIORITY", + "type": 1, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": 1, + "flags": 3, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "users", + "value": "users", + "keyword": null, + "type": 0, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`id`", + "value": "id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`username`", + "value": "username", + "keyword": null, + "type": 8, + "flags": 2, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`password`", + "value": "password", + "keyword": null, + "type": 8, + "flags": 2, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": 1, + "flags": 35, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Dan\"", + "value": "Dan", + "keyword": null, + "type": 7, + "flags": 2, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"5d41402abc4b2a76b9719d911017c592\"", + "value": "5d41402abc4b2a76b9719d911017c592", + "keyword": null, + "type": 7, + "flags": 2, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 122 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 123 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 128 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": 6, + "flags": 0, + "position": 129 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 130 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 131 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Paul\"", + "value": "Paul", + "keyword": null, + "type": 7, + "flags": 2, + "position": 132 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 138 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 139 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"7d793037a0760186574b0282f2f435e7\"", + "value": "7d793037a0760186574b0282f2f435e7", + "keyword": null, + "type": 7, + "flags": 2, + "position": 140 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 174 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 175 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 41, + "idx": 41 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "OPTIONS": { + "LOW_PRIORITY": 1, + "DELAYED": 2, + "HIGH_PRIORITY": 3, + "IGNORE": 4 + }, + "into": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "FIELDS_OPTIONS": { + "TERMINATED BY": [ + 1, + "expr" + ], + "OPTIONALLY": 2, + "ENCLOSED BY": [ + 3, + "expr" + ], + "ESCAPED BY": [ + 4, + "expr" + ] + }, + "LINES_OPTIONS": { + "STARTING BY": [ + 1, + "expr" + ], + "TERMINATED BY": [ + 2, + "expr" + ] + }, + "type": null, + "dest": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "users", + "column": null, + "expr": "users", + "alias": null, + "function": null, + "subquery": null + }, + "columns": [ + "id", + "username", + "password" + ], + "values": null, + "fields_options": null, + "fields_keyword": null, + "lines_options": null + }, + "values": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "raw": [ + "1", + "\"Dan\"", + "\"5d41402abc4b2a76b9719d911017c592\"" + ], + "values": [ + "1", + "Dan", + "5d41402abc4b2a76b9719d911017c592" + ] + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "raw": [ + "2", + "\"Paul\"", + "\"7d793037a0760186574b0282f2f435e7\"" + ], + "values": [ + "2", + "Paul", + "7d793037a0760186574b0282f2f435e7" + ] + } + ], + "set": null, + "select": null, + "onDuplicateSet": null, + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "LOW_PRIORITY" + } + }, + "first": 0, + "last": 38 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseInsertErr.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseInsertErr.in new file mode 100644 index 0000000000..bd5c0b3d37 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseInsertErr.in @@ -0,0 +1 @@ +INSERT SELECT diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseInsertErr.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseInsertErr.out new file mode 100644 index 0000000000..390b63200d --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseInsertErr.out @@ -0,0 +1,597 @@ +{ + "query": "INSERT SELECT\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "INSERT SELECT\n", + "len": 14, + "last": 14, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INSERT", + "value": "INSERT", + "keyword": "INSERT", + "type": 1, + "flags": 35, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 5, + "idx": 5 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "OPTIONS": { + "LOW_PRIORITY": 1, + "DELAYED": 2, + "HIGH_PRIORITY": 3, + "IGNORE": 4 + }, + "into": null, + "values": null, + "set": null, + "select": null, + "onDuplicateSet": null, + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 1 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [], + "from": [], + "index_hints": null, + "partition": null, + "where": null, + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 2, + "last": 3 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected keyword.", + { + "@type": "@4" + }, + 0 + ], + [ + "An expression was expected.", + { + "@type": "@6" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseInsertErr2.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseInsertErr2.in new file mode 100644 index 0000000000..f4f701039d --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseInsertErr2.in @@ -0,0 +1,2 @@ +INSERT INTO x "string" + diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseInsertErr2.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseInsertErr2.out new file mode 100644 index 0000000000..a81e40cc1a --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseInsertErr2.out @@ -0,0 +1,519 @@ +{ + "query": "INSERT INTO x \"string\"\n\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "INSERT INTO x \"string\"\n\n", + "len": 24, + "last": 24, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INSERT", + "value": "INSERT", + "keyword": "INSERT", + "type": 1, + "flags": 35, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": 1, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "x", + "value": "x", + "keyword": "X", + "type": 1, + "flags": 33, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"string\"", + "value": "string", + "keyword": null, + "type": 7, + "flags": 2, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 9, + "idx": 9 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "OPTIONS": { + "LOW_PRIORITY": 1, + "DELAYED": 2, + "HIGH_PRIORITY": 3, + "IGNORE": 4 + }, + "into": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "FIELDS_OPTIONS": { + "TERMINATED BY": [ + 1, + "expr" + ], + "OPTIONALLY": 2, + "ENCLOSED BY": [ + 3, + "expr" + ], + "ESCAPED BY": [ + 4, + "expr" + ] + }, + "LINES_OPTIONS": { + "STARTING BY": [ + 1, + "expr" + ], + "TERMINATED BY": [ + 2, + "expr" + ] + }, + "type": null, + "dest": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "x", + "column": null, + "expr": "x", + "alias": null, + "function": null, + "subquery": null + }, + "columns": null, + "values": null, + "fields_options": null, + "fields_keyword": null, + "lines_options": null + }, + "values": null, + "set": null, + "select": null, + "onDuplicateSet": null, + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 5 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected token.", + { + "@type": "@8" + }, + 0 + ], + [ + "Unexpected beginning of statement.", + { + "@type": "@8" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseInsertIntoErr.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseInsertIntoErr.in new file mode 100644 index 0000000000..81ce7f9b0c --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseInsertIntoErr.in @@ -0,0 +1,2 @@ +INSERT INTO x INSERT + diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseInsertIntoErr.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseInsertIntoErr.out new file mode 100644 index 0000000000..d9a36c4f11 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseInsertIntoErr.out @@ -0,0 +1,534 @@ +{ + "query": "INSERT INTO x INSERT\n\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "INSERT INTO x INSERT\n\n", + "len": 22, + "last": 22, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INSERT", + "value": "INSERT", + "keyword": "INSERT", + "type": 1, + "flags": 35, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": 1, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "x", + "value": "x", + "keyword": "X", + "type": 1, + "flags": 33, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INSERT", + "value": "INSERT", + "keyword": "INSERT", + "type": 1, + "flags": 35, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 9, + "idx": 9 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "OPTIONS": { + "LOW_PRIORITY": 1, + "DELAYED": 2, + "HIGH_PRIORITY": 3, + "IGNORE": 4 + }, + "into": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "FIELDS_OPTIONS": { + "TERMINATED BY": [ + 1, + "expr" + ], + "OPTIONALLY": 2, + "ENCLOSED BY": [ + 3, + "expr" + ], + "ESCAPED BY": [ + 4, + "expr" + ] + }, + "LINES_OPTIONS": { + "STARTING BY": [ + 1, + "expr" + ], + "TERMINATED BY": [ + 2, + "expr" + ] + }, + "type": null, + "dest": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "x", + "column": null, + "expr": "x", + "alias": null, + "function": null, + "subquery": null + }, + "columns": null, + "values": null, + "fields_options": null, + "fields_keyword": null, + "lines_options": null + }, + "values": null, + "set": null, + "select": null, + "onDuplicateSet": null, + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "OPTIONS": { + "LOW_PRIORITY": 1, + "DELAYED": 2, + "HIGH_PRIORITY": 3, + "IGNORE": 4 + }, + "into": null, + "values": null, + "set": null, + "select": null, + "onDuplicateSet": null, + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 6, + "last": 7 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected keyword.", + { + "@type": "@8" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseInsertIntoSet.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseInsertIntoSet.in new file mode 100644 index 0000000000..a9788ae69e --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseInsertIntoSet.in @@ -0,0 +1 @@ +INSERT INTO aa SET = INET6_ATON('::ffff:8.8.8.8') \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseInsertIntoSet.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseInsertIntoSet.out new file mode 100644 index 0000000000..d4c5681c94 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseInsertIntoSet.out @@ -0,0 +1,564 @@ +{ + "query": "INSERT INTO aa SET = INET6_ATON('::ffff:8.8.8.8')", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "INSERT INTO aa SET = INET6_ATON('::ffff:8.8.8.8')", + "len": 50, + "last": 50, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INSERT", + "value": "INSERT", + "keyword": "INSERT", + "type": 1, + "flags": 35, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": 1, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "aa", + "value": "aa", + "keyword": null, + "type": 0, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": 1, + "flags": 11, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INET6_ATON", + "value": "INET6_ATON", + "keyword": "INET6_ATON", + "type": 1, + "flags": 33, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'::ffff:8.8.8.8'", + "value": "::ffff:8.8.8.8", + "keyword": null, + "type": 7, + "flags": 1, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 15, + "idx": 15 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "OPTIONS": { + "LOW_PRIORITY": 1, + "DELAYED": 2, + "HIGH_PRIORITY": 3, + "IGNORE": 4 + }, + "into": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "FIELDS_OPTIONS": { + "TERMINATED BY": [ + 1, + "expr" + ], + "OPTIONALLY": 2, + "ENCLOSED BY": [ + 3, + "expr" + ], + "ESCAPED BY": [ + 4, + "expr" + ] + }, + "LINES_OPTIONS": { + "STARTING BY": [ + 1, + "expr" + ], + "TERMINATED BY": [ + 2, + "expr" + ] + }, + "type": null, + "dest": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "aa", + "column": null, + "expr": "aa", + "alias": null, + "function": null, + "subquery": null + }, + "columns": null, + "values": null, + "fields_options": null, + "fields_keyword": null, + "lines_options": null + }, + "values": null, + "set": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "column": "", + "value": "INET6_ATON('::ffff:8.8.8.8')" + } + ], + "select": null, + "onDuplicateSet": null, + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 13 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseInsertOnDuplicateKey.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseInsertOnDuplicateKey.in new file mode 100644 index 0000000000..a72eae1d02 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseInsertOnDuplicateKey.in @@ -0,0 +1,2 @@ +INSERT INTO `champs` (`id`,`val`) VALUES (412,'Thresh') +ON DUPLICATE KEY UPDATE `id`=412,`val`='Thresh' \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseInsertOnDuplicateKey.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseInsertOnDuplicateKey.out new file mode 100644 index 0000000000..16f822561d --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseInsertOnDuplicateKey.out @@ -0,0 +1,773 @@ +{ + "query": "INSERT INTO `champs` (`id`,`val`) VALUES (412,'Thresh')\nON DUPLICATE KEY UPDATE `id`=412,`val`='Thresh'", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "INSERT INTO `champs` (`id`,`val`) VALUES (412,'Thresh')\nON DUPLICATE KEY UPDATE `id`=412,`val`='Thresh'", + "len": 103, + "last": 103, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INSERT", + "value": "INSERT", + "keyword": "INSERT", + "type": 1, + "flags": 35, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": 1, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`champs`", + "value": "champs", + "keyword": null, + "type": 8, + "flags": 2, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`id`", + "value": "id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`val`", + "value": "val", + "keyword": null, + "type": 8, + "flags": 2, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": 1, + "flags": 35, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "412", + "value": 412, + "keyword": null, + "type": 6, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'Thresh'", + "value": "Thresh", + "keyword": null, + "type": 7, + "flags": 1, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON", + "value": "ON", + "keyword": "ON", + "type": 1, + "flags": 3, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DUPLICATE", + "value": "DUPLICATE", + "keyword": "DUPLICATE", + "type": 1, + "flags": 1, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "KEY", + "value": "KEY", + "keyword": "KEY", + "type": 1, + "flags": 19, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UPDATE", + "value": "UPDATE", + "keyword": "UPDATE", + "type": 1, + "flags": 3, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`id`", + "value": "id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "412", + "value": 412, + "keyword": null, + "type": 6, + "flags": 0, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`val`", + "value": "val", + "keyword": null, + "type": 8, + "flags": 2, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'Thresh'", + "value": "Thresh", + "keyword": null, + "type": 7, + "flags": 1, + "position": 95 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 36, + "idx": 36 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "OPTIONS": { + "LOW_PRIORITY": 1, + "DELAYED": 2, + "HIGH_PRIORITY": 3, + "IGNORE": 4 + }, + "into": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "FIELDS_OPTIONS": { + "TERMINATED BY": [ + 1, + "expr" + ], + "OPTIONALLY": 2, + "ENCLOSED BY": [ + 3, + "expr" + ], + "ESCAPED BY": [ + 4, + "expr" + ] + }, + "LINES_OPTIONS": { + "STARTING BY": [ + 1, + "expr" + ], + "TERMINATED BY": [ + 2, + "expr" + ] + }, + "type": null, + "dest": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "champs", + "column": null, + "expr": "`champs`", + "alias": null, + "function": null, + "subquery": null + }, + "columns": [ + "id", + "val" + ], + "values": null, + "fields_options": null, + "fields_keyword": null, + "lines_options": null + }, + "values": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "raw": [ + "412", + "'Thresh'" + ], + "values": [ + "412", + "Thresh" + ] + } + ], + "set": null, + "select": null, + "onDuplicateSet": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "column": "`id`", + "value": "412" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "column": "`val`", + "value": "'Thresh'" + } + ], + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 34 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseInsertOnDuplicateKeyErr.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseInsertOnDuplicateKeyErr.in new file mode 100644 index 0000000000..fa4c26c893 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseInsertOnDuplicateKeyErr.in @@ -0,0 +1,2 @@ +INSERT INTO `champs` (`id`,`val`) VALUES (412,'Thresh') +ON DUPLICATE KEY `id`=412,`val`='Thresh' \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseInsertOnDuplicateKeyErr.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseInsertOnDuplicateKeyErr.out new file mode 100644 index 0000000000..2118fc486c --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseInsertOnDuplicateKeyErr.out @@ -0,0 +1,780 @@ +{ + "query": "INSERT INTO `champs` (`id`,`val`) VALUES (412,'Thresh')\nON DUPLICATE KEY `id`=412,`val`='Thresh'", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "INSERT INTO `champs` (`id`,`val`) VALUES (412,'Thresh')\nON DUPLICATE KEY `id`=412,`val`='Thresh'", + "len": 96, + "last": 96, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INSERT", + "value": "INSERT", + "keyword": "INSERT", + "type": 1, + "flags": 35, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": 1, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`champs`", + "value": "champs", + "keyword": null, + "type": 8, + "flags": 2, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`id`", + "value": "id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`val`", + "value": "val", + "keyword": null, + "type": 8, + "flags": 2, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": 1, + "flags": 35, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "412", + "value": 412, + "keyword": null, + "type": 6, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'Thresh'", + "value": "Thresh", + "keyword": null, + "type": 7, + "flags": 1, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON", + "value": "ON", + "keyword": "ON", + "type": 1, + "flags": 3, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DUPLICATE", + "value": "DUPLICATE", + "keyword": "DUPLICATE", + "type": 1, + "flags": 1, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "KEY", + "value": "KEY", + "keyword": "KEY", + "type": 1, + "flags": 19, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`id`", + "value": "id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "412", + "value": 412, + "keyword": null, + "type": 6, + "flags": 0, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`val`", + "value": "val", + "keyword": null, + "type": 8, + "flags": 2, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'Thresh'", + "value": "Thresh", + "keyword": null, + "type": 7, + "flags": 1, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 34, + "idx": 34 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "OPTIONS": { + "LOW_PRIORITY": 1, + "DELAYED": 2, + "HIGH_PRIORITY": 3, + "IGNORE": 4 + }, + "into": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "FIELDS_OPTIONS": { + "TERMINATED BY": [ + 1, + "expr" + ], + "OPTIONALLY": 2, + "ENCLOSED BY": [ + 3, + "expr" + ], + "ESCAPED BY": [ + 4, + "expr" + ] + }, + "LINES_OPTIONS": { + "STARTING BY": [ + 1, + "expr" + ], + "TERMINATED BY": [ + 2, + "expr" + ] + }, + "type": null, + "dest": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "champs", + "column": null, + "expr": "`champs`", + "alias": null, + "function": null, + "subquery": null + }, + "columns": [ + "id", + "val" + ], + "values": null, + "fields_options": null, + "fields_keyword": null, + "lines_options": null + }, + "values": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "raw": [ + "412", + "'Thresh'" + ], + "values": [ + "412", + "Thresh" + ] + } + ], + "set": null, + "select": null, + "onDuplicateSet": null, + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 25 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected token.", + { + "@type": "@28" + }, + 0 + ], + [ + "Unexpected beginning of statement.", + { + "@type": "@28" + }, + 0 + ], + [ + "Unexpected beginning of statement.", + { + "@type": "@30" + }, + 0 + ], + [ + "Unexpected beginning of statement.", + { + "@type": "@32" + }, + 0 + ], + [ + "Unexpected beginning of statement.", + { + "@type": "@34" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseInsertSelect.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseInsertSelect.in new file mode 100644 index 0000000000..9686ae19cd --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseInsertSelect.in @@ -0,0 +1 @@ +INSERT INTO `a` (`value`) SELECT `b`.`value` FROM `b` \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseInsertSelect.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseInsertSelect.out new file mode 100644 index 0000000000..1e2034e5f9 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseInsertSelect.out @@ -0,0 +1,822 @@ +{ + "query": "INSERT INTO `a` (`value`) SELECT `b`.`value` FROM `b`", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "INSERT INTO `a` (`value`) SELECT `b`.`value` FROM `b`", + "len": 53, + "last": 53, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INSERT", + "value": "INSERT", + "keyword": "INSERT", + "type": 1, + "flags": 35, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": 1, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`a`", + "value": "a", + "keyword": null, + "type": 8, + "flags": 2, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`value`", + "value": "value", + "keyword": null, + "type": 8, + "flags": 2, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`b`", + "value": "b", + "keyword": null, + "type": 8, + "flags": 2, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`value`", + "value": "value", + "keyword": null, + "type": 8, + "flags": 2, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`b`", + "value": "b", + "keyword": null, + "type": 8, + "flags": 2, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 20, + "idx": 20 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "OPTIONS": { + "LOW_PRIORITY": 1, + "DELAYED": 2, + "HIGH_PRIORITY": 3, + "IGNORE": 4 + }, + "into": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "FIELDS_OPTIONS": { + "TERMINATED BY": [ + 1, + "expr" + ], + "OPTIONALLY": 2, + "ENCLOSED BY": [ + 3, + "expr" + ], + "ESCAPED BY": [ + 4, + "expr" + ] + }, + "LINES_OPTIONS": { + "STARTING BY": [ + 1, + "expr" + ], + "TERMINATED BY": [ + 2, + "expr" + ] + }, + "type": null, + "dest": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "a", + "column": null, + "expr": "`a`", + "alias": null, + "function": null, + "subquery": null + }, + "columns": [ + "value" + ], + "values": null, + "fields_options": null, + "fields_keyword": null, + "lines_options": null + }, + "values": null, + "set": null, + "select": { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "b", + "column": "value", + "expr": "`b`.`value`", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "b", + "column": null, + "expr": "`b`", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": null, + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 10, + "last": 18 + }, + "onDuplicateSet": null, + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 18 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseInsertSelectOnDuplicateKey.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseInsertSelectOnDuplicateKey.in new file mode 100644 index 0000000000..4ccd72c907 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseInsertSelectOnDuplicateKey.in @@ -0,0 +1 @@ +INSERT INTO tbl SELECT * FROM bar ON DUPLICATE KEY UPDATE baz = 1 \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseInsertSelectOnDuplicateKey.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseInsertSelectOnDuplicateKey.out new file mode 100644 index 0000000000..e98823ce3d --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseInsertSelectOnDuplicateKey.out @@ -0,0 +1,898 @@ +{ + "query": "INSERT INTO tbl SELECT * FROM bar ON DUPLICATE KEY UPDATE baz = 1", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "INSERT INTO tbl SELECT * FROM bar ON DUPLICATE KEY UPDATE baz = 1", + "len": 65, + "last": 65, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INSERT", + "value": "INSERT", + "keyword": "INSERT", + "type": 1, + "flags": 35, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": 1, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "tbl", + "value": "tbl", + "keyword": null, + "type": 0, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "bar", + "value": "bar", + "keyword": null, + "type": 0, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON", + "value": "ON", + "keyword": "ON", + "type": 1, + "flags": 3, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DUPLICATE", + "value": "DUPLICATE", + "keyword": "DUPLICATE", + "type": 1, + "flags": 1, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "KEY", + "value": "KEY", + "keyword": "KEY", + "type": 1, + "flags": 19, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UPDATE", + "value": "UPDATE", + "keyword": "UPDATE", + "type": 1, + "flags": 3, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "baz", + "value": "baz", + "keyword": null, + "type": 0, + "flags": 0, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 28, + "idx": 28 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "OPTIONS": { + "LOW_PRIORITY": 1, + "DELAYED": 2, + "HIGH_PRIORITY": 3, + "IGNORE": 4 + }, + "into": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "FIELDS_OPTIONS": { + "TERMINATED BY": [ + 1, + "expr" + ], + "OPTIONALLY": 2, + "ENCLOSED BY": [ + 3, + "expr" + ], + "ESCAPED BY": [ + 4, + "expr" + ] + }, + "LINES_OPTIONS": { + "STARTING BY": [ + 1, + "expr" + ], + "TERMINATED BY": [ + 2, + "expr" + ] + }, + "type": null, + "dest": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "tbl", + "column": null, + "expr": "tbl", + "alias": null, + "function": null, + "subquery": null + }, + "columns": null, + "values": null, + "fields_options": null, + "fields_keyword": null, + "lines_options": null + }, + "values": null, + "set": null, + "select": { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "bar", + "column": null, + "expr": "bar", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": null, + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 6, + "last": 13 + }, + "onDuplicateSet": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "column": "baz", + "value": "1" + } + ], + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 26 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseInsertSet.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseInsertSet.in new file mode 100644 index 0000000000..9fdcbfecd6 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseInsertSet.in @@ -0,0 +1 @@ +INSERT INTO `a` (`value`) SET `value` = '123' \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseInsertSet.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseInsertSet.out new file mode 100644 index 0000000000..639be49dd2 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseInsertSet.out @@ -0,0 +1,593 @@ +{ + "query": "INSERT INTO `a` (`value`) SET `value` = '123'", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "INSERT INTO `a` (`value`) SET `value` = '123'", + "len": 45, + "last": 45, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INSERT", + "value": "INSERT", + "keyword": "INSERT", + "type": 1, + "flags": 35, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": 1, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`a`", + "value": "a", + "keyword": null, + "type": 8, + "flags": 2, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`value`", + "value": "value", + "keyword": null, + "type": 8, + "flags": 2, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": 1, + "flags": 11, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`value`", + "value": "value", + "keyword": null, + "type": 8, + "flags": 2, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'123'", + "value": "123", + "keyword": null, + "type": 7, + "flags": 1, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 18, + "idx": 18 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "OPTIONS": { + "LOW_PRIORITY": 1, + "DELAYED": 2, + "HIGH_PRIORITY": 3, + "IGNORE": 4 + }, + "into": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "FIELDS_OPTIONS": { + "TERMINATED BY": [ + 1, + "expr" + ], + "OPTIONALLY": 2, + "ENCLOSED BY": [ + 3, + "expr" + ], + "ESCAPED BY": [ + 4, + "expr" + ] + }, + "LINES_OPTIONS": { + "STARTING BY": [ + 1, + "expr" + ], + "TERMINATED BY": [ + 2, + "expr" + ] + }, + "type": null, + "dest": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "a", + "column": null, + "expr": "`a`", + "alias": null, + "function": null, + "subquery": null + }, + "columns": [ + "value" + ], + "values": null, + "fields_options": null, + "fields_keyword": null, + "lines_options": null + }, + "values": null, + "set": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "column": "`value`", + "value": "'123'" + } + ], + "select": null, + "onDuplicateSet": null, + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 16 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseInsertSetOnDuplicateKey.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseInsertSetOnDuplicateKey.in new file mode 100644 index 0000000000..29d70799bf --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseInsertSetOnDuplicateKey.in @@ -0,0 +1 @@ +INSERT INTO `a` (`value`) SET `value` = '123' ON DUPLICATE KEY UPDATE `value` = '1234' \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseInsertSetOnDuplicateKey.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseInsertSetOnDuplicateKey.out new file mode 100644 index 0000000000..72f4ba85a3 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseInsertSetOnDuplicateKey.out @@ -0,0 +1,725 @@ +{ + "query": "INSERT INTO `a` (`value`) SET `value` = '123' ON DUPLICATE KEY UPDATE `value` = '1234'", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "INSERT INTO `a` (`value`) SET `value` = '123' ON DUPLICATE KEY UPDATE `value` = '1234'", + "len": 86, + "last": 86, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INSERT", + "value": "INSERT", + "keyword": "INSERT", + "type": 1, + "flags": 35, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": 1, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`a`", + "value": "a", + "keyword": null, + "type": 8, + "flags": 2, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`value`", + "value": "value", + "keyword": null, + "type": 8, + "flags": 2, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": 1, + "flags": 11, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`value`", + "value": "value", + "keyword": null, + "type": 8, + "flags": 2, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'123'", + "value": "123", + "keyword": null, + "type": 7, + "flags": 1, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON", + "value": "ON", + "keyword": "ON", + "type": 1, + "flags": 3, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DUPLICATE", + "value": "DUPLICATE", + "keyword": "DUPLICATE", + "type": 1, + "flags": 1, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "KEY", + "value": "KEY", + "keyword": "KEY", + "type": 1, + "flags": 19, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UPDATE", + "value": "UPDATE", + "keyword": "UPDATE", + "type": 1, + "flags": 3, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`value`", + "value": "value", + "keyword": null, + "type": 8, + "flags": 2, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'1234'", + "value": "1234", + "keyword": null, + "type": 7, + "flags": 1, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 32, + "idx": 32 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "OPTIONS": { + "LOW_PRIORITY": 1, + "DELAYED": 2, + "HIGH_PRIORITY": 3, + "IGNORE": 4 + }, + "into": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "FIELDS_OPTIONS": { + "TERMINATED BY": [ + 1, + "expr" + ], + "OPTIONALLY": 2, + "ENCLOSED BY": [ + 3, + "expr" + ], + "ESCAPED BY": [ + 4, + "expr" + ] + }, + "LINES_OPTIONS": { + "STARTING BY": [ + 1, + "expr" + ], + "TERMINATED BY": [ + 2, + "expr" + ] + }, + "type": null, + "dest": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "a", + "column": null, + "expr": "`a`", + "alias": null, + "function": null, + "subquery": null + }, + "columns": [ + "value" + ], + "values": null, + "fields_options": null, + "fields_keyword": null, + "lines_options": null + }, + "values": null, + "set": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "column": "`value`", + "value": "'123'" + } + ], + "select": null, + "onDuplicateSet": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "column": "`value`", + "value": "'1234'" + } + ], + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 30 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLimitErr1.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLimitErr1.in new file mode 100644 index 0000000000..401deb378f --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLimitErr1.in @@ -0,0 +1 @@ +SELECT * FROM test LIMIT 1 OFFSET OFFSET 2; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLimitErr1.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLimitErr1.out new file mode 100644 index 0000000000..dd012fec08 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLimitErr1.out @@ -0,0 +1,746 @@ +{ + "query": "SELECT * FROM test LIMIT 1 OFFSET OFFSET 2;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SELECT * FROM test LIMIT 1 OFFSET OFFSET 2;", + "len": 43, + "last": 43, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "test", + "value": "test", + "keyword": null, + "type": 0, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LIMIT", + "value": "LIMIT", + "keyword": "LIMIT", + "type": 1, + "flags": 3, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "OFFSET", + "value": "OFFSET", + "keyword": "OFFSET", + "type": 1, + "flags": 1, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "OFFSET", + "value": "OFFSET", + "keyword": "OFFSET", + "type": 1, + "flags": 1, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": 6, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 19, + "idx": 19 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "test", + "column": null, + "expr": "test", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": null, + "group": null, + "having": null, + "order": null, + "limit": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "offset": 2, + "rowCount": 1 + }, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 16 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "An offset was expected.", + { + "@type": "@16" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLimitErr2.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLimitErr2.in new file mode 100644 index 0000000000..9d79851565 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLimitErr2.in @@ -0,0 +1 @@ +SELECT * FROM test LIMIT 1 OFFSET \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLimitErr2.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLimitErr2.out new file mode 100644 index 0000000000..32e7210f1e --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLimitErr2.out @@ -0,0 +1,701 @@ +{ + "query": "SELECT * FROM test LIMIT 1 OFFSET", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SELECT * FROM test LIMIT 1 OFFSET", + "len": 33, + "last": 33, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "test", + "value": "test", + "keyword": null, + "type": 0, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LIMIT", + "value": "LIMIT", + "keyword": "LIMIT", + "type": 1, + "flags": 3, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "OFFSET", + "value": "OFFSET", + "keyword": "OFFSET", + "type": 1, + "flags": 1, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 14, + "idx": 14 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "test", + "column": null, + "expr": "test", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": null, + "group": null, + "having": null, + "order": null, + "limit": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "offset": 0, + "rowCount": 1 + }, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 12 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "An offset was expected.", + { + "@type": "@14" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLoad1.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLoad1.in new file mode 100644 index 0000000000..265763064f --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLoad1.in @@ -0,0 +1 @@ +LOAD DATA CONCURRENT INFILE 'employee1.txt' INTO TABLE employee; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLoad1.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLoad1.out new file mode 100644 index 0000000000..29d5fcb33c --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLoad1.out @@ -0,0 +1,580 @@ +{ + "query": "LOAD DATA CONCURRENT INFILE 'employee1.txt' INTO TABLE employee;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "LOAD DATA CONCURRENT INFILE 'employee1.txt' INTO TABLE employee;", + "len": 64, + "last": 64, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOAD DATA", + "value": "LOAD DATA", + "keyword": "LOAD DATA", + "type": 1, + "flags": 7, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CONCURRENT", + "value": "CONCURRENT", + "keyword": "CONCURRENT", + "type": 1, + "flags": 1, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INFILE", + "value": "INFILE", + "keyword": "INFILE", + "type": 1, + "flags": 3, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'employee1.txt'", + "value": "employee1.txt", + "keyword": null, + "type": 7, + "flags": 1, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": 1, + "flags": 3, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": 1, + "flags": 3, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "employee", + "value": "employee", + "keyword": null, + "type": 0, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 15, + "idx": 15 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "OPTIONS": { + "LOW_PRIORITY": 1, + "CONCURRENT": 1, + "LOCAL": 2 + }, + "FIELDS_OPTIONS": { + "TERMINATED BY": [ + 1, + "expr" + ], + "OPTIONALLY": 2, + "ENCLOSED BY": [ + 3, + "expr" + ], + "ESCAPED BY": [ + 4, + "expr" + ] + }, + "LINES_OPTIONS": { + "STARTING BY": [ + 1, + "expr" + ], + "TERMINATED BY": [ + 2, + "expr" + ] + }, + "file_name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "'employee1.txt'", + "alias": null, + "function": null, + "subquery": null, + "file": "employee1.txt" + }, + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "employee", + "column": null, + "expr": "employee", + "alias": null, + "function": null, + "subquery": null + }, + "partition": null, + "charset_name": null, + "fields_options": null, + "fields_keyword": null, + "lines_options": null, + "col_name_or_user_var": null, + "set": null, + "ignore_number": null, + "replace_ignore": null, + "lines_rows": null, + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "CONCURRENT" + } + }, + "first": 0, + "last": 12 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLoad2.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLoad2.in new file mode 100644 index 0000000000..7e6a8bac74 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLoad2.in @@ -0,0 +1 @@ +LOAD DATA INFILE '/tmp/test.txt' INTO TABLE test FIELDS TERMINATED BY ',' IGNORE 1 LINES; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLoad2.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLoad2.out new file mode 100644 index 0000000000..df7b6cab51 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLoad2.out @@ -0,0 +1,722 @@ +{ + "query": "LOAD DATA INFILE '\/tmp\/test.txt' INTO TABLE test FIELDS TERMINATED BY ',' IGNORE 1 LINES;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "LOAD DATA INFILE '\/tmp\/test.txt' INTO TABLE test FIELDS TERMINATED BY ',' IGNORE 1 LINES;", + "len": 89, + "last": 89, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOAD DATA", + "value": "LOAD DATA", + "keyword": "LOAD DATA", + "type": 1, + "flags": 7, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INFILE", + "value": "INFILE", + "keyword": "INFILE", + "type": 1, + "flags": 3, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'\/tmp\/test.txt'", + "value": "\/tmp\/test.txt", + "keyword": null, + "type": 7, + "flags": 1, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": 1, + "flags": 3, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": 1, + "flags": 3, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "test", + "value": "test", + "keyword": null, + "type": 0, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FIELDS", + "value": "FIELDS", + "keyword": "FIELDS", + "type": 1, + "flags": 1, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TERMINATED BY", + "value": "TERMINATED BY", + "keyword": "TERMINATED BY", + "type": 1, + "flags": 7, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "','", + "value": ",", + "keyword": null, + "type": 7, + "flags": 1, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IGNORE", + "value": "IGNORE", + "keyword": "IGNORE", + "type": 1, + "flags": 3, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LINES", + "value": "LINES", + "keyword": "LINES", + "type": 1, + "flags": 3, + "position": 83 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 25, + "idx": 25 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "OPTIONS": { + "LOW_PRIORITY": 1, + "CONCURRENT": 1, + "LOCAL": 2 + }, + "FIELDS_OPTIONS": { + "TERMINATED BY": [ + 1, + "expr" + ], + "OPTIONALLY": 2, + "ENCLOSED BY": [ + 3, + "expr" + ], + "ESCAPED BY": [ + 4, + "expr" + ] + }, + "LINES_OPTIONS": { + "STARTING BY": [ + 1, + "expr" + ], + "TERMINATED BY": [ + 2, + "expr" + ] + }, + "file_name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "'\/tmp\/test.txt'", + "alias": null, + "function": null, + "subquery": null, + "file": "\/tmp\/test.txt" + }, + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "test", + "column": null, + "expr": "test", + "alias": null, + "function": null, + "subquery": null + }, + "partition": null, + "charset_name": null, + "fields_options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "TERMINATED BY", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": ",", + "expr": "','", + "alias": null, + "function": null, + "subquery": null + }, + "value": "','" + } + } + }, + "fields_keyword": "FIELDS", + "lines_options": null, + "col_name_or_user_var": null, + "set": null, + "ignore_number": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "1", + "alias": null, + "function": null, + "subquery": null + }, + "replace_ignore": null, + "lines_rows": "LINES", + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 23 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLoad3.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLoad3.in new file mode 100644 index 0000000000..1915b8607d --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLoad3.in @@ -0,0 +1 @@ +LOAD DATA INFILE 'employee3.txt' INTO TABLE employee FIELDS TERMINATED BY ',' ENCLOSED BY '"'; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLoad3.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLoad3.out new file mode 100644 index 0000000000..fab0aedd57 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLoad3.out @@ -0,0 +1,710 @@ +{ + "query": "LOAD DATA INFILE 'employee3.txt' INTO TABLE employee FIELDS TERMINATED BY ',' ENCLOSED BY '\"';", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "LOAD DATA INFILE 'employee3.txt' INTO TABLE employee FIELDS TERMINATED BY ',' ENCLOSED BY '\"';", + "len": 94, + "last": 94, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOAD DATA", + "value": "LOAD DATA", + "keyword": "LOAD DATA", + "type": 1, + "flags": 7, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INFILE", + "value": "INFILE", + "keyword": "INFILE", + "type": 1, + "flags": 3, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'employee3.txt'", + "value": "employee3.txt", + "keyword": null, + "type": 7, + "flags": 1, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": 1, + "flags": 3, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": 1, + "flags": 3, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "employee", + "value": "employee", + "keyword": null, + "type": 0, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FIELDS", + "value": "FIELDS", + "keyword": "FIELDS", + "type": 1, + "flags": 1, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TERMINATED BY", + "value": "TERMINATED BY", + "keyword": "TERMINATED BY", + "type": 1, + "flags": 7, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "','", + "value": ",", + "keyword": null, + "type": 7, + "flags": 1, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ENCLOSED BY", + "value": "ENCLOSED BY", + "keyword": "ENCLOSED BY", + "type": 1, + "flags": 7, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'\"'", + "value": "\"", + "keyword": null, + "type": 7, + "flags": 1, + "position": 90 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 23, + "idx": 23 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "OPTIONS": { + "LOW_PRIORITY": 1, + "CONCURRENT": 1, + "LOCAL": 2 + }, + "FIELDS_OPTIONS": { + "TERMINATED BY": [ + 1, + "expr" + ], + "OPTIONALLY": 2, + "ENCLOSED BY": [ + 3, + "expr" + ], + "ESCAPED BY": [ + 4, + "expr" + ] + }, + "LINES_OPTIONS": { + "STARTING BY": [ + 1, + "expr" + ], + "TERMINATED BY": [ + 2, + "expr" + ] + }, + "file_name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "'employee3.txt'", + "alias": null, + "function": null, + "subquery": null, + "file": "employee3.txt" + }, + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "employee", + "column": null, + "expr": "employee", + "alias": null, + "function": null, + "subquery": null + }, + "partition": null, + "charset_name": null, + "fields_options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "TERMINATED BY", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": ",", + "expr": "','", + "alias": null, + "function": null, + "subquery": null + }, + "value": "','" + }, + "3": { + "name": "ENCLOSED BY", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "\"", + "expr": "'\"'", + "alias": null, + "function": null, + "subquery": null + }, + "value": "'\"'" + } + } + }, + "fields_keyword": "FIELDS", + "lines_options": null, + "col_name_or_user_var": null, + "set": null, + "ignore_number": null, + "replace_ignore": null, + "lines_rows": null, + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 20 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLoad4.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLoad4.in new file mode 100644 index 0000000000..9c5783969a --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLoad4.in @@ -0,0 +1,8 @@ +LOAD DATA INFILE '/tmp/test.txt' IGNORE +INTO TABLE test +CHARACTER SET 'utf8' +COLUMNS TERMINATED BY ',' +LINES TERMINATED BY ';' +IGNORE 1 LINES +(col1, col2) +SET @a = 1; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLoad4.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLoad4.out new file mode 100644 index 0000000000..88bc026d73 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLoad4.out @@ -0,0 +1,1049 @@ +{ + "query": "LOAD DATA INFILE '\/tmp\/test.txt' IGNORE\nINTO TABLE test\nCHARACTER SET 'utf8'\nCOLUMNS TERMINATED BY ','\nLINES TERMINATED BY ';'\nIGNORE 1 LINES\n(col1, col2)\nSET @a = 1;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "LOAD DATA INFILE '\/tmp\/test.txt' IGNORE\nINTO TABLE test\nCHARACTER SET 'utf8'\nCOLUMNS TERMINATED BY ','\nLINES TERMINATED BY ';'\nIGNORE 1 LINES\n(col1, col2)\nSET @a = 1;", + "len": 166, + "last": 166, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOAD DATA", + "value": "LOAD DATA", + "keyword": "LOAD DATA", + "type": 1, + "flags": 7, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INFILE", + "value": "INFILE", + "keyword": "INFILE", + "type": 1, + "flags": 3, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'\/tmp\/test.txt'", + "value": "\/tmp\/test.txt", + "keyword": null, + "type": 7, + "flags": 1, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IGNORE", + "value": "IGNORE", + "keyword": "IGNORE", + "type": 1, + "flags": 3, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": 1, + "flags": 3, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": 1, + "flags": 3, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "test", + "value": "test", + "keyword": null, + "type": 0, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CHARACTER SET", + "value": "CHARACTER SET", + "keyword": "CHARACTER SET", + "type": 1, + "flags": 7, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'utf8'", + "value": "utf8", + "keyword": null, + "type": 7, + "flags": 1, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COLUMNS", + "value": "COLUMNS", + "keyword": "COLUMNS", + "type": 1, + "flags": 1, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TERMINATED BY", + "value": "TERMINATED BY", + "keyword": "TERMINATED BY", + "type": 1, + "flags": 7, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "','", + "value": ",", + "keyword": null, + "type": 7, + "flags": 1, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 102 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LINES", + "value": "LINES", + "keyword": "LINES", + "type": 1, + "flags": 3, + "position": 103 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TERMINATED BY", + "value": "TERMINATED BY", + "keyword": "TERMINATED BY", + "type": 1, + "flags": 7, + "position": 109 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 122 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "';'", + "value": ";", + "keyword": null, + "type": 7, + "flags": 1, + "position": 123 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 126 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IGNORE", + "value": "IGNORE", + "keyword": "IGNORE", + "type": 1, + "flags": 3, + "position": 127 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 133 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 134 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 135 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LINES", + "value": "LINES", + "keyword": "LINES", + "type": 1, + "flags": 3, + "position": 136 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 141 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 142 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "col1", + "value": "col1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 143 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 147 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 148 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "col2", + "value": "col2", + "keyword": null, + "type": 0, + "flags": 0, + "position": 149 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 153 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 154 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": 1, + "flags": 11, + "position": 155 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 158 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@a", + "value": "a", + "keyword": null, + "type": 8, + "flags": 1, + "position": 159 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 161 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 162 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 163 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 164 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 165 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 52, + "idx": 52 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "OPTIONS": { + "LOW_PRIORITY": 1, + "CONCURRENT": 1, + "LOCAL": 2 + }, + "FIELDS_OPTIONS": { + "TERMINATED BY": [ + 1, + "expr" + ], + "OPTIONALLY": 2, + "ENCLOSED BY": [ + 3, + "expr" + ], + "ESCAPED BY": [ + 4, + "expr" + ] + }, + "LINES_OPTIONS": { + "STARTING BY": [ + 1, + "expr" + ], + "TERMINATED BY": [ + 2, + "expr" + ] + }, + "file_name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "'\/tmp\/test.txt'", + "alias": null, + "function": null, + "subquery": null, + "file": "\/tmp\/test.txt" + }, + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "test", + "column": null, + "expr": "test", + "alias": null, + "function": null, + "subquery": null + }, + "partition": null, + "charset_name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "utf8", + "expr": "'utf8'", + "alias": null, + "function": null, + "subquery": null + }, + "fields_options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "TERMINATED BY", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": ",", + "expr": "','", + "alias": null, + "function": null, + "subquery": null + }, + "value": "','" + } + } + }, + "fields_keyword": "COLUMNS", + "lines_options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": { + "name": "TERMINATED BY", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": ";", + "expr": "';'", + "alias": null, + "function": null, + "subquery": null + }, + "value": "';'" + } + } + }, + "col_name_or_user_var": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "(col1, col2)", + "alias": null, + "function": null, + "subquery": null + } + ], + "set": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "column": "@a", + "value": "1" + } + ], + "ignore_number": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "1", + "alias": null, + "function": null, + "subquery": null + }, + "replace_ignore": "IGNORE", + "lines_rows": "LINES", + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 49 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLoad5.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLoad5.in new file mode 100644 index 0000000000..6b28b216a5 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLoad5.in @@ -0,0 +1 @@ +LOAD DATA INFILE '/tmp/test.txt' REPLACE INTO TABLE test COLUMNS TERMINATED BY ',' IGNORE 1 ROWS; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLoad5.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLoad5.out new file mode 100644 index 0000000000..9a7e65f741 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLoad5.out @@ -0,0 +1,740 @@ +{ + "query": "LOAD DATA INFILE '\/tmp\/test.txt' REPLACE INTO TABLE test COLUMNS TERMINATED BY ',' IGNORE 1 ROWS;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "LOAD DATA INFILE '\/tmp\/test.txt' REPLACE INTO TABLE test COLUMNS TERMINATED BY ',' IGNORE 1 ROWS;", + "len": 98, + "last": 98, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOAD DATA", + "value": "LOAD DATA", + "keyword": "LOAD DATA", + "type": 1, + "flags": 7, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INFILE", + "value": "INFILE", + "keyword": "INFILE", + "type": 1, + "flags": 3, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'\/tmp\/test.txt'", + "value": "\/tmp\/test.txt", + "keyword": null, + "type": 7, + "flags": 1, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "REPLACE", + "value": "REPLACE", + "keyword": "REPLACE", + "type": 1, + "flags": 35, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": 1, + "flags": 3, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": 1, + "flags": 3, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "test", + "value": "test", + "keyword": null, + "type": 0, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COLUMNS", + "value": "COLUMNS", + "keyword": "COLUMNS", + "type": 1, + "flags": 1, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TERMINATED BY", + "value": "TERMINATED BY", + "keyword": "TERMINATED BY", + "type": 1, + "flags": 7, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "','", + "value": ",", + "keyword": null, + "type": 7, + "flags": 1, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 83 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IGNORE", + "value": "IGNORE", + "keyword": "IGNORE", + "type": 1, + "flags": 3, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 90 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 91 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ROWS", + "value": "ROWS", + "keyword": "ROWS", + "type": 1, + "flags": 1, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 97 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 27, + "idx": 27 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "OPTIONS": { + "LOW_PRIORITY": 1, + "CONCURRENT": 1, + "LOCAL": 2 + }, + "FIELDS_OPTIONS": { + "TERMINATED BY": [ + 1, + "expr" + ], + "OPTIONALLY": 2, + "ENCLOSED BY": [ + 3, + "expr" + ], + "ESCAPED BY": [ + 4, + "expr" + ] + }, + "LINES_OPTIONS": { + "STARTING BY": [ + 1, + "expr" + ], + "TERMINATED BY": [ + 2, + "expr" + ] + }, + "file_name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "'\/tmp\/test.txt'", + "alias": null, + "function": null, + "subquery": null, + "file": "\/tmp\/test.txt" + }, + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "test", + "column": null, + "expr": "test", + "alias": null, + "function": null, + "subquery": null + }, + "partition": null, + "charset_name": null, + "fields_options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "TERMINATED BY", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": ",", + "expr": "','", + "alias": null, + "function": null, + "subquery": null + }, + "value": "','" + } + } + }, + "fields_keyword": "COLUMNS", + "lines_options": null, + "col_name_or_user_var": null, + "set": null, + "ignore_number": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "1", + "alias": null, + "function": null, + "subquery": null + }, + "replace_ignore": "REPLACE", + "lines_rows": "ROWS", + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 25 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLoad6.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLoad6.in new file mode 100644 index 0000000000..b3436fccc3 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLoad6.in @@ -0,0 +1,9 @@ +LOAD DATA INFILE '/tmp/test.txt' IGNORE +INTO TABLE test +PARTITION (p0, p1, p2) +CHARACTER SET 'utf8' +COLUMNS TERMINATED BY ',' +LINES TERMINATED BY ';' +IGNORE 1 LINES +(col1, col2) +SET @a = 1; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLoad6.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLoad6.out new file mode 100644 index 0000000000..af5b2969d4 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLoad6.out @@ -0,0 +1,1169 @@ +{ + "query": "LOAD DATA INFILE '\/tmp\/test.txt' IGNORE\nINTO TABLE test\nPARTITION (p0, p1, p2)\nCHARACTER SET 'utf8'\nCOLUMNS TERMINATED BY ','\nLINES TERMINATED BY ';'\nIGNORE 1 LINES\n(col1, col2)\nSET @a = 1;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "LOAD DATA INFILE '\/tmp\/test.txt' IGNORE\nINTO TABLE test\nPARTITION (p0, p1, p2)\nCHARACTER SET 'utf8'\nCOLUMNS TERMINATED BY ','\nLINES TERMINATED BY ';'\nIGNORE 1 LINES\n(col1, col2)\nSET @a = 1;", + "len": 189, + "last": 189, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOAD DATA", + "value": "LOAD DATA", + "keyword": "LOAD DATA", + "type": 1, + "flags": 7, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INFILE", + "value": "INFILE", + "keyword": "INFILE", + "type": 1, + "flags": 3, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'\/tmp\/test.txt'", + "value": "\/tmp\/test.txt", + "keyword": null, + "type": 7, + "flags": 1, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IGNORE", + "value": "IGNORE", + "keyword": "IGNORE", + "type": 1, + "flags": 3, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": 1, + "flags": 3, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": 1, + "flags": 3, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "test", + "value": "test", + "keyword": null, + "type": 0, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": 1, + "flags": 3, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p0", + "value": "p0", + "keyword": null, + "type": 0, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p1", + "value": "p1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p2", + "value": "p2", + "keyword": null, + "type": 0, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CHARACTER SET", + "value": "CHARACTER SET", + "keyword": "CHARACTER SET", + "type": 1, + "flags": 7, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'utf8'", + "value": "utf8", + "keyword": null, + "type": 7, + "flags": 1, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COLUMNS", + "value": "COLUMNS", + "keyword": "COLUMNS", + "type": 1, + "flags": 1, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TERMINATED BY", + "value": "TERMINATED BY", + "keyword": "TERMINATED BY", + "type": 1, + "flags": 7, + "position": 108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "','", + "value": ",", + "keyword": null, + "type": 7, + "flags": 1, + "position": 122 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 125 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LINES", + "value": "LINES", + "keyword": "LINES", + "type": 1, + "flags": 3, + "position": 126 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 131 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TERMINATED BY", + "value": "TERMINATED BY", + "keyword": "TERMINATED BY", + "type": 1, + "flags": 7, + "position": 132 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 145 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "';'", + "value": ";", + "keyword": null, + "type": 7, + "flags": 1, + "position": 146 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 149 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IGNORE", + "value": "IGNORE", + "keyword": "IGNORE", + "type": 1, + "flags": 3, + "position": 150 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 156 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 157 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 158 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LINES", + "value": "LINES", + "keyword": "LINES", + "type": 1, + "flags": 3, + "position": 159 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 164 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 165 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "col1", + "value": "col1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 166 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 170 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 171 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "col2", + "value": "col2", + "keyword": null, + "type": 0, + "flags": 0, + "position": 172 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 176 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 177 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": 1, + "flags": 11, + "position": 178 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 181 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@a", + "value": "a", + "keyword": null, + "type": 8, + "flags": 1, + "position": 182 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 184 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 185 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 186 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 187 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 188 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 64, + "idx": 64 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "OPTIONS": { + "LOW_PRIORITY": 1, + "CONCURRENT": 1, + "LOCAL": 2 + }, + "FIELDS_OPTIONS": { + "TERMINATED BY": [ + 1, + "expr" + ], + "OPTIONALLY": 2, + "ENCLOSED BY": [ + 3, + "expr" + ], + "ESCAPED BY": [ + 4, + "expr" + ] + }, + "LINES_OPTIONS": { + "STARTING BY": [ + 1, + "expr" + ], + "TERMINATED BY": [ + 2, + "expr" + ] + }, + "file_name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "'\/tmp\/test.txt'", + "alias": null, + "function": null, + "subquery": null, + "file": "\/tmp\/test.txt" + }, + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "test", + "column": null, + "expr": "test", + "alias": null, + "function": null, + "subquery": null + }, + "partition": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "raw": [ + "p0", + "p1", + "p2" + ], + "values": [ + "p0", + "p1", + "p2" + ] + }, + "charset_name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "utf8", + "expr": "'utf8'", + "alias": null, + "function": null, + "subquery": null + }, + "fields_options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "TERMINATED BY", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": ",", + "expr": "','", + "alias": null, + "function": null, + "subquery": null + }, + "value": "','" + } + } + }, + "fields_keyword": "COLUMNS", + "lines_options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": { + "name": "TERMINATED BY", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": ";", + "expr": "';'", + "alias": null, + "function": null, + "subquery": null + }, + "value": "';'" + } + } + }, + "col_name_or_user_var": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "(col1, col2)", + "alias": null, + "function": null, + "subquery": null + } + ], + "set": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "column": "@a", + "value": "1" + } + ], + "ignore_number": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "1", + "alias": null, + "function": null, + "subquery": null + }, + "replace_ignore": "IGNORE", + "lines_rows": "LINES", + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 61 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLoadErr1.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLoadErr1.in new file mode 100644 index 0000000000..f8a969a399 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLoadErr1.in @@ -0,0 +1 @@ +LOAD DATA CONCURRENT FROM 'employee1.txt' INTO TABLE employee; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLoadErr1.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLoadErr1.out new file mode 100644 index 0000000000..0603b4809f --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLoadErr1.out @@ -0,0 +1,550 @@ +{ + "query": "LOAD DATA CONCURRENT FROM 'employee1.txt' INTO TABLE employee;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "LOAD DATA CONCURRENT FROM 'employee1.txt' INTO TABLE employee;", + "len": 62, + "last": 62, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOAD DATA", + "value": "LOAD DATA", + "keyword": "LOAD DATA", + "type": 1, + "flags": 7, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CONCURRENT", + "value": "CONCURRENT", + "keyword": "CONCURRENT", + "type": 1, + "flags": 1, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'employee1.txt'", + "value": "employee1.txt", + "keyword": null, + "type": 7, + "flags": 1, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": 1, + "flags": 3, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": 1, + "flags": 3, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "employee", + "value": "employee", + "keyword": null, + "type": 0, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 15, + "idx": 15 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "OPTIONS": { + "LOW_PRIORITY": 1, + "CONCURRENT": 1, + "LOCAL": 2 + }, + "FIELDS_OPTIONS": { + "TERMINATED BY": [ + 1, + "expr" + ], + "OPTIONALLY": 2, + "ENCLOSED BY": [ + 3, + "expr" + ], + "ESCAPED BY": [ + 4, + "expr" + ] + }, + "LINES_OPTIONS": { + "STARTING BY": [ + 1, + "expr" + ], + "TERMINATED BY": [ + 2, + "expr" + ] + }, + "file_name": null, + "table": null, + "partition": null, + "charset_name": null, + "fields_options": null, + "fields_keyword": null, + "lines_options": null, + "col_name_or_user_var": null, + "set": null, + "ignore_number": null, + "replace_ignore": null, + "lines_rows": null, + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "CONCURRENT" + } + }, + "first": 0, + "last": 3 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected keyword.", + { + "@type": "@6" + }, + 0 + ], + [ + "Unrecognized statement type.", + { + "@type": "@6" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLoadErr2.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLoadErr2.in new file mode 100644 index 0000000000..eeda0b4d1f --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLoadErr2.in @@ -0,0 +1 @@ +LOAD DATA CONCURRENT ABC 'employee1.txt' INTO TABLE employee; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLoadErr2.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLoadErr2.out new file mode 100644 index 0000000000..ab7570decf --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLoadErr2.out @@ -0,0 +1,564 @@ +{ + "query": "LOAD DATA CONCURRENT ABC 'employee1.txt' INTO TABLE employee;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "LOAD DATA CONCURRENT ABC 'employee1.txt' INTO TABLE employee;", + "len": 61, + "last": 61, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOAD DATA", + "value": "LOAD DATA", + "keyword": "LOAD DATA", + "type": 1, + "flags": 7, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CONCURRENT", + "value": "CONCURRENT", + "keyword": "CONCURRENT", + "type": 1, + "flags": 1, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ABC", + "value": "ABC", + "keyword": null, + "type": 0, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'employee1.txt'", + "value": "employee1.txt", + "keyword": null, + "type": 7, + "flags": 1, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": 1, + "flags": 3, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": 1, + "flags": 3, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "employee", + "value": "employee", + "keyword": null, + "type": 0, + "flags": 0, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 15, + "idx": 15 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "OPTIONS": { + "LOW_PRIORITY": 1, + "CONCURRENT": 1, + "LOCAL": 2 + }, + "FIELDS_OPTIONS": { + "TERMINATED BY": [ + 1, + "expr" + ], + "OPTIONALLY": 2, + "ENCLOSED BY": [ + 3, + "expr" + ], + "ESCAPED BY": [ + 4, + "expr" + ] + }, + "LINES_OPTIONS": { + "STARTING BY": [ + 1, + "expr" + ], + "TERMINATED BY": [ + 2, + "expr" + ] + }, + "file_name": null, + "table": null, + "partition": null, + "charset_name": null, + "fields_options": null, + "fields_keyword": null, + "lines_options": null, + "col_name_or_user_var": null, + "set": null, + "ignore_number": null, + "replace_ignore": null, + "lines_rows": null, + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "CONCURRENT" + } + }, + "first": 0, + "last": 3 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected token.", + { + "@type": "@6" + }, + 0 + ], + [ + "Unexpected beginning of statement.", + { + "@type": "@6" + }, + 0 + ], + [ + "Unexpected beginning of statement.", + { + "@type": "@8" + }, + 0 + ], + [ + "Unrecognized statement type.", + { + "@type": "@10" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLoadErr3.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLoadErr3.in new file mode 100644 index 0000000000..9dea8ab018 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLoadErr3.in @@ -0,0 +1,3 @@ +LOAD DATA INFILE '/tmp/test.txt' IGNORE +INTO TABLE test +DATA @a = 1; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLoadErr3.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLoadErr3.out new file mode 100644 index 0000000000..658a270aa0 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLoadErr3.out @@ -0,0 +1,658 @@ +{ + "query": "LOAD DATA INFILE '\/tmp\/test.txt' IGNORE\nINTO TABLE test\nDATA @a = 1;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "LOAD DATA INFILE '\/tmp\/test.txt' IGNORE\nINTO TABLE test\nDATA @a = 1;", + "len": 68, + "last": 68, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOAD DATA", + "value": "LOAD DATA", + "keyword": "LOAD DATA", + "type": 1, + "flags": 7, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INFILE", + "value": "INFILE", + "keyword": "INFILE", + "type": 1, + "flags": 3, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'\/tmp\/test.txt'", + "value": "\/tmp\/test.txt", + "keyword": null, + "type": 7, + "flags": 1, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IGNORE", + "value": "IGNORE", + "keyword": "IGNORE", + "type": 1, + "flags": 3, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": 1, + "flags": 3, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": 1, + "flags": 3, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "test", + "value": "test", + "keyword": null, + "type": 0, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DATA", + "value": "DATA", + "keyword": "DATA", + "type": 1, + "flags": 1, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@a", + "value": "a", + "keyword": null, + "type": 8, + "flags": 1, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 23, + "idx": 23 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "OPTIONS": { + "LOW_PRIORITY": 1, + "CONCURRENT": 1, + "LOCAL": 2 + }, + "FIELDS_OPTIONS": { + "TERMINATED BY": [ + 1, + "expr" + ], + "OPTIONALLY": 2, + "ENCLOSED BY": [ + 3, + "expr" + ], + "ESCAPED BY": [ + 4, + "expr" + ] + }, + "LINES_OPTIONS": { + "STARTING BY": [ + 1, + "expr" + ], + "TERMINATED BY": [ + 2, + "expr" + ] + }, + "file_name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "'\/tmp\/test.txt'", + "alias": null, + "function": null, + "subquery": null, + "file": "\/tmp\/test.txt" + }, + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "test", + "column": null, + "expr": "test", + "alias": null, + "function": null, + "subquery": null + }, + "partition": null, + "charset_name": null, + "fields_options": null, + "fields_keyword": null, + "lines_options": null, + "col_name_or_user_var": null, + "set": null, + "ignore_number": null, + "replace_ignore": "IGNORE", + "lines_rows": null, + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 13 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unrecognized statement type.", + { + "@type": "@16" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLoadErr4.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLoadErr4.in new file mode 100644 index 0000000000..44ca3fefd0 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLoadErr4.in @@ -0,0 +1,3 @@ +LOAD DATA INFILE '/tmp/test.txt' IGNORE +INTO test +DATA @a = 1; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLoadErr4.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLoadErr4.out new file mode 100644 index 0000000000..0fb66c6700 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLoadErr4.out @@ -0,0 +1,632 @@ +{ + "query": "LOAD DATA INFILE '\/tmp\/test.txt' IGNORE\nINTO test\nDATA @a = 1;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "LOAD DATA INFILE '\/tmp\/test.txt' IGNORE\nINTO test\nDATA @a = 1;", + "len": 62, + "last": 62, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOAD DATA", + "value": "LOAD DATA", + "keyword": "LOAD DATA", + "type": 1, + "flags": 7, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INFILE", + "value": "INFILE", + "keyword": "INFILE", + "type": 1, + "flags": 3, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'\/tmp\/test.txt'", + "value": "\/tmp\/test.txt", + "keyword": null, + "type": 7, + "flags": 1, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IGNORE", + "value": "IGNORE", + "keyword": "IGNORE", + "type": 1, + "flags": 3, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": 1, + "flags": 3, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "test", + "value": "test", + "keyword": null, + "type": 0, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DATA", + "value": "DATA", + "keyword": "DATA", + "type": 1, + "flags": 1, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@a", + "value": "a", + "keyword": null, + "type": 8, + "flags": 1, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 21, + "idx": 21 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "OPTIONS": { + "LOW_PRIORITY": 1, + "CONCURRENT": 1, + "LOCAL": 2 + }, + "FIELDS_OPTIONS": { + "TERMINATED BY": [ + 1, + "expr" + ], + "OPTIONALLY": 2, + "ENCLOSED BY": [ + 3, + "expr" + ], + "ESCAPED BY": [ + 4, + "expr" + ] + }, + "LINES_OPTIONS": { + "STARTING BY": [ + 1, + "expr" + ], + "TERMINATED BY": [ + 2, + "expr" + ] + }, + "file_name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "'\/tmp\/test.txt'", + "alias": null, + "function": null, + "subquery": null, + "file": "\/tmp\/test.txt" + }, + "table": null, + "partition": null, + "charset_name": null, + "fields_options": null, + "fields_keyword": null, + "lines_options": null, + "col_name_or_user_var": null, + "set": null, + "ignore_number": null, + "replace_ignore": "IGNORE", + "lines_rows": null, + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 9 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected token.", + { + "@type": "@12" + }, + 0 + ], + [ + "Unexpected beginning of statement.", + { + "@type": "@12" + }, + 0 + ], + [ + "Unrecognized statement type.", + { + "@type": "@14" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLoadErr5.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLoadErr5.in new file mode 100644 index 0000000000..0a21a6b118 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLoadErr5.in @@ -0,0 +1,3 @@ +LOAD DATA INFILE '/tmp/test.txt' IGNORE +INTO TABLE test +@a = 1; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLoadErr5.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLoadErr5.out new file mode 100644 index 0000000000..bb1ad613c7 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLoadErr5.out @@ -0,0 +1,654 @@ +{ + "query": "LOAD DATA INFILE '\/tmp\/test.txt' IGNORE\nINTO TABLE test\n@a = 1;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "LOAD DATA INFILE '\/tmp\/test.txt' IGNORE\nINTO TABLE test\n@a = 1;", + "len": 63, + "last": 63, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOAD DATA", + "value": "LOAD DATA", + "keyword": "LOAD DATA", + "type": 1, + "flags": 7, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INFILE", + "value": "INFILE", + "keyword": "INFILE", + "type": 1, + "flags": 3, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'\/tmp\/test.txt'", + "value": "\/tmp\/test.txt", + "keyword": null, + "type": 7, + "flags": 1, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IGNORE", + "value": "IGNORE", + "keyword": "IGNORE", + "type": 1, + "flags": 3, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": 1, + "flags": 3, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": 1, + "flags": 3, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "test", + "value": "test", + "keyword": null, + "type": 0, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@a", + "value": "a", + "keyword": null, + "type": 8, + "flags": 1, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 21, + "idx": 21 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "OPTIONS": { + "LOW_PRIORITY": 1, + "CONCURRENT": 1, + "LOCAL": 2 + }, + "FIELDS_OPTIONS": { + "TERMINATED BY": [ + 1, + "expr" + ], + "OPTIONALLY": 2, + "ENCLOSED BY": [ + 3, + "expr" + ], + "ESCAPED BY": [ + 4, + "expr" + ] + }, + "LINES_OPTIONS": { + "STARTING BY": [ + 1, + "expr" + ], + "TERMINATED BY": [ + 2, + "expr" + ] + }, + "file_name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "'\/tmp\/test.txt'", + "alias": null, + "function": null, + "subquery": null, + "file": "\/tmp\/test.txt" + }, + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "test", + "column": null, + "expr": "test", + "alias": null, + "function": null, + "subquery": null + }, + "partition": null, + "charset_name": null, + "fields_options": null, + "fields_keyword": null, + "lines_options": null, + "col_name_or_user_var": null, + "set": null, + "ignore_number": null, + "replace_ignore": "IGNORE", + "lines_rows": null, + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 13 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected token.", + { + "@type": "@16" + }, + 0 + ], + [ + "Unexpected beginning of statement.", + { + "@type": "@16" + }, + 0 + ], + [ + "Unexpected beginning of statement.", + { + "@type": "@20" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLoadErr6.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLoadErr6.in new file mode 100644 index 0000000000..9dea8ab018 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLoadErr6.in @@ -0,0 +1,3 @@ +LOAD DATA INFILE '/tmp/test.txt' IGNORE +INTO TABLE test +DATA @a = 1; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLoadErr6.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLoadErr6.out new file mode 100644 index 0000000000..658a270aa0 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLoadErr6.out @@ -0,0 +1,658 @@ +{ + "query": "LOAD DATA INFILE '\/tmp\/test.txt' IGNORE\nINTO TABLE test\nDATA @a = 1;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "LOAD DATA INFILE '\/tmp\/test.txt' IGNORE\nINTO TABLE test\nDATA @a = 1;", + "len": 68, + "last": 68, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOAD DATA", + "value": "LOAD DATA", + "keyword": "LOAD DATA", + "type": 1, + "flags": 7, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INFILE", + "value": "INFILE", + "keyword": "INFILE", + "type": 1, + "flags": 3, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'\/tmp\/test.txt'", + "value": "\/tmp\/test.txt", + "keyword": null, + "type": 7, + "flags": 1, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IGNORE", + "value": "IGNORE", + "keyword": "IGNORE", + "type": 1, + "flags": 3, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": 1, + "flags": 3, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": 1, + "flags": 3, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "test", + "value": "test", + "keyword": null, + "type": 0, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DATA", + "value": "DATA", + "keyword": "DATA", + "type": 1, + "flags": 1, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@a", + "value": "a", + "keyword": null, + "type": 8, + "flags": 1, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 23, + "idx": 23 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "OPTIONS": { + "LOW_PRIORITY": 1, + "CONCURRENT": 1, + "LOCAL": 2 + }, + "FIELDS_OPTIONS": { + "TERMINATED BY": [ + 1, + "expr" + ], + "OPTIONALLY": 2, + "ENCLOSED BY": [ + 3, + "expr" + ], + "ESCAPED BY": [ + 4, + "expr" + ] + }, + "LINES_OPTIONS": { + "STARTING BY": [ + 1, + "expr" + ], + "TERMINATED BY": [ + 2, + "expr" + ] + }, + "file_name": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "'\/tmp\/test.txt'", + "alias": null, + "function": null, + "subquery": null, + "file": "\/tmp\/test.txt" + }, + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "test", + "column": null, + "expr": "test", + "alias": null, + "function": null, + "subquery": null + }, + "partition": null, + "charset_name": null, + "fields_options": null, + "fields_keyword": null, + "lines_options": null, + "col_name_or_user_var": null, + "set": null, + "ignore_number": null, + "replace_ignore": "IGNORE", + "lines_rows": null, + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 13 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unrecognized statement type.", + { + "@type": "@16" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLock1.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLock1.in new file mode 100644 index 0000000000..cfed7a3a6a --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLock1.in @@ -0,0 +1 @@ +LOCK TABLES table1 AS `t1` READ LOCAL; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLock1.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLock1.out new file mode 100644 index 0000000000..d85737de73 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLock1.out @@ -0,0 +1,519 @@ +{ + "query": "LOCK TABLES table1 AS `t1` READ LOCAL;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "LOCK TABLES table1 AS `t1` READ LOCAL;", + "len": 43, + "last": 43, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOCK", + "value": "LOCK", + "keyword": "LOCK", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLES", + "value": "TABLES", + "keyword": "TABLES", + "type": 1, + "flags": 1, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`t1`", + "value": "t1", + "keyword": null, + "type": 8, + "flags": 2, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "READ", + "value": "READ", + "keyword": "READ", + "type": 1, + "flags": 3, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOCAL", + "value": "LOCAL", + "keyword": "LOCAL", + "type": 1, + "flags": 1, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 15, + "idx": 15 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "locked": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\LockExpression", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "table1", + "column": null, + "expr": "table1", + "alias": "t1", + "function": null, + "subquery": null + }, + "type": "READ LOCAL" + } + ], + "isLock": true, + "OPTIONS": [], + "CLAUSES": [], + "END_OPTIONS": [], + "options": null, + "first": 0, + "last": 13 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLock2.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLock2.in new file mode 100644 index 0000000000..87407462e1 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLock2.in @@ -0,0 +1 @@ +LOCK TABLES table1 AS `t1` READ; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLock2.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLock2.out new file mode 100644 index 0000000000..bf118e96d6 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLock2.out @@ -0,0 +1,501 @@ +{ + "query": "LOCK TABLES table1 AS `t1` READ;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "LOCK TABLES table1 AS `t1` READ;", + "len": 32, + "last": 32, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOCK", + "value": "LOCK", + "keyword": "LOCK", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLES", + "value": "TABLES", + "keyword": "TABLES", + "type": 1, + "flags": 1, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`t1`", + "value": "t1", + "keyword": null, + "type": 8, + "flags": 2, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "READ", + "value": "READ", + "keyword": "READ", + "type": 1, + "flags": 3, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 13, + "idx": 13 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "locked": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\LockExpression", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "table1", + "column": null, + "expr": "table1", + "alias": "t1", + "function": null, + "subquery": null + }, + "type": "READ" + } + ], + "isLock": true, + "OPTIONS": [], + "CLAUSES": [], + "END_OPTIONS": [], + "options": null, + "first": 0, + "last": 11 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLock3.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLock3.in new file mode 100644 index 0000000000..4d57f17ce8 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLock3.in @@ -0,0 +1 @@ +LOCK TABLES table1 AS `t1` LOW_PRIORITY WRITE; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLock3.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLock3.out new file mode 100644 index 0000000000..1252ec10a8 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLock3.out @@ -0,0 +1,519 @@ +{ + "query": "LOCK TABLES table1 AS `t1` LOW_PRIORITY WRITE;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "LOCK TABLES table1 AS `t1` LOW_PRIORITY WRITE;", + "len": 46, + "last": 46, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOCK", + "value": "LOCK", + "keyword": "LOCK", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLES", + "value": "TABLES", + "keyword": "TABLES", + "type": 1, + "flags": 1, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`t1`", + "value": "t1", + "keyword": null, + "type": 8, + "flags": 2, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOW_PRIORITY", + "value": "LOW_PRIORITY", + "keyword": "LOW_PRIORITY", + "type": 1, + "flags": 3, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WRITE", + "value": "WRITE", + "keyword": "WRITE", + "type": 1, + "flags": 3, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 15, + "idx": 15 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "locked": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\LockExpression", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "table1", + "column": null, + "expr": "table1", + "alias": "t1", + "function": null, + "subquery": null + }, + "type": "LOW_PRIORITY WRITE" + } + ], + "isLock": true, + "OPTIONS": [], + "CLAUSES": [], + "END_OPTIONS": [], + "options": null, + "first": 0, + "last": 13 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLock4.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLock4.in new file mode 100644 index 0000000000..dd99683e09 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLock4.in @@ -0,0 +1 @@ +LOCK TABLES table1 AS `t1` WRITE; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLock4.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLock4.out new file mode 100644 index 0000000000..768efa88cb --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLock4.out @@ -0,0 +1,501 @@ +{ + "query": "LOCK TABLES table1 AS `t1` WRITE;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "LOCK TABLES table1 AS `t1` WRITE;", + "len": 33, + "last": 33, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOCK", + "value": "LOCK", + "keyword": "LOCK", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLES", + "value": "TABLES", + "keyword": "TABLES", + "type": 1, + "flags": 1, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`t1`", + "value": "t1", + "keyword": null, + "type": 8, + "flags": 2, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WRITE", + "value": "WRITE", + "keyword": "WRITE", + "type": 1, + "flags": 3, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 13, + "idx": 13 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "locked": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\LockExpression", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "table1", + "column": null, + "expr": "table1", + "alias": "t1", + "function": null, + "subquery": null + }, + "type": "WRITE" + } + ], + "isLock": true, + "OPTIONS": [], + "CLAUSES": [], + "END_OPTIONS": [], + "options": null, + "first": 0, + "last": 11 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLock5.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLock5.in new file mode 100644 index 0000000000..bc8729148b --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLock5.in @@ -0,0 +1 @@ +LOCK TABLES table1 AS `t1` READ LOCAL, table2 AS `t2` WRITE; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLock5.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLock5.out new file mode 100644 index 0000000000..5f57a2f379 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLock5.out @@ -0,0 +1,627 @@ +{ + "query": "LOCK TABLES table1 AS `t1` READ LOCAL, table2 AS `t2` WRITE;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "LOCK TABLES table1 AS `t1` READ LOCAL, table2 AS `t2` WRITE;", + "len": 60, + "last": 60, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOCK", + "value": "LOCK", + "keyword": "LOCK", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLES", + "value": "TABLES", + "keyword": "TABLES", + "type": 1, + "flags": 1, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`t1`", + "value": "t1", + "keyword": null, + "type": 8, + "flags": 2, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "READ", + "value": "READ", + "keyword": "READ", + "type": 1, + "flags": 3, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOCAL", + "value": "LOCAL", + "keyword": "LOCAL", + "type": 1, + "flags": 1, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table2", + "value": "table2", + "keyword": null, + "type": 0, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`t2`", + "value": "t2", + "keyword": null, + "type": 8, + "flags": 2, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WRITE", + "value": "WRITE", + "keyword": "WRITE", + "type": 1, + "flags": 3, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 24, + "idx": 24 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "locked": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\LockExpression", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "table1", + "column": null, + "expr": "table1", + "alias": "t1", + "function": null, + "subquery": null + }, + "type": "READ LOCAL" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\LockExpression", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "table2", + "column": null, + "expr": "table2", + "alias": "t2", + "function": null, + "subquery": null + }, + "type": "WRITE" + } + ], + "isLock": true, + "OPTIONS": [], + "CLAUSES": [], + "END_OPTIONS": [], + "options": null, + "first": 0, + "last": 22 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLock6.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLock6.in new file mode 100644 index 0000000000..9f6934652c --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLock6.in @@ -0,0 +1 @@ +LOCK TABLES table1 READ LOCAL, table2 AS `t2` WRITE; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLock6.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLock6.out new file mode 100644 index 0000000000..a0c488d59c --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLock6.out @@ -0,0 +1,591 @@ +{ + "query": "LOCK TABLES table1 READ LOCAL, table2 AS `t2` WRITE;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "LOCK TABLES table1 READ LOCAL, table2 AS `t2` WRITE;", + "len": 52, + "last": 52, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOCK", + "value": "LOCK", + "keyword": "LOCK", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLES", + "value": "TABLES", + "keyword": "TABLES", + "type": 1, + "flags": 1, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "READ", + "value": "READ", + "keyword": "READ", + "type": 1, + "flags": 3, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOCAL", + "value": "LOCAL", + "keyword": "LOCAL", + "type": 1, + "flags": 1, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table2", + "value": "table2", + "keyword": null, + "type": 0, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`t2`", + "value": "t2", + "keyword": null, + "type": 8, + "flags": 2, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WRITE", + "value": "WRITE", + "keyword": "WRITE", + "type": 1, + "flags": 3, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 20, + "idx": 20 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "locked": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\LockExpression", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "table1", + "column": null, + "expr": "table1", + "alias": null, + "function": null, + "subquery": null + }, + "type": "READ LOCAL" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\LockExpression", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "table2", + "column": null, + "expr": "table2", + "alias": "t2", + "function": null, + "subquery": null + }, + "type": "WRITE" + } + ], + "isLock": true, + "OPTIONS": [], + "CLAUSES": [], + "END_OPTIONS": [], + "options": null, + "first": 0, + "last": 18 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLockErr1.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLockErr1.in new file mode 100644 index 0000000000..7eed140b1f --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLockErr1.in @@ -0,0 +1 @@ +LOCK TABLES table1 \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLockErr1.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLockErr1.out new file mode 100644 index 0000000000..658dbe02fc --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLockErr1.out @@ -0,0 +1,446 @@ +{ + "query": "LOCK TABLES table1", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "LOCK TABLES table1", + "len": 18, + "last": 18, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOCK", + "value": "LOCK", + "keyword": "LOCK", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLES", + "value": "TABLES", + "keyword": "TABLES", + "type": 1, + "flags": 1, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 6, + "idx": 6 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "locked": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\LockExpression", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "table1", + "column": null, + "expr": "table1", + "alias": null, + "function": null, + "subquery": null + }, + "type": null + } + ], + "isLock": true, + "OPTIONS": [], + "CLAUSES": [], + "END_OPTIONS": [], + "options": null, + "first": 0, + "last": 5 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected end of LOCK expression.", + { + "@type": "@6" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLockErr10.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLockErr10.in new file mode 100644 index 0000000000..5fbeff7cb8 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLockErr10.in @@ -0,0 +1 @@ +LOCK TABLES table1 AS table1 LOW_PRIORITY WRITE abc \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLockErr10.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLockErr10.out new file mode 100644 index 0000000000..04fa0bedf3 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLockErr10.out @@ -0,0 +1,536 @@ +{ + "query": "LOCK TABLES table1 AS table1 LOW_PRIORITY WRITE abc", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "LOCK TABLES table1 AS table1 LOW_PRIORITY WRITE abc", + "len": 51, + "last": 51, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOCK", + "value": "LOCK", + "keyword": "LOCK", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLES", + "value": "TABLES", + "keyword": "TABLES", + "type": 1, + "flags": 1, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOW_PRIORITY", + "value": "LOW_PRIORITY", + "keyword": "LOW_PRIORITY", + "type": 1, + "flags": 3, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WRITE", + "value": "WRITE", + "keyword": "WRITE", + "type": 1, + "flags": 3, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "abc", + "value": "abc", + "keyword": null, + "type": 0, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 16, + "idx": 16 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "locked": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\LockExpression", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "table1", + "column": null, + "expr": "table1", + "alias": "table1", + "function": null, + "subquery": null + }, + "type": "LOW_PRIORITY WRITE" + } + ], + "isLock": true, + "OPTIONS": [], + "CLAUSES": [], + "END_OPTIONS": [], + "options": null, + "first": 0, + "last": 15 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected token.", + { + "@type": "@16" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLockErr2.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLockErr2.in new file mode 100644 index 0000000000..df0081f2cc --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLockErr2.in @@ -0,0 +1 @@ +LOCK TABLES table1 AS `t1` LOCAL \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLockErr2.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLockErr2.out new file mode 100644 index 0000000000..850a3f6a52 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLockErr2.out @@ -0,0 +1,505 @@ +{ + "query": "LOCK TABLES table1 AS `t1` LOCAL", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "LOCK TABLES table1 AS `t1` LOCAL", + "len": 32, + "last": 32, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOCK", + "value": "LOCK", + "keyword": "LOCK", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLES", + "value": "TABLES", + "keyword": "TABLES", + "type": 1, + "flags": 1, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`t1`", + "value": "t1", + "keyword": null, + "type": 8, + "flags": 2, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOCAL", + "value": "LOCAL", + "keyword": "LOCAL", + "type": 1, + "flags": 1, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 12, + "idx": 12 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "locked": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\LockExpression", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "table1", + "column": null, + "expr": "table1", + "alias": "t1", + "function": null, + "subquery": null + }, + "type": "" + } + ], + "isLock": true, + "OPTIONS": [], + "CLAUSES": [], + "END_OPTIONS": [], + "options": null, + "first": 0, + "last": 11 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected keyword.", + { + "@type": "@12" + }, + 0 + ], + [ + "Unexpected end of Lock expression.", + null, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLockErr3.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLockErr3.in new file mode 100644 index 0000000000..b779b587e4 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLockErr3.in @@ -0,0 +1,2 @@ +-- TABLES misspelled +LOCK TABLE table1 AS t1 READ \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLockErr3.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLockErr3.out new file mode 100644 index 0000000000..8f6c09ea3c --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLockErr3.out @@ -0,0 +1,504 @@ +{ + "query": "-- TABLES misspelled\nLOCK TABLE table1 AS t1 READ", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "-- TABLES misspelled\nLOCK TABLE table1 AS t1 READ", + "len": 49, + "last": 49, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-- TABLES misspelled", + "value": "-- TABLES misspelled", + "keyword": null, + "type": 4, + "flags": 4, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOCK", + "value": "LOCK", + "keyword": "LOCK", + "type": 1, + "flags": 3, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": 1, + "flags": 3, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t1", + "value": "t1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "READ", + "value": "READ", + "keyword": "READ", + "type": 1, + "flags": 3, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 14, + "idx": 15 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "locked": [], + "isLock": true, + "OPTIONS": [], + "CLAUSES": [], + "END_OPTIONS": [], + "options": null, + "first": 0, + "last": 4 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected keyword.", + { + "@type": "@6" + }, + 0 + ], + [ + "Unexpected beginning of statement.", + { + "@type": "@8" + }, + 0 + ], + [ + "Unrecognized statement type.", + { + "@type": "@10" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLockErr4.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLockErr4.in new file mode 100644 index 0000000000..9fe5811a95 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLockErr4.in @@ -0,0 +1,2 @@ +-- missing TABLES keyword +LOCK table1 READ LOCAL \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLockErr4.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLockErr4.out new file mode 100644 index 0000000000..803c70d355 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLockErr4.out @@ -0,0 +1,461 @@ +{ + "query": "-- missing TABLES keyword\nLOCK table1 READ LOCAL", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "-- missing TABLES keyword\nLOCK table1 READ LOCAL", + "len": 48, + "last": 48, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-- missing TABLES keyword", + "value": "-- missing TABLES keyword", + "keyword": null, + "type": 4, + "flags": 4, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOCK", + "value": "LOCK", + "keyword": "LOCK", + "type": 1, + "flags": 3, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "READ", + "value": "READ", + "keyword": "READ", + "type": 1, + "flags": 3, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOCAL", + "value": "LOCAL", + "keyword": "LOCAL", + "type": 1, + "flags": 1, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 10, + "idx": 11 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "locked": [], + "isLock": true, + "OPTIONS": [], + "CLAUSES": [], + "END_OPTIONS": [], + "options": null, + "first": 0, + "last": 4 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected token.", + { + "@type": "@6" + }, + 0 + ], + [ + "Unrecognized statement type.", + { + "@type": "@8" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLockErr5.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLockErr5.in new file mode 100644 index 0000000000..3737540371 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLockErr5.in @@ -0,0 +1,2 @@ +-- extraneous comma +LOCK TABLES table1 READ LOCAL, \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLockErr5.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLockErr5.out new file mode 100644 index 0000000000..bb90f0afd7 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLockErr5.out @@ -0,0 +1,509 @@ +{ + "query": "-- extraneous comma\nLOCK TABLES table1 READ LOCAL,", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "-- extraneous comma\nLOCK TABLES table1 READ LOCAL,", + "len": 50, + "last": 50, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-- extraneous comma", + "value": "-- extraneous comma", + "keyword": null, + "type": 4, + "flags": 4, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOCK", + "value": "LOCK", + "keyword": "LOCK", + "type": 1, + "flags": 3, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLES", + "value": "TABLES", + "keyword": "TABLES", + "type": 1, + "flags": 1, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "READ", + "value": "READ", + "keyword": "READ", + "type": 1, + "flags": 3, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOCAL", + "value": "LOCAL", + "keyword": "LOCAL", + "type": 1, + "flags": 1, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 13, + "idx": 13 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "locked": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\LockExpression", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "table1", + "column": null, + "expr": "table1", + "alias": null, + "function": null, + "subquery": null + }, + "type": "READ LOCAL" + } + ], + "isLock": true, + "OPTIONS": [], + "CLAUSES": [], + "END_OPTIONS": [], + "options": null, + "first": 0, + "last": 12 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected end of LOCK statement.", + { + "@type": "@13" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLockErr6.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLockErr6.in new file mode 100644 index 0000000000..5223189ef9 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLockErr6.in @@ -0,0 +1,2 @@ +-- missing lock type +LOCK TABLES table1 \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLockErr6.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLockErr6.out new file mode 100644 index 0000000000..ff148bce97 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLockErr6.out @@ -0,0 +1,464 @@ +{ + "query": "-- missing lock type\nLOCK TABLES table1", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "-- missing lock type\nLOCK TABLES table1", + "len": 39, + "last": 39, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-- missing lock type", + "value": "-- missing lock type", + "keyword": null, + "type": 4, + "flags": 4, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOCK", + "value": "LOCK", + "keyword": "LOCK", + "type": 1, + "flags": 3, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLES", + "value": "TABLES", + "keyword": "TABLES", + "type": 1, + "flags": 1, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 8, + "idx": 8 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "locked": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\LockExpression", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "table1", + "column": null, + "expr": "table1", + "alias": null, + "function": null, + "subquery": null + }, + "type": null + } + ], + "isLock": true, + "OPTIONS": [], + "CLAUSES": [], + "END_OPTIONS": [], + "options": null, + "first": 0, + "last": 7 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected end of LOCK expression.", + { + "@type": "@8" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLockErr7.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLockErr7.in new file mode 100644 index 0000000000..324343a8ec --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLockErr7.in @@ -0,0 +1 @@ +LOCK TABLES table1 AS table1 non_keyword \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLockErr7.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLockErr7.out new file mode 100644 index 0000000000..613ec49bac --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLockErr7.out @@ -0,0 +1,512 @@ +{ + "query": "LOCK TABLES table1 AS table1 non_keyword", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "LOCK TABLES table1 AS table1 non_keyword", + "len": 40, + "last": 40, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOCK", + "value": "LOCK", + "keyword": "LOCK", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLES", + "value": "TABLES", + "keyword": "TABLES", + "type": 1, + "flags": 1, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "non_keyword", + "value": "non_keyword", + "keyword": null, + "type": 0, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 12, + "idx": 12 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "locked": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\LockExpression", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "table1", + "column": null, + "expr": "table1", + "alias": "table1", + "function": null, + "subquery": null + }, + "type": "" + } + ], + "isLock": true, + "OPTIONS": [], + "CLAUSES": [], + "END_OPTIONS": [], + "options": null, + "first": 0, + "last": 11 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "An alias was previously found.", + { + "@type": "@12" + }, + 0 + ], + [ + "Unexpected token.", + { + "@type": "@12" + }, + 0 + ], + [ + "Unexpected end of Lock expression.", + null, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLockErr8.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLockErr8.in new file mode 100644 index 0000000000..052824d473 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLockErr8.in @@ -0,0 +1 @@ +LOCK TABLES table1 AS table1 READ AUTO_INCREMENT \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLockErr8.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLockErr8.out new file mode 100644 index 0000000000..a56ea4bc91 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLockErr8.out @@ -0,0 +1,518 @@ +{ + "query": "LOCK TABLES table1 AS table1 READ AUTO_INCREMENT", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "LOCK TABLES table1 AS table1 READ AUTO_INCREMENT", + "len": 48, + "last": 48, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOCK", + "value": "LOCK", + "keyword": "LOCK", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLES", + "value": "TABLES", + "keyword": "TABLES", + "type": 1, + "flags": 1, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "READ", + "value": "READ", + "keyword": "READ", + "type": 1, + "flags": 3, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AUTO_INCREMENT", + "value": "AUTO_INCREMENT", + "keyword": "AUTO_INCREMENT", + "type": 1, + "flags": 1, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 14, + "idx": 14 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "locked": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\LockExpression", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "table1", + "column": null, + "expr": "table1", + "alias": "table1", + "function": null, + "subquery": null + }, + "type": "READ" + } + ], + "isLock": true, + "OPTIONS": [], + "CLAUSES": [], + "END_OPTIONS": [], + "options": null, + "first": 0, + "last": 13 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected keyword.", + { + "@type": "@14" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLockErr9.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLockErr9.in new file mode 100644 index 0000000000..e44d1dd2e3 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLockErr9.in @@ -0,0 +1 @@ +LOCK TABLES table1 AS table1 LOW_PRIORITY READ \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLockErr9.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLockErr9.out new file mode 100644 index 0000000000..863403862b --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseLockErr9.out @@ -0,0 +1,525 @@ +{ + "query": "LOCK TABLES table1 AS table1 LOW_PRIORITY READ", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "LOCK TABLES table1 AS table1 LOW_PRIORITY READ", + "len": 46, + "last": 46, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOCK", + "value": "LOCK", + "keyword": "LOCK", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLES", + "value": "TABLES", + "keyword": "TABLES", + "type": 1, + "flags": 1, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOW_PRIORITY", + "value": "LOW_PRIORITY", + "keyword": "LOW_PRIORITY", + "type": 1, + "flags": 3, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "READ", + "value": "READ", + "keyword": "READ", + "type": 1, + "flags": 3, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 14, + "idx": 14 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "locked": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\LockExpression", + "table": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "table1", + "column": null, + "expr": "table1", + "alias": "table1", + "function": null, + "subquery": null + }, + "type": "LOW_PRIORITY" + } + ], + "isLock": true, + "OPTIONS": [], + "CLAUSES": [], + "END_OPTIONS": [], + "options": null, + "first": 0, + "last": 13 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected keyword.", + { + "@type": "@14" + }, + 0 + ], + [ + "Unexpected end of Lock expression.", + { + "@type": "@12" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parsePurge.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parsePurge.in new file mode 100644 index 0000000000..e13352298f --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parsePurge.in @@ -0,0 +1 @@ +PURGE BINARY LOGS TO 'mysql-bin.010'; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parsePurge.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parsePurge.out new file mode 100644 index 0000000000..2bc3771dc0 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parsePurge.out @@ -0,0 +1,478 @@ +{ + "query": "PURGE BINARY LOGS TO 'mysql-bin.010';", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "PURGE BINARY LOGS TO 'mysql-bin.010';", + "len": 37, + "last": 37, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PURGE", + "value": "PURGE", + "keyword": "PURGE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "BINARY", + "value": "BINARY", + "keyword": "BINARY", + "type": 1, + "flags": 43, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOGS", + "value": "LOGS", + "keyword": "LOGS", + "type": 1, + "flags": 1, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TO", + "value": "TO", + "keyword": "TO", + "type": 1, + "flags": 3, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'mysql-bin.010'", + "value": "mysql-bin.010", + "keyword": null, + "type": 7, + "flags": 1, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 11, + "idx": 11 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "log_type": "BINARY", + "end_option": "TO", + "end_expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "mysql-bin.010", + "expr": "'mysql-bin.010'", + "alias": null, + "function": null, + "subquery": null + }, + "OPTIONS": [], + "CLAUSES": [], + "END_OPTIONS": [], + "options": null, + "first": 0, + "last": 9 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parsePurge2.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parsePurge2.in new file mode 100644 index 0000000000..a09818a1a3 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parsePurge2.in @@ -0,0 +1 @@ +PURGE BINARY LOGS BEFORE '2008-04-02 22:46:26'; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parsePurge2.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parsePurge2.out new file mode 100644 index 0000000000..3a76fa0fb4 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parsePurge2.out @@ -0,0 +1,478 @@ +{ + "query": "PURGE BINARY LOGS BEFORE '2008-04-02 22:46:26';", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "PURGE BINARY LOGS BEFORE '2008-04-02 22:46:26';", + "len": 47, + "last": 47, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PURGE", + "value": "PURGE", + "keyword": "PURGE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "BINARY", + "value": "BINARY", + "keyword": "BINARY", + "type": 1, + "flags": 43, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOGS", + "value": "LOGS", + "keyword": "LOGS", + "type": 1, + "flags": 1, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "BEFORE", + "value": "BEFORE", + "keyword": "BEFORE", + "type": 1, + "flags": 3, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'2008-04-02 22:46:26'", + "value": "2008-04-02 22:46:26", + "keyword": null, + "type": 7, + "flags": 1, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 11, + "idx": 11 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "log_type": "BINARY", + "end_option": "BEFORE", + "end_expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "2008-04-02 22:46:26", + "expr": "'2008-04-02 22:46:26'", + "alias": null, + "function": null, + "subquery": null + }, + "OPTIONS": [], + "CLAUSES": [], + "END_OPTIONS": [], + "options": null, + "first": 0, + "last": 9 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parsePurge3.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parsePurge3.in new file mode 100644 index 0000000000..755ff2b8db --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parsePurge3.in @@ -0,0 +1 @@ +PURGE MASTER LOGS BEFORE '2008-04-02 22:46:26'; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parsePurge3.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parsePurge3.out new file mode 100644 index 0000000000..46bd6b8a03 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parsePurge3.out @@ -0,0 +1,478 @@ +{ + "query": "PURGE MASTER LOGS BEFORE '2008-04-02 22:46:26';", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "PURGE MASTER LOGS BEFORE '2008-04-02 22:46:26';", + "len": 47, + "last": 47, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PURGE", + "value": "PURGE", + "keyword": "PURGE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "MASTER", + "value": "MASTER", + "keyword": "MASTER", + "type": 1, + "flags": 1, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOGS", + "value": "LOGS", + "keyword": "LOGS", + "type": 1, + "flags": 1, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "BEFORE", + "value": "BEFORE", + "keyword": "BEFORE", + "type": 1, + "flags": 3, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'2008-04-02 22:46:26'", + "value": "2008-04-02 22:46:26", + "keyword": null, + "type": 7, + "flags": 1, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 11, + "idx": 11 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "log_type": "MASTER", + "end_option": "BEFORE", + "end_expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "2008-04-02 22:46:26", + "expr": "'2008-04-02 22:46:26'", + "alias": null, + "function": null, + "subquery": null + }, + "OPTIONS": [], + "CLAUSES": [], + "END_OPTIONS": [], + "options": null, + "first": 0, + "last": 9 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parsePurge4.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parsePurge4.in new file mode 100644 index 0000000000..537e269fd7 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parsePurge4.in @@ -0,0 +1 @@ +PURGE MASTER LOGS TO 'mysql-bin.010'; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parsePurge4.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parsePurge4.out new file mode 100644 index 0000000000..b6b1dc41a8 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parsePurge4.out @@ -0,0 +1,478 @@ +{ + "query": "PURGE MASTER LOGS TO 'mysql-bin.010';", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "PURGE MASTER LOGS TO 'mysql-bin.010';", + "len": 37, + "last": 37, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PURGE", + "value": "PURGE", + "keyword": "PURGE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "MASTER", + "value": "MASTER", + "keyword": "MASTER", + "type": 1, + "flags": 1, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOGS", + "value": "LOGS", + "keyword": "LOGS", + "type": 1, + "flags": 1, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TO", + "value": "TO", + "keyword": "TO", + "type": 1, + "flags": 3, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'mysql-bin.010'", + "value": "mysql-bin.010", + "keyword": null, + "type": 7, + "flags": 1, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 11, + "idx": 11 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "log_type": "MASTER", + "end_option": "TO", + "end_expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "mysql-bin.010", + "expr": "'mysql-bin.010'", + "alias": null, + "function": null, + "subquery": null + }, + "OPTIONS": [], + "CLAUSES": [], + "END_OPTIONS": [], + "options": null, + "first": 0, + "last": 9 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parsePurgeErr.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parsePurgeErr.in new file mode 100644 index 0000000000..8302ca73bc --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parsePurgeErr.in @@ -0,0 +1 @@ +PURGE LOGS TO 'mysql-bin.010'; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parsePurgeErr.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parsePurgeErr.out new file mode 100644 index 0000000000..a12ea4dee0 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parsePurgeErr.out @@ -0,0 +1,467 @@ +{ + "query": "PURGE LOGS TO 'mysql-bin.010';", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "PURGE LOGS TO 'mysql-bin.010';", + "len": 30, + "last": 30, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PURGE", + "value": "PURGE", + "keyword": "PURGE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOGS", + "value": "LOGS", + "keyword": "LOGS", + "type": 1, + "flags": 1, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TO", + "value": "TO", + "keyword": "TO", + "type": 1, + "flags": 3, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'mysql-bin.010'", + "value": "mysql-bin.010", + "keyword": null, + "type": 7, + "flags": 1, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 9, + "idx": 9 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "log_type": null, + "end_option": null, + "end_expr": null, + "OPTIONS": [], + "CLAUSES": [], + "END_OPTIONS": [], + "options": null, + "first": 0, + "last": 7 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected keyword", + { + "@type": "@4" + }, + 0 + ], + [ + "Unexpected keyword", + { + "@type": "@6" + }, + 0 + ], + [ + "Unexpected token.", + { + "@type": "@8" + }, + 0 + ], + [ + "Unexpected token.", + { + "@type": "@8" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parsePurgeErr2.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parsePurgeErr2.in new file mode 100644 index 0000000000..93c642b204 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parsePurgeErr2.in @@ -0,0 +1 @@ +PURGE BINARY LOGS INTO; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parsePurgeErr2.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parsePurgeErr2.out new file mode 100644 index 0000000000..ec2e01bfad --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parsePurgeErr2.out @@ -0,0 +1,453 @@ +{ + "query": "PURGE BINARY LOGS INTO;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "PURGE BINARY LOGS INTO;", + "len": 23, + "last": 23, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PURGE", + "value": "PURGE", + "keyword": "PURGE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "BINARY", + "value": "BINARY", + "keyword": "BINARY", + "type": 1, + "flags": 43, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOGS", + "value": "LOGS", + "keyword": "LOGS", + "type": 1, + "flags": 1, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": 1, + "flags": 3, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 9, + "idx": 9 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "log_type": "BINARY", + "end_option": null, + "end_expr": null, + "OPTIONS": [], + "CLAUSES": [], + "END_OPTIONS": [], + "options": null, + "first": 0, + "last": 7 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected keyword", + { + "@type": "@8" + }, + 0 + ], + [ + "Unexpected token.", + { + "@type": "@8" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parsePurgeErr3.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parsePurgeErr3.in new file mode 100644 index 0000000000..9c58ff6e9d --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parsePurgeErr3.in @@ -0,0 +1 @@ +PURGE BINARY LOGS TO 'mysql.bin' INTO; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parsePurgeErr3.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parsePurgeErr3.out new file mode 100644 index 0000000000..749b2e6411 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parsePurgeErr3.out @@ -0,0 +1,511 @@ +{ + "query": "PURGE BINARY LOGS TO 'mysql.bin' INTO;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "PURGE BINARY LOGS TO 'mysql.bin' INTO;", + "len": 38, + "last": 38, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PURGE", + "value": "PURGE", + "keyword": "PURGE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "BINARY", + "value": "BINARY", + "keyword": "BINARY", + "type": 1, + "flags": 43, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOGS", + "value": "LOGS", + "keyword": "LOGS", + "type": 1, + "flags": 1, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TO", + "value": "TO", + "keyword": "TO", + "type": 1, + "flags": 3, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'mysql.bin'", + "value": "mysql.bin", + "keyword": null, + "type": 7, + "flags": 1, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": 1, + "flags": 3, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 13, + "idx": 13 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "log_type": "BINARY", + "end_option": "TO", + "end_expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "mysql.bin", + "expr": "'mysql.bin'", + "alias": null, + "function": null, + "subquery": null + }, + "OPTIONS": [], + "CLAUSES": [], + "END_OPTIONS": [], + "options": null, + "first": 0, + "last": 11 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected token.", + { + "@type": "@12" + }, + 0 + ], + [ + "Unexpected token.", + { + "@type": "@12" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseRename.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseRename.in new file mode 100644 index 0000000000..230bb98020 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseRename.in @@ -0,0 +1 @@ +RENAME TABLE foo TO bar \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseRename.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseRename.out new file mode 100644 index 0000000000..3097c8f31b --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseRename.out @@ -0,0 +1,495 @@ +{ + "query": "RENAME TABLE foo TO bar", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "RENAME TABLE foo TO bar", + "len": 23, + "last": 23, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "RENAME", + "value": "RENAME", + "keyword": "RENAME", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": 1, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "foo", + "value": "foo", + "keyword": null, + "type": 0, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TO", + "value": "TO", + "keyword": "TO", + "type": 1, + "flags": 3, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "bar", + "value": "bar", + "keyword": null, + "type": 0, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 10, + "idx": 10 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "renames": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "old": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "foo", + "column": null, + "expr": "foo", + "alias": null, + "function": null, + "subquery": null + }, + "new": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "bar", + "column": null, + "expr": "bar", + "alias": null, + "function": null, + "subquery": null + } + } + ], + "OPTIONS": [], + "CLAUSES": [], + "END_OPTIONS": [], + "options": null, + "first": 0, + "last": 8 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseRename2.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseRename2.in new file mode 100644 index 0000000000..7adb6410a9 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseRename2.in @@ -0,0 +1 @@ +RENAME TABLE foo TO bar, baz TO qux; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseRename2.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseRename2.out new file mode 100644 index 0000000000..b32ab30ea3 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseRename2.out @@ -0,0 +1,616 @@ +{ + "query": "RENAME TABLE foo TO bar, baz TO qux;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "RENAME TABLE foo TO bar, baz TO qux;", + "len": 36, + "last": 36, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "RENAME", + "value": "RENAME", + "keyword": "RENAME", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": 1, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "foo", + "value": "foo", + "keyword": null, + "type": 0, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TO", + "value": "TO", + "keyword": "TO", + "type": 1, + "flags": 3, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "bar", + "value": "bar", + "keyword": null, + "type": 0, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "baz", + "value": "baz", + "keyword": null, + "type": 0, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TO", + "value": "TO", + "keyword": "TO", + "type": 1, + "flags": 3, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "qux", + "value": "qux", + "keyword": null, + "type": 0, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 18, + "idx": 18 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "renames": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "old": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "foo", + "column": null, + "expr": "foo", + "alias": null, + "function": null, + "subquery": null + }, + "new": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "bar", + "column": null, + "expr": "bar", + "alias": null, + "function": null, + "subquery": null + } + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "old": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "baz", + "column": null, + "expr": "baz", + "alias": null, + "function": null, + "subquery": null + }, + "new": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "qux", + "column": null, + "expr": "qux", + "alias": null, + "function": null, + "subquery": null + } + } + ], + "OPTIONS": [], + "CLAUSES": [], + "END_OPTIONS": [], + "options": null, + "first": 0, + "last": 15 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseRenameErr1.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseRenameErr1.in new file mode 100644 index 0000000000..50b645904e --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseRenameErr1.in @@ -0,0 +1 @@ +RENAME TABLE a TO TO \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseRenameErr1.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseRenameErr1.out new file mode 100644 index 0000000000..ebf5356dee --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseRenameErr1.out @@ -0,0 +1,481 @@ +{ + "query": "RENAME TABLE a TO TO", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "RENAME TABLE a TO TO", + "len": 20, + "last": 20, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "RENAME", + "value": "RENAME", + "keyword": "RENAME", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": 1, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": 0, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TO", + "value": "TO", + "keyword": "TO", + "type": 1, + "flags": 3, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TO", + "value": "TO", + "keyword": "TO", + "type": 1, + "flags": 3, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 10, + "idx": 10 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "renames": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "old": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "a", + "column": null, + "expr": "a", + "alias": null, + "function": null, + "subquery": null + }, + "new": null + } + ], + "OPTIONS": [], + "CLAUSES": [], + "END_OPTIONS": [], + "options": null, + "first": 0, + "last": 8 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "The new name of the table was expected.", + { + "@type": "@10" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseRenameErr2.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseRenameErr2.in new file mode 100644 index 0000000000..a72e7fbbef --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseRenameErr2.in @@ -0,0 +1 @@ +RENAME TABLE TABLE \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseRenameErr2.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseRenameErr2.out new file mode 100644 index 0000000000..33cb2d1e69 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseRenameErr2.out @@ -0,0 +1,424 @@ +{ + "query": "RENAME TABLE TABLE", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "RENAME TABLE TABLE", + "len": 18, + "last": 18, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "RENAME", + "value": "RENAME", + "keyword": "RENAME", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": 1, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": 1, + "flags": 3, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 6, + "idx": 6 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "renames": [], + "OPTIONS": [], + "CLAUSES": [], + "END_OPTIONS": [], + "options": null, + "first": 0, + "last": 4 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "The old name of the table was expected.", + { + "@type": "@6" + }, + 0 + ], + [ + "A rename operation was expected.", + { + "@type": "@6" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseRenameErr3.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseRenameErr3.in new file mode 100644 index 0000000000..76865a42bb --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseRenameErr3.in @@ -0,0 +1 @@ +RENAME TABLE a FROM \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseRenameErr3.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseRenameErr3.out new file mode 100644 index 0000000000..44db62f2e2 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseRenameErr3.out @@ -0,0 +1,478 @@ +{ + "query": "RENAME TABLE a FROM", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "RENAME TABLE a FROM", + "len": 19, + "last": 19, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "RENAME", + "value": "RENAME", + "keyword": "RENAME", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": 1, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": 0, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 8, + "idx": 8 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "renames": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "old": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "a", + "column": null, + "expr": "a", + "alias": null, + "function": null, + "subquery": null + }, + "new": null + } + ], + "OPTIONS": [], + "CLAUSES": [], + "END_OPTIONS": [], + "options": null, + "first": 0, + "last": 6, + "from": [] + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Keyword \"TO\" was expected.", + { + "@type": "@8" + }, + 0 + ], + [ + "A rename operation was expected.", + { + "@type": "@7" + }, + 0 + ], + [ + "An expression was expected.", + { + "@type": "@9" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseRenameErr4.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseRenameErr4.in new file mode 100644 index 0000000000..c9ec564bdc --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseRenameErr4.in @@ -0,0 +1 @@ +RENAME TABLE foo TO bar TO \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseRenameErr4.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseRenameErr4.out new file mode 100644 index 0000000000..bf415c5398 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseRenameErr4.out @@ -0,0 +1,521 @@ +{ + "query": "RENAME TABLE foo TO bar TO", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "RENAME TABLE foo TO bar TO", + "len": 26, + "last": 26, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "RENAME", + "value": "RENAME", + "keyword": "RENAME", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": 1, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "foo", + "value": "foo", + "keyword": null, + "type": 0, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TO", + "value": "TO", + "keyword": "TO", + "type": 1, + "flags": 3, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "bar", + "value": "bar", + "keyword": null, + "type": 0, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TO", + "value": "TO", + "keyword": "TO", + "type": 1, + "flags": 3, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 12, + "idx": 12 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "renames": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "old": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "foo", + "column": null, + "expr": "foo", + "alias": null, + "function": null, + "subquery": null + }, + "new": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "bar", + "column": null, + "expr": "bar", + "alias": null, + "function": null, + "subquery": null + } + } + ], + "OPTIONS": [], + "CLAUSES": [], + "END_OPTIONS": [], + "options": null, + "first": 0, + "last": 10 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unrecognized keyword.", + { + "@type": "@12" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseRenameErr5.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseRenameErr5.in new file mode 100644 index 0000000000..59d7081ff5 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseRenameErr5.in @@ -0,0 +1 @@ +RENAME diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseRenameErr5.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseRenameErr5.out new file mode 100644 index 0000000000..336a671872 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseRenameErr5.out @@ -0,0 +1,390 @@ +{ + "query": "RENAME\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "RENAME\n", + "len": 7, + "last": 7, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "RENAME", + "value": "RENAME", + "keyword": "RENAME", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 3, + "idx": 4 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "renames": null, + "OPTIONS": [], + "CLAUSES": [], + "END_OPTIONS": [], + "options": null, + "first": 0, + "last": 3 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Keyword at end of statement.", + { + "@type": "@2" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseReplace.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseReplace.in new file mode 100644 index 0000000000..e2511b6db5 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseReplace.in @@ -0,0 +1,3 @@ +REPLACE LOW_PRIORITY +INTO users(id, username) +VALUES (1, 'Foo'), (2, 'Bar') \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseReplace.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseReplace.out new file mode 100644 index 0000000000..83ccc003c4 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseReplace.out @@ -0,0 +1,727 @@ +{ + "query": "REPLACE LOW_PRIORITY\nINTO users(id, username)\nVALUES (1, 'Foo'), (2, 'Bar')", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "REPLACE LOW_PRIORITY\nINTO users(id, username)\nVALUES (1, 'Foo'), (2, 'Bar')", + "len": 75, + "last": 75, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "REPLACE", + "value": "REPLACE", + "keyword": "REPLACE", + "type": 1, + "flags": 35, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOW_PRIORITY", + "value": "LOW_PRIORITY", + "keyword": "LOW_PRIORITY", + "type": 1, + "flags": 3, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": 1, + "flags": 3, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "users", + "value": "users", + "keyword": null, + "type": 0, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "username", + "value": "username", + "keyword": null, + "type": 0, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": 1, + "flags": 35, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'Foo'", + "value": "Foo", + "keyword": null, + "type": 7, + "flags": 1, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": 6, + "flags": 0, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'Bar'", + "value": "Bar", + "keyword": null, + "type": 7, + "flags": 1, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 31, + "idx": 31 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "OPTIONS": { + "LOW_PRIORITY": 1, + "DELAYED": 1 + }, + "into": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "FIELDS_OPTIONS": { + "TERMINATED BY": [ + 1, + "expr" + ], + "OPTIONALLY": 2, + "ENCLOSED BY": [ + 3, + "expr" + ], + "ESCAPED BY": [ + 4, + "expr" + ] + }, + "LINES_OPTIONS": { + "STARTING BY": [ + 1, + "expr" + ], + "TERMINATED BY": [ + 2, + "expr" + ] + }, + "type": null, + "dest": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "users", + "column": null, + "expr": "users", + "alias": null, + "function": null, + "subquery": null + }, + "columns": [ + "id", + "username" + ], + "values": null, + "fields_options": null, + "fields_keyword": null, + "lines_options": null + }, + "values": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "raw": [ + "1", + "'Foo'" + ], + "values": [ + "1", + "Foo" + ] + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "raw": [ + "2", + "'Bar'" + ], + "values": [ + "2", + "Bar" + ] + } + ], + "set": null, + "select": null, + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "LOW_PRIORITY" + } + }, + "first": 0, + "last": 29 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseReplace2.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseReplace2.in new file mode 100644 index 0000000000..505c14fc25 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseReplace2.in @@ -0,0 +1,4 @@ +REPLACE LOW_PRIORITY +INTO users +SET id = 1, + username = 'Bar'; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseReplace2.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseReplace2.out new file mode 100644 index 0000000000..5617797948 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseReplace2.out @@ -0,0 +1,649 @@ +{ + "query": "REPLACE LOW_PRIORITY\nINTO users\nSET id = 1,\n username = 'Bar';", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "REPLACE LOW_PRIORITY\nINTO users\nSET id = 1,\n username = 'Bar';", + "len": 65, + "last": 65, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "REPLACE", + "value": "REPLACE", + "keyword": "REPLACE", + "type": 1, + "flags": 35, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOW_PRIORITY", + "value": "LOW_PRIORITY", + "keyword": "LOW_PRIORITY", + "type": 1, + "flags": 3, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": 1, + "flags": 3, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "users", + "value": "users", + "keyword": null, + "type": 0, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": 1, + "flags": 11, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "username", + "value": "username", + "keyword": null, + "type": 0, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'Bar'", + "value": "Bar", + "keyword": null, + "type": 7, + "flags": 1, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 24, + "idx": 24 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "OPTIONS": { + "LOW_PRIORITY": 1, + "DELAYED": 1 + }, + "into": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "FIELDS_OPTIONS": { + "TERMINATED BY": [ + 1, + "expr" + ], + "OPTIONALLY": 2, + "ENCLOSED BY": [ + 3, + "expr" + ], + "ESCAPED BY": [ + 4, + "expr" + ] + }, + "LINES_OPTIONS": { + "STARTING BY": [ + 1, + "expr" + ], + "TERMINATED BY": [ + 2, + "expr" + ] + }, + "type": null, + "dest": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "users", + "column": null, + "expr": "users", + "alias": null, + "function": null, + "subquery": null + }, + "columns": null, + "values": null, + "fields_options": null, + "fields_keyword": null, + "lines_options": null + }, + "values": null, + "set": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "column": "id", + "value": "1" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "column": "username", + "value": "'Bar'" + } + ], + "select": null, + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "LOW_PRIORITY" + } + }, + "first": 0, + "last": 21 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseReplaceErr.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseReplaceErr.in new file mode 100644 index 0000000000..02ddd0484c --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseReplaceErr.in @@ -0,0 +1,3 @@ +REPLACE LOW_PRIORITY +INTO users(id, username) +(1, 'Foo'), (2, 'Bar') \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseReplaceErr.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseReplaceErr.out new file mode 100644 index 0000000000..3251b5baf2 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseReplaceErr.out @@ -0,0 +1,722 @@ +{ + "query": "REPLACE LOW_PRIORITY\nINTO users(id, username)\n(1, 'Foo'), (2, 'Bar')", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "REPLACE LOW_PRIORITY\nINTO users(id, username)\n(1, 'Foo'), (2, 'Bar')", + "len": 68, + "last": 68, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "REPLACE", + "value": "REPLACE", + "keyword": "REPLACE", + "type": 1, + "flags": 35, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOW_PRIORITY", + "value": "LOW_PRIORITY", + "keyword": "LOW_PRIORITY", + "type": 1, + "flags": 3, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": 1, + "flags": 3, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "users", + "value": "users", + "keyword": null, + "type": 0, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "username", + "value": "username", + "keyword": null, + "type": 0, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'Foo'", + "value": "Foo", + "keyword": null, + "type": 7, + "flags": 1, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": 6, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'Bar'", + "value": "Bar", + "keyword": null, + "type": 7, + "flags": 1, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 29, + "idx": 29 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "OPTIONS": { + "LOW_PRIORITY": 1, + "DELAYED": 1 + }, + "into": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "FIELDS_OPTIONS": { + "TERMINATED BY": [ + 1, + "expr" + ], + "OPTIONALLY": 2, + "ENCLOSED BY": [ + 3, + "expr" + ], + "ESCAPED BY": [ + 4, + "expr" + ] + }, + "LINES_OPTIONS": { + "STARTING BY": [ + 1, + "expr" + ], + "TERMINATED BY": [ + 2, + "expr" + ] + }, + "type": null, + "dest": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "users", + "column": null, + "expr": "users", + "alias": null, + "function": null, + "subquery": null + }, + "columns": [ + "id", + "username" + ], + "values": null, + "fields_options": null, + "fields_keyword": null, + "lines_options": null + }, + "values": null, + "set": null, + "select": null, + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "LOW_PRIORITY" + } + }, + "first": 0, + "last": 13 + } + ], + "brackets": 2, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected token.", + { + "@type": "@16" + }, + 0 + ], + [ + "Unexpected beginning of statement.", + { + "@type": "@17" + }, + 0 + ], + [ + "Unexpected beginning of statement.", + { + "@type": "@20" + }, + 0 + ], + [ + "Unexpected beginning of statement.", + { + "@type": "@25" + }, + 0 + ], + [ + "Unexpected beginning of statement.", + { + "@type": "@28" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseReplaceErr2.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseReplaceErr2.in new file mode 100644 index 0000000000..e245c4e1b1 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseReplaceErr2.in @@ -0,0 +1 @@ +REPLACE SELECT diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseReplaceErr2.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseReplaceErr2.out new file mode 100644 index 0000000000..9cf74dcedd --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseReplaceErr2.out @@ -0,0 +1,594 @@ +{ + "query": "REPLACE SELECT\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "REPLACE SELECT\n", + "len": 15, + "last": 15, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "REPLACE", + "value": "REPLACE", + "keyword": "REPLACE", + "type": 1, + "flags": 35, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 5, + "idx": 5 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "OPTIONS": { + "LOW_PRIORITY": 1, + "DELAYED": 1 + }, + "into": null, + "values": null, + "set": null, + "select": null, + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 1 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [], + "from": [], + "index_hints": null, + "partition": null, + "where": null, + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 2, + "last": 3 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected keyword.", + { + "@type": "@4" + }, + 0 + ], + [ + "An expression was expected.", + { + "@type": "@6" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseReplaceErr3.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseReplaceErr3.in new file mode 100644 index 0000000000..ed451cb81d --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseReplaceErr3.in @@ -0,0 +1,2 @@ +REPLACE INTO x "string" + diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseReplaceErr3.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseReplaceErr3.out new file mode 100644 index 0000000000..6c94695abb --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseReplaceErr3.out @@ -0,0 +1,516 @@ +{ + "query": "REPLACE INTO x \"string\"\n\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "REPLACE INTO x \"string\"\n\n", + "len": 25, + "last": 25, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "REPLACE", + "value": "REPLACE", + "keyword": "REPLACE", + "type": 1, + "flags": 35, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": 1, + "flags": 3, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "x", + "value": "x", + "keyword": "X", + "type": 1, + "flags": 33, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"string\"", + "value": "string", + "keyword": null, + "type": 7, + "flags": 2, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 9, + "idx": 9 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "OPTIONS": { + "LOW_PRIORITY": 1, + "DELAYED": 1 + }, + "into": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "FIELDS_OPTIONS": { + "TERMINATED BY": [ + 1, + "expr" + ], + "OPTIONALLY": 2, + "ENCLOSED BY": [ + 3, + "expr" + ], + "ESCAPED BY": [ + 4, + "expr" + ] + }, + "LINES_OPTIONS": { + "STARTING BY": [ + 1, + "expr" + ], + "TERMINATED BY": [ + 2, + "expr" + ] + }, + "type": null, + "dest": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "x", + "column": null, + "expr": "x", + "alias": null, + "function": null, + "subquery": null + }, + "columns": null, + "values": null, + "fields_options": null, + "fields_keyword": null, + "lines_options": null + }, + "values": null, + "set": null, + "select": null, + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 5 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected token.", + { + "@type": "@8" + }, + 0 + ], + [ + "Unexpected beginning of statement.", + { + "@type": "@8" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseReplaceIntoErr.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseReplaceIntoErr.in new file mode 100644 index 0000000000..c723f95170 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseReplaceIntoErr.in @@ -0,0 +1,2 @@ +REPLACE INTO x INSERT + diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseReplaceIntoErr.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseReplaceIntoErr.out new file mode 100644 index 0000000000..348d1c5d42 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseReplaceIntoErr.out @@ -0,0 +1,531 @@ +{ + "query": "REPLACE INTO x INSERT\n\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "REPLACE INTO x INSERT\n\n", + "len": 23, + "last": 23, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "REPLACE", + "value": "REPLACE", + "keyword": "REPLACE", + "type": 1, + "flags": 35, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": 1, + "flags": 3, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "x", + "value": "x", + "keyword": "X", + "type": 1, + "flags": 33, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INSERT", + "value": "INSERT", + "keyword": "INSERT", + "type": 1, + "flags": 35, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 9, + "idx": 9 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "OPTIONS": { + "LOW_PRIORITY": 1, + "DELAYED": 1 + }, + "into": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "FIELDS_OPTIONS": { + "TERMINATED BY": [ + 1, + "expr" + ], + "OPTIONALLY": 2, + "ENCLOSED BY": [ + 3, + "expr" + ], + "ESCAPED BY": [ + 4, + "expr" + ] + }, + "LINES_OPTIONS": { + "STARTING BY": [ + 1, + "expr" + ], + "TERMINATED BY": [ + 2, + "expr" + ] + }, + "type": null, + "dest": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "x", + "column": null, + "expr": "x", + "alias": null, + "function": null, + "subquery": null + }, + "columns": null, + "values": null, + "fields_options": null, + "fields_keyword": null, + "lines_options": null + }, + "values": null, + "set": null, + "select": null, + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "OPTIONS": { + "LOW_PRIORITY": 1, + "DELAYED": 2, + "HIGH_PRIORITY": 3, + "IGNORE": 4 + }, + "into": null, + "values": null, + "set": null, + "select": null, + "onDuplicateSet": null, + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 6, + "last": 7 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected keyword.", + { + "@type": "@8" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseReplaceSelect.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseReplaceSelect.in new file mode 100644 index 0000000000..ed6f4063f5 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseReplaceSelect.in @@ -0,0 +1 @@ +REPLACE INTO `a` (`value`) SELECT value from `b` \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseReplaceSelect.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseReplaceSelect.out new file mode 100644 index 0000000000..ce69f26fff --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseReplaceSelect.out @@ -0,0 +1,801 @@ +{ + "query": "REPLACE INTO `a` (`value`) SELECT value from `b`", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "REPLACE INTO `a` (`value`) SELECT value from `b`", + "len": 49, + "last": 49, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "REPLACE", + "value": "REPLACE", + "keyword": "REPLACE", + "type": 1, + "flags": 35, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": 1, + "flags": 3, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`a`", + "value": "a", + "keyword": null, + "type": 8, + "flags": 2, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`value`", + "value": "value", + "keyword": null, + "type": 8, + "flags": 2, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "value", + "value": "value", + "keyword": "VALUE", + "type": 1, + "flags": 1, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "from", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`b`", + "value": "b", + "keyword": null, + "type": 8, + "flags": 2, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 18, + "idx": 18 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "OPTIONS": { + "LOW_PRIORITY": 1, + "DELAYED": 1 + }, + "into": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "FIELDS_OPTIONS": { + "TERMINATED BY": [ + 1, + "expr" + ], + "OPTIONALLY": 2, + "ENCLOSED BY": [ + 3, + "expr" + ], + "ESCAPED BY": [ + 4, + "expr" + ] + }, + "LINES_OPTIONS": { + "STARTING BY": [ + 1, + "expr" + ], + "TERMINATED BY": [ + 2, + "expr" + ] + }, + "type": null, + "dest": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "a", + "column": null, + "expr": "`a`", + "alias": null, + "function": null, + "subquery": null + }, + "columns": [ + "value" + ], + "values": null, + "fields_options": null, + "fields_keyword": null, + "lines_options": null + }, + "values": null, + "set": null, + "select": { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "value", + "expr": "value", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "b", + "column": null, + "expr": "`b`", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": null, + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 10, + "last": 16 + }, + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 16 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseReplaceSet.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseReplaceSet.in new file mode 100644 index 0000000000..d425fa2ab6 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseReplaceSet.in @@ -0,0 +1 @@ +REPLACE INTO `a` (`value`) SET value = '123' \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseReplaceSet.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseReplaceSet.out new file mode 100644 index 0000000000..b3ef726ef5 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseReplaceSet.out @@ -0,0 +1,590 @@ +{ + "query": "REPLACE INTO `a` (`value`) SET value = '123'", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "REPLACE INTO `a` (`value`) SET value = '123'", + "len": 44, + "last": 44, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "REPLACE", + "value": "REPLACE", + "keyword": "REPLACE", + "type": 1, + "flags": 35, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": 1, + "flags": 3, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`a`", + "value": "a", + "keyword": null, + "type": 8, + "flags": 2, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`value`", + "value": "value", + "keyword": null, + "type": 8, + "flags": 2, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": 1, + "flags": 11, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "value", + "value": "value", + "keyword": "VALUE", + "type": 1, + "flags": 1, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'123'", + "value": "123", + "keyword": null, + "type": 7, + "flags": 1, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 18, + "idx": 18 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "OPTIONS": { + "LOW_PRIORITY": 1, + "DELAYED": 1 + }, + "into": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "FIELDS_OPTIONS": { + "TERMINATED BY": [ + 1, + "expr" + ], + "OPTIONALLY": 2, + "ENCLOSED BY": [ + 3, + "expr" + ], + "ESCAPED BY": [ + 4, + "expr" + ] + }, + "LINES_OPTIONS": { + "STARTING BY": [ + 1, + "expr" + ], + "TERMINATED BY": [ + 2, + "expr" + ] + }, + "type": null, + "dest": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "a", + "column": null, + "expr": "`a`", + "alias": null, + "function": null, + "subquery": null + }, + "columns": [ + "value" + ], + "values": null, + "fields_options": null, + "fields_keyword": null, + "lines_options": null + }, + "values": null, + "set": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "column": "value", + "value": "'123'" + } + ], + "select": null, + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 16 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseReplaceValues.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseReplaceValues.in new file mode 100644 index 0000000000..24f6c7e57a --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseReplaceValues.in @@ -0,0 +1 @@ +REPLACE INTO `a` (`value`) VALUES ('123'), ('123') \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseReplaceValues.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseReplaceValues.out new file mode 100644 index 0000000000..a00e842645 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseReplaceValues.out @@ -0,0 +1,630 @@ +{ + "query": "REPLACE INTO `a` (`value`) VALUES ('123'), ('123')", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "REPLACE INTO `a` (`value`) VALUES ('123'), ('123')", + "len": 50, + "last": 50, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "REPLACE", + "value": "REPLACE", + "keyword": "REPLACE", + "type": 1, + "flags": 35, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": 1, + "flags": 3, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`a`", + "value": "a", + "keyword": null, + "type": 8, + "flags": 2, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`value`", + "value": "value", + "keyword": null, + "type": 8, + "flags": 2, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "VALUES", + "value": "VALUES", + "keyword": "VALUES", + "type": 1, + "flags": 35, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'123'", + "value": "123", + "keyword": null, + "type": 7, + "flags": 1, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'123'", + "value": "123", + "keyword": null, + "type": 7, + "flags": 1, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 21, + "idx": 21 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "OPTIONS": { + "LOW_PRIORITY": 1, + "DELAYED": 1 + }, + "into": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "FIELDS_OPTIONS": { + "TERMINATED BY": [ + 1, + "expr" + ], + "OPTIONALLY": 2, + "ENCLOSED BY": [ + 3, + "expr" + ], + "ESCAPED BY": [ + 4, + "expr" + ] + }, + "LINES_OPTIONS": { + "STARTING BY": [ + 1, + "expr" + ], + "TERMINATED BY": [ + 2, + "expr" + ] + }, + "type": null, + "dest": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "a", + "column": null, + "expr": "`a`", + "alias": null, + "function": null, + "subquery": null + }, + "columns": [ + "value" + ], + "values": null, + "fields_options": null, + "fields_keyword": null, + "lines_options": null + }, + "values": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "raw": [ + "'123'" + ], + "values": [ + "123" + ] + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "raw": [ + "'123'" + ], + "values": [ + "123" + ] + } + ], + "set": null, + "select": null, + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 19 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseRestore.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseRestore.in new file mode 100644 index 0000000000..27f9844fe0 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseRestore.in @@ -0,0 +1 @@ +RESTORE TABLE my_table FROM "/path/to/backup/directory" \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseRestore.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseRestore.out new file mode 100644 index 0000000000..b42e9a5827 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseRestore.out @@ -0,0 +1,486 @@ +{ + "query": "RESTORE TABLE my_table FROM \"\/path\/to\/backup\/directory\"", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "RESTORE TABLE my_table FROM \"\/path\/to\/backup\/directory\"", + "len": 55, + "last": 55, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "RESTORE", + "value": "RESTORE", + "keyword": "RESTORE", + "type": 1, + "flags": 1, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLE", + "value": "TABLE", + "keyword": "TABLE", + "type": 1, + "flags": 3, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "my_table", + "value": "my_table", + "keyword": null, + "type": 0, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"\/path\/to\/backup\/directory\"", + "value": "\/path\/to\/backup\/directory", + "keyword": null, + "type": 7, + "flags": 2, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 10, + "idx": 10 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "OPTIONS": { + "TABLE": 1, + "FROM": [ + 2, + "var" + ] + }, + "tables": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "my_table", + "column": null, + "expr": "my_table", + "alias": null, + "function": null, + "subquery": null + } + ], + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [ + "TABLE", + { + "name": "FROM", + "equals": false, + "expr": "\"\/path\/to\/backup\/directory\"", + "value": "\/path\/to\/backup\/directory" + } + ] + }, + "first": 0, + "last": 8 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelect.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelect.in new file mode 100644 index 0000000000..e4d786e9cc --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelect.in @@ -0,0 +1,14 @@ +SELECT ALL MAX_STATEMENT_TIME = 10 + 1 + 2 AS result, + @idx, + id, + test.`users`.username AS `name` +FROM + `test`.users, posts + PARTITION (p1, p2) +WHERE + id > 0 +ORDER BY + username DESC, + id +LIMIT 3 OFFSET 2; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelect.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelect.out new file mode 100644 index 0000000000..1595e1f291 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelect.out @@ -0,0 +1,1498 @@ +{ + "query": "SELECT ALL MAX_STATEMENT_TIME = 10\n 1 + 2 AS result,\n @idx,\n id,\n test.`users`.username AS `name`\nFROM\n `test`.users, posts\n PARTITION (p1, p2)\nWHERE\n id > 0\nORDER BY\n username DESC,\n id\nLIMIT 3 OFFSET 2;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SELECT ALL MAX_STATEMENT_TIME = 10\n 1 + 2 AS result,\n @idx,\n id,\n test.`users`.username AS `name`\nFROM\n `test`.users, posts\n PARTITION (p1, p2)\nWHERE\n id > 0\nORDER BY\n username DESC,\n id\nLIMIT 3 OFFSET 2;", + "len": 231, + "last": 231, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALL", + "value": "ALL", + "keyword": "ALL", + "type": 1, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "MAX_STATEMENT_TIME", + "value": "MAX_STATEMENT_TIME", + "keyword": "MAX_STATEMENT_TIME", + "type": 1, + "flags": 1, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "10", + "value": 10, + "keyword": null, + "type": 6, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "+", + "value": "+", + "keyword": null, + "type": 2, + "flags": 1, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": 6, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "result", + "value": "result", + "keyword": null, + "type": 0, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@idx", + "value": "idx", + "keyword": null, + "type": 8, + "flags": 1, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "test", + "value": "test", + "keyword": null, + "type": 0, + "flags": 0, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`users`", + "value": "users", + "keyword": null, + "type": 8, + "flags": 2, + "position": 83 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 90 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "username", + "value": "username", + "keyword": null, + "type": 0, + "flags": 0, + "position": 91 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 102 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`name`", + "value": "name", + "keyword": null, + "type": 8, + "flags": 2, + "position": 103 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 109 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 110 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 114 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`test`", + "value": "test", + "keyword": null, + "type": 8, + "flags": 2, + "position": 119 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 125 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "users", + "value": "users", + "keyword": null, + "type": 0, + "flags": 0, + "position": 126 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 131 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 132 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "posts", + "value": "posts", + "keyword": null, + "type": 0, + "flags": 0, + "position": 133 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 138 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": 1, + "flags": 3, + "position": 143 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 152 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 153 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p1", + "value": "p1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 154 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 156 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 157 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p2", + "value": "p2", + "keyword": null, + "type": 0, + "flags": 0, + "position": 158 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 160 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 161 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 162 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 167 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 172 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 174 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ">", + "value": ">", + "keyword": null, + "type": 2, + "flags": 2, + "position": 175 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 176 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "0", + "value": 0, + "keyword": null, + "type": 6, + "flags": 0, + "position": 177 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 178 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ORDER BY", + "value": "ORDER BY", + "keyword": "ORDER BY", + "type": 1, + "flags": 7, + "position": 179 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 187 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "username", + "value": "username", + "keyword": null, + "type": 0, + "flags": 0, + "position": 192 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 200 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DESC", + "value": "DESC", + "keyword": "DESC", + "type": 1, + "flags": 3, + "position": 201 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 205 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 206 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 211 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 213 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LIMIT", + "value": "LIMIT", + "keyword": "LIMIT", + "type": 1, + "flags": 3, + "position": 214 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 219 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3", + "value": 3, + "keyword": null, + "type": 6, + "flags": 0, + "position": 220 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 221 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "OFFSET", + "value": "OFFSET", + "keyword": "OFFSET", + "type": 1, + "flags": 1, + "position": 222 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 228 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": 6, + "flags": 0, + "position": 229 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 230 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 81, + "idx": 81 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "1 + 2", + "alias": "result", + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "@idx", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "id", + "expr": "id", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": "test", + "table": "users", + "column": "username", + "expr": "test.`users`.username", + "alias": "name", + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": "test", + "table": "users", + "column": null, + "expr": "`test`.users", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "posts", + "column": null, + "expr": "posts", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "raw": [ + "p1", + "p2" + ], + "values": [ + "p1", + "p2" + ] + }, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [ + "id" + ], + "isOperator": false, + "expr": "id > 0" + } + ], + "group": null, + "having": null, + "order": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "username", + "expr": "username", + "alias": null, + "function": null, + "subquery": null + }, + "type": "DESC" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "id", + "expr": "id", + "alias": null, + "function": null, + "subquery": null + }, + "type": "ASC" + } + ], + "limit": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "offset": 2, + "rowCount": 3 + }, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "ALL", + "3": { + "name": "MAX_STATEMENT_TIME", + "equals": true, + "expr": "10", + "value": "10" + } + } + }, + "first": 0, + "last": 78 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelect10.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelect10.in new file mode 100644 index 0000000000..61d863517c --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelect10.in @@ -0,0 +1 @@ +SELECT my_column FROM my_table WHERE BINARY(my_column) != BINARY(UPPER(my_column)) diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelect10.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelect10.out new file mode 100644 index 0000000000..d33cae8946 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelect10.out @@ -0,0 +1,835 @@ +{ + "query": "SELECT my_column FROM my_table WHERE BINARY(my_column) != BINARY(UPPER(my_column))\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SELECT my_column FROM my_table WHERE BINARY(my_column) != BINARY(UPPER(my_column))\n", + "len": 83, + "last": 83, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "my_column", + "value": "my_column", + "keyword": null, + "type": 0, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "my_table", + "value": "my_table", + "keyword": null, + "type": 0, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "BINARY", + "value": "BINARY", + "keyword": "BINARY", + "type": 1, + "flags": 43, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "my_column", + "value": "my_column", + "keyword": null, + "type": 0, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "!=", + "value": "!=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "BINARY", + "value": "BINARY", + "keyword": "BINARY", + "type": 1, + "flags": 43, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UPPER", + "value": "UPPER", + "keyword": "UPPER", + "type": 1, + "flags": 33, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "my_column", + "value": "my_column", + "keyword": null, + "type": 0, + "flags": 0, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 26, + "idx": 26 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "my_column", + "expr": "my_column", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "my_table", + "column": null, + "expr": "my_table", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [ + "my_column", + "UPPER" + ], + "isOperator": false, + "expr": "BINARY(my_column) != BINARY(UPPER(my_column))" + } + ], + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 24 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelect11.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelect11.in new file mode 100644 index 0000000000..99f01a8b64 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelect11.in @@ -0,0 +1 @@ +SELECT 1 AND NOT 1 diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelect11.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelect11.out new file mode 100644 index 0000000000..ee66d9a1f0 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelect11.out @@ -0,0 +1,638 @@ +{ + "query": "SELECT 1 AND NOT 1\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SELECT 1 AND NOT 1\n", + "len": 19, + "last": 19, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AND", + "value": "AND", + "keyword": "AND", + "type": 1, + "flags": 3, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT", + "value": "NOT", + "keyword": "NOT", + "type": 1, + "flags": 3, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 11, + "idx": 11 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "1 AND NOT 1", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [], + "index_hints": null, + "partition": null, + "where": null, + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 9 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelect2.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelect2.in new file mode 100644 index 0000000000..338e33c066 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelect2.in @@ -0,0 +1 @@ +SELECT (SELECT 'foo') bar, (SELECT 'baz') AS qux, a as b FROM tabl; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelect2.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelect2.out new file mode 100644 index 0000000000..dce1cf11c4 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelect2.out @@ -0,0 +1,906 @@ +{ + "query": "SELECT (SELECT 'foo') bar, (SELECT 'baz') AS qux, a as b FROM tabl;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SELECT (SELECT 'foo') bar, (SELECT 'baz') AS qux, a as b FROM tabl;", + "len": 67, + "last": 67, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'foo'", + "value": "foo", + "keyword": null, + "type": 7, + "flags": 1, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "bar", + "value": "bar", + "keyword": null, + "type": 0, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'baz'", + "value": "baz", + "keyword": null, + "type": 7, + "flags": 1, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "qux", + "value": "qux", + "keyword": null, + "type": 0, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": 0, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "b", + "value": "b", + "keyword": null, + "type": 0, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "tabl", + "value": "tabl", + "keyword": null, + "type": 0, + "flags": 0, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 33, + "idx": 33 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "(SELECT 'foo')", + "alias": "bar", + "function": null, + "subquery": "SELECT" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "(SELECT 'baz')", + "alias": "qux", + "function": null, + "subquery": "SELECT" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "a", + "expr": "a", + "alias": "b", + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "tabl", + "column": null, + "expr": "tabl", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": null, + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 30 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelect3.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelect3.in new file mode 100644 index 0000000000..f090cc571e --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelect3.in @@ -0,0 +1,3 @@ +SELECT left_tbl.* +FROM left_tbl LEFT JOIN right_tbl ON left_tbl.id = right_tbl.id +WHERE right_tbl.id IS NULL; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelect3.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelect3.out new file mode 100644 index 0000000000..e67c665d26 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelect3.out @@ -0,0 +1,1020 @@ +{ + "query": "SELECT left_tbl.*\nFROM left_tbl LEFT JOIN right_tbl ON left_tbl.id = right_tbl.id\nWHERE right_tbl.id IS NULL;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SELECT left_tbl.*\nFROM left_tbl LEFT JOIN right_tbl ON left_tbl.id = right_tbl.id\nWHERE right_tbl.id IS NULL;", + "len": 109, + "last": 109, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "left_tbl", + "value": "left_tbl", + "keyword": null, + "type": 0, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "left_tbl", + "value": "left_tbl", + "keyword": null, + "type": 0, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LEFT JOIN", + "value": "LEFT JOIN", + "keyword": "LEFT JOIN", + "type": 1, + "flags": 7, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "right_tbl", + "value": "right_tbl", + "keyword": null, + "type": 0, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON", + "value": "ON", + "keyword": "ON", + "type": 1, + "flags": 3, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "left_tbl", + "value": "left_tbl", + "keyword": null, + "type": 0, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "right_tbl", + "value": "right_tbl", + "keyword": null, + "type": 0, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "right_tbl", + "value": "right_tbl", + "keyword": null, + "type": 0, + "flags": 0, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 97 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IS", + "value": "IS", + "keyword": "IS", + "type": 1, + "flags": 3, + "position": 101 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 103 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NULL", + "value": "NULL", + "keyword": "NULL", + "type": 1, + "flags": 3, + "position": 104 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 37, + "idx": 37 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "left_tbl", + "column": null, + "expr": "left_tbl.*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "left_tbl", + "column": null, + "expr": "left_tbl", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [ + "right_tbl", + "id" + ], + "isOperator": false, + "expr": "right_tbl.id IS NULL" + } + ], + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "JOINS": { + "CROSS JOIN": "CROSS", + "FULL JOIN": "FULL", + "FULL OUTER JOIN": "FULL", + "INNER JOIN": "INNER", + "JOIN": "JOIN", + "LEFT JOIN": "LEFT", + "LEFT OUTER JOIN": "LEFT", + "RIGHT JOIN": "RIGHT", + "RIGHT OUTER JOIN": "RIGHT", + "NATURAL JOIN": "NATURAL", + "NATURAL LEFT JOIN": "NATURAL LEFT", + "NATURAL RIGHT JOIN": "NATURAL RIGHT", + "NATURAL LEFT OUTER JOIN": "NATURAL LEFT OUTER", + "NATURAL RIGHT OUTER JOIN": "NATURAL RIGHT OUTER", + "STRAIGHT_JOIN": "STRAIGHT" + }, + "type": "LEFT", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "right_tbl", + "column": null, + "expr": "right_tbl", + "alias": null, + "function": null, + "subquery": null + }, + "on": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [ + "left_tbl", + "id", + "right_tbl" + ], + "isOperator": false, + "expr": "left_tbl.id = right_tbl.id" + } + ], + "using": null + } + ], + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 34 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelect4.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelect4.in new file mode 100644 index 0000000000..a76e053969 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelect4.in @@ -0,0 +1,3 @@ +SELECT * + FROM test + WHERE RIGHT(name, 2) = 'AB'; diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelect4.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelect4.out new file mode 100644 index 0000000000..68fa8597d8 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelect4.out @@ -0,0 +1,817 @@ +{ + "query": "SELECT *\n FROM test\n WHERE RIGHT(name, 2) = 'AB';\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SELECT *\n FROM test\n WHERE RIGHT(name, 2) = 'AB';\n", + "len": 54, + "last": 54, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "test", + "value": "test", + "keyword": null, + "type": 0, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "RIGHT", + "value": "RIGHT", + "keyword": "RIGHT", + "type": 1, + "flags": 35, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": 1, + "flags": 1, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": 6, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'AB'", + "value": "AB", + "keyword": null, + "type": 7, + "flags": 1, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 24, + "idx": 24 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "test", + "column": null, + "expr": "test", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [ + "name", + "AB" + ], + "isOperator": false, + "expr": "RIGHT(name, 2) = 'AB'" + } + ], + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 20 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelect5.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelect5.in new file mode 100644 index 0000000000..15fec1d393 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelect5.in @@ -0,0 +1,4 @@ +SELECT c1, c2, c3 + /* Subquery in FROM list */ + FROM (SELECT C1, c2, c3 FROM test2) t1 + WHERE RIGHT(name, 2) = 'AB'; diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelect5.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelect5.out new file mode 100644 index 0000000000..c30ad8c28d --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelect5.out @@ -0,0 +1,1079 @@ +{ + "query": "SELECT c1, c2, c3\n \/* Subquery in FROM list *\/\n FROM (SELECT C1, c2, c3 FROM test2) t1\n WHERE RIGHT(name, 2) = 'AB';\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SELECT c1, c2, c3\n \/* Subquery in FROM list *\/\n FROM (SELECT C1, c2, c3 FROM test2) t1\n WHERE RIGHT(name, 2) = 'AB';\n", + "len": 123, + "last": 123, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "c1", + "value": "c1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "c2", + "value": "c2", + "keyword": null, + "type": 0, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "c3", + "value": "c3", + "keyword": null, + "type": 0, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* Subquery in FROM list *\/", + "value": "\/* Subquery in FROM list *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "C1", + "value": "C1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "c2", + "value": "c2", + "keyword": null, + "type": 0, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "c3", + "value": "c3", + "keyword": null, + "type": 0, + "flags": 0, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "test2", + "value": "test2", + "keyword": null, + "type": 0, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t1", + "value": "t1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 90 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "RIGHT", + "value": "RIGHT", + "keyword": "RIGHT", + "type": 1, + "flags": 35, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 105 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": 1, + "flags": 1, + "position": 106 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 110 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 111 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": 6, + "flags": 0, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 114 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 115 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 116 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'AB'", + "value": "AB", + "keyword": null, + "type": 7, + "flags": 1, + "position": 117 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 122 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 48, + "idx": 48 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "c1", + "expr": "c1", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "c2", + "expr": "c2", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "c3", + "expr": "c3", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "(SELECT C1, c2, c3 FROM test2)", + "alias": "t1", + "function": null, + "subquery": "SELECT" + } + ], + "index_hints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [ + "name", + "AB" + ], + "isOperator": false, + "expr": "RIGHT(name, 2) = 'AB'" + } + ], + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 44 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelect6.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelect6.in new file mode 100644 index 0000000000..4330fc67d8 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelect6.in @@ -0,0 +1,2 @@ +SELECT * FROM t1 LEFT JOIN (t2, t3, t4) + ON (t2.a=t1.a AND t3.b=t1.b AND t4.c=t1.c) diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelect6.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelect6.out new file mode 100644 index 0000000000..cc9cfe8082 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelect6.out @@ -0,0 +1,1270 @@ +{ + "query": "SELECT * FROM t1 LEFT JOIN (t2, t3, t4)\n ON (t2.a=t1.a AND t3.b=t1.b AND t4.c=t1.c)\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SELECT * FROM t1 LEFT JOIN (t2, t3, t4)\n ON (t2.a=t1.a AND t3.b=t1.b AND t4.c=t1.c)\n", + "len": 100, + "last": 100, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t1", + "value": "t1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LEFT JOIN", + "value": "LEFT JOIN", + "keyword": "LEFT JOIN", + "type": 1, + "flags": 7, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t2", + "value": "t2", + "keyword": null, + "type": 0, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t3", + "value": "t3", + "keyword": null, + "type": 0, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t4", + "value": "t4", + "keyword": null, + "type": 0, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON", + "value": "ON", + "keyword": "ON", + "type": 1, + "flags": 3, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t2", + "value": "t2", + "keyword": null, + "type": 0, + "flags": 0, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": 0, + "flags": 0, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t1", + "value": "t1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": 0, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AND", + "value": "AND", + "keyword": "AND", + "type": 1, + "flags": 3, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t3", + "value": "t3", + "keyword": null, + "type": 0, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "b", + "value": "b", + "keyword": null, + "type": 0, + "flags": 0, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t1", + "value": "t1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "b", + "value": "b", + "keyword": null, + "type": 0, + "flags": 0, + "position": 83 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AND", + "value": "AND", + "keyword": "AND", + "type": 1, + "flags": 3, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t4", + "value": "t4", + "keyword": null, + "type": 0, + "flags": 0, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 91 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "c", + "value": "c", + "keyword": null, + "type": 0, + "flags": 0, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t1", + "value": "t1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "c", + "value": "c", + "keyword": null, + "type": 0, + "flags": 0, + "position": 97 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 53, + "idx": 53 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "t1", + "column": null, + "expr": "t1", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": null, + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "JOINS": { + "CROSS JOIN": "CROSS", + "FULL JOIN": "FULL", + "FULL OUTER JOIN": "FULL", + "INNER JOIN": "INNER", + "JOIN": "JOIN", + "LEFT JOIN": "LEFT", + "LEFT OUTER JOIN": "LEFT", + "RIGHT JOIN": "RIGHT", + "RIGHT OUTER JOIN": "RIGHT", + "NATURAL JOIN": "NATURAL", + "NATURAL LEFT JOIN": "NATURAL LEFT", + "NATURAL RIGHT JOIN": "NATURAL RIGHT", + "NATURAL LEFT OUTER JOIN": "NATURAL LEFT OUTER", + "NATURAL RIGHT OUTER JOIN": "NATURAL RIGHT OUTER", + "STRAIGHT_JOIN": "STRAIGHT" + }, + "type": "LEFT", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "(t2, t3, t4)", + "alias": null, + "function": null, + "subquery": null + }, + "on": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [ + "t2", + "a", + "t1" + ], + "isOperator": false, + "expr": "(t2.a=t1.a" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [], + "isOperator": true, + "expr": "AND" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [ + "t3", + "b", + "t1" + ], + "isOperator": false, + "expr": "t3.b=t1.b" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [], + "isOperator": true, + "expr": "AND" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [ + "t4", + "c", + "t1" + ], + "isOperator": false, + "expr": "t4.c=t1.c)" + } + ], + "using": null + } + ], + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 51 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelect7.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelect7.in new file mode 100644 index 0000000000..3330515ade --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelect7.in @@ -0,0 +1,2 @@ +SELECT * FROM t1 LEFT JOIN (t2 CROSS JOIN t3 CROSS JOIN t4) + ON (t2.a=t1.a AND t3.b=t1.b AND t4.c=t1.c) \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelect7.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelect7.out new file mode 100644 index 0000000000..904c05cbc8 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelect7.out @@ -0,0 +1,1279 @@ +{ + "query": "SELECT * FROM t1 LEFT JOIN (t2 CROSS JOIN t3 CROSS JOIN t4)\n ON (t2.a=t1.a AND t3.b=t1.b AND t4.c=t1.c)", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SELECT * FROM t1 LEFT JOIN (t2 CROSS JOIN t3 CROSS JOIN t4)\n ON (t2.a=t1.a AND t3.b=t1.b AND t4.c=t1.c)", + "len": 119, + "last": 119, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t1", + "value": "t1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LEFT JOIN", + "value": "LEFT JOIN", + "keyword": "LEFT JOIN", + "type": 1, + "flags": 7, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t2", + "value": "t2", + "keyword": null, + "type": 0, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CROSS JOIN", + "value": "CROSS JOIN", + "keyword": "CROSS JOIN", + "type": 1, + "flags": 7, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t3", + "value": "t3", + "keyword": null, + "type": 0, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CROSS JOIN", + "value": "CROSS JOIN", + "keyword": "CROSS JOIN", + "type": 1, + "flags": 7, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t4", + "value": "t4", + "keyword": null, + "type": 0, + "flags": 0, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON", + "value": "ON", + "keyword": "ON", + "type": 1, + "flags": 3, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t2", + "value": "t2", + "keyword": null, + "type": 0, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 83 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": 0, + "flags": 0, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t1", + "value": "t1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": 0, + "flags": 0, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 90 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AND", + "value": "AND", + "keyword": "AND", + "type": 1, + "flags": 3, + "position": 91 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t3", + "value": "t3", + "keyword": null, + "type": 0, + "flags": 0, + "position": 95 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 97 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "b", + "value": "b", + "keyword": null, + "type": 0, + "flags": 0, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t1", + "value": "t1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 102 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "b", + "value": "b", + "keyword": null, + "type": 0, + "flags": 0, + "position": 103 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 104 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AND", + "value": "AND", + "keyword": "AND", + "type": 1, + "flags": 3, + "position": 105 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t4", + "value": "t4", + "keyword": null, + "type": 0, + "flags": 0, + "position": 109 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 111 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "c", + "value": "c", + "keyword": null, + "type": 0, + "flags": 0, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t1", + "value": "t1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 114 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 116 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "c", + "value": "c", + "keyword": null, + "type": 0, + "flags": 0, + "position": 117 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 118 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 54, + "idx": 54 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "t1", + "column": null, + "expr": "t1", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": null, + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "JOINS": { + "CROSS JOIN": "CROSS", + "FULL JOIN": "FULL", + "FULL OUTER JOIN": "FULL", + "INNER JOIN": "INNER", + "JOIN": "JOIN", + "LEFT JOIN": "LEFT", + "LEFT OUTER JOIN": "LEFT", + "RIGHT JOIN": "RIGHT", + "RIGHT OUTER JOIN": "RIGHT", + "NATURAL JOIN": "NATURAL", + "NATURAL LEFT JOIN": "NATURAL LEFT", + "NATURAL RIGHT JOIN": "NATURAL RIGHT", + "NATURAL LEFT OUTER JOIN": "NATURAL LEFT OUTER", + "NATURAL RIGHT OUTER JOIN": "NATURAL RIGHT OUTER", + "STRAIGHT_JOIN": "STRAIGHT" + }, + "type": "LEFT", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "(t2 CROSS JOIN t3 CROSS JOIN t4)", + "alias": null, + "function": null, + "subquery": null + }, + "on": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [ + "t2", + "a", + "t1" + ], + "isOperator": false, + "expr": "(t2.a=t1.a" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [], + "isOperator": true, + "expr": "AND" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [ + "t3", + "b", + "t1" + ], + "isOperator": false, + "expr": "t3.b=t1.b" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [], + "isOperator": true, + "expr": "AND" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [ + "t4", + "c", + "t1" + ], + "isOperator": false, + "expr": "t4.c=t1.c)" + } + ], + "using": null + } + ], + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 52 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelect8.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelect8.in new file mode 100644 index 0000000000..88e9dcb170 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelect8.in @@ -0,0 +1 @@ +select * FROM (select Pop FROM MyTable) p join tadaa t where p.x=t.y \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelect8.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelect8.out new file mode 100644 index 0000000000..2e0c4e6497 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelect8.out @@ -0,0 +1,956 @@ +{ + "query": "select * FROM (select Pop FROM MyTable) p join tadaa t where p.x=t.y", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "select * FROM (select Pop FROM MyTable) p join tadaa t where p.x=t.y", + "len": 68, + "last": 68, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "select", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "select", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "Pop", + "value": "Pop", + "keyword": null, + "type": 0, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "MyTable", + "value": "MyTable", + "keyword": null, + "type": 0, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p", + "value": "p", + "keyword": null, + "type": 0, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "join", + "value": "JOIN", + "keyword": "JOIN", + "type": 1, + "flags": 3, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "tadaa", + "value": "tadaa", + "keyword": null, + "type": 0, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t", + "value": "t", + "keyword": null, + "type": 0, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "where", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p", + "value": "p", + "keyword": null, + "type": 0, + "flags": 0, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "x", + "value": "x", + "keyword": "X", + "type": 0, + "flags": 0, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t", + "value": "t", + "keyword": null, + "type": 0, + "flags": 0, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "y", + "value": "y", + "keyword": "Y", + "type": 0, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 34, + "idx": 34 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "(select Pop FROM MyTable)", + "alias": "p", + "function": null, + "subquery": "SELECT" + } + ], + "index_hints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [ + "p", + "x", + "t", + "y" + ], + "isOperator": false, + "expr": "p.x=t.y" + } + ], + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "JOINS": { + "CROSS JOIN": "CROSS", + "FULL JOIN": "FULL", + "FULL OUTER JOIN": "FULL", + "INNER JOIN": "INNER", + "JOIN": "JOIN", + "LEFT JOIN": "LEFT", + "LEFT OUTER JOIN": "LEFT", + "RIGHT JOIN": "RIGHT", + "RIGHT OUTER JOIN": "RIGHT", + "NATURAL JOIN": "NATURAL", + "NATURAL LEFT JOIN": "NATURAL LEFT", + "NATURAL RIGHT JOIN": "NATURAL RIGHT", + "NATURAL LEFT OUTER JOIN": "NATURAL LEFT OUTER", + "NATURAL RIGHT OUTER JOIN": "NATURAL RIGHT OUTER", + "STRAIGHT_JOIN": "STRAIGHT" + }, + "type": "JOIN", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "tadaa", + "column": null, + "expr": "tadaa", + "alias": "t", + "function": null, + "subquery": null + }, + "on": null, + "using": null + } + ], + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 32 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelect9.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelect9.in new file mode 100644 index 0000000000..5717fe4b83 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelect9.in @@ -0,0 +1,4 @@ +SELECT casein_pipe, email_cp, name_first_cp, name_last_cp, purpose_pipe +FROM (tbl_comp_person INNER JOIN `tbl_pipelist` ON tbl_comp_person.IDp = tbl_pipelist.IDp) +WHERE casein_pipe > '2016-03-01' AND `campaign_id_pipe` = 24569 AND `weeksonlist_pipe` = 1 +ORDER BY `tbl_pipelist`.`casein_pipe` ASC \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelect9.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelect9.out new file mode 100644 index 0000000000..000772e93e --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelect9.out @@ -0,0 +1,1491 @@ +{ + "query": "SELECT casein_pipe, email_cp, name_first_cp, name_last_cp, purpose_pipe\nFROM (tbl_comp_person INNER JOIN `tbl_pipelist` ON tbl_comp_person.IDp = tbl_pipelist.IDp)\nWHERE casein_pipe > '2016-03-01' AND `campaign_id_pipe` = 24569 AND `weeksonlist_pipe` = 1\nORDER BY `tbl_pipelist`.`casein_pipe` ASC", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SELECT casein_pipe, email_cp, name_first_cp, name_last_cp, purpose_pipe\nFROM (tbl_comp_person INNER JOIN `tbl_pipelist` ON tbl_comp_person.IDp = tbl_pipelist.IDp)\nWHERE casein_pipe > '2016-03-01' AND `campaign_id_pipe` = 24569 AND `weeksonlist_pipe` = 1\nORDER BY `tbl_pipelist`.`casein_pipe` ASC", + "len": 296, + "last": 296, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "casein_pipe", + "value": "casein_pipe", + "keyword": null, + "type": 0, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "email_cp", + "value": "email_cp", + "keyword": null, + "type": 0, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name_first_cp", + "value": "name_first_cp", + "keyword": null, + "type": 0, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name_last_cp", + "value": "name_last_cp", + "keyword": null, + "type": 0, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "purpose_pipe", + "value": "purpose_pipe", + "keyword": null, + "type": 0, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "tbl_comp_person", + "value": "tbl_comp_person", + "keyword": null, + "type": 0, + "flags": 0, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INNER JOIN", + "value": "INNER JOIN", + "keyword": "INNER JOIN", + "type": 1, + "flags": 7, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 104 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`tbl_pipelist`", + "value": "tbl_pipelist", + "keyword": null, + "type": 8, + "flags": 2, + "position": 105 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 119 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON", + "value": "ON", + "keyword": "ON", + "type": 1, + "flags": 3, + "position": 120 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 122 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "tbl_comp_person", + "value": "tbl_comp_person", + "keyword": null, + "type": 0, + "flags": 0, + "position": 123 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 138 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IDp", + "value": "IDp", + "keyword": null, + "type": 0, + "flags": 0, + "position": 139 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 142 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 143 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 144 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "tbl_pipelist", + "value": "tbl_pipelist", + "keyword": null, + "type": 0, + "flags": 0, + "position": 145 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 157 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IDp", + "value": "IDp", + "keyword": null, + "type": 0, + "flags": 0, + "position": 158 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 161 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 162 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 163 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 168 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "casein_pipe", + "value": "casein_pipe", + "keyword": null, + "type": 0, + "flags": 0, + "position": 169 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 180 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ">", + "value": ">", + "keyword": null, + "type": 2, + "flags": 2, + "position": 181 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 182 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'2016-03-01'", + "value": "2016-03-01", + "keyword": null, + "type": 7, + "flags": 1, + "position": 183 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 195 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AND", + "value": "AND", + "keyword": "AND", + "type": 1, + "flags": 3, + "position": 196 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 199 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`campaign_id_pipe`", + "value": "campaign_id_pipe", + "keyword": null, + "type": 8, + "flags": 2, + "position": 201 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 219 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 220 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 221 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "24569", + "value": 24569, + "keyword": null, + "type": 6, + "flags": 0, + "position": 222 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 227 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AND", + "value": "AND", + "keyword": "AND", + "type": 1, + "flags": 3, + "position": 228 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 231 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`weeksonlist_pipe`", + "value": "weeksonlist_pipe", + "keyword": null, + "type": 8, + "flags": 2, + "position": 232 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 250 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 251 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 252 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 253 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 254 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ORDER BY", + "value": "ORDER BY", + "keyword": "ORDER BY", + "type": 1, + "flags": 7, + "position": 255 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 263 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`tbl_pipelist`", + "value": "tbl_pipelist", + "keyword": null, + "type": 8, + "flags": 2, + "position": 264 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 278 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`casein_pipe`", + "value": "casein_pipe", + "keyword": null, + "type": 8, + "flags": 2, + "position": 279 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 292 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ASC", + "value": "ASC", + "keyword": "ASC", + "type": 1, + "flags": 3, + "position": 293 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 70, + "idx": 70 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "casein_pipe", + "expr": "casein_pipe", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "email_cp", + "expr": "email_cp", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "name_first_cp", + "expr": "name_first_cp", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "name_last_cp", + "expr": "name_last_cp", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "purpose_pipe", + "expr": "purpose_pipe", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "(tbl_comp_person INNER JOIN `tbl_pipelist` ON tbl_comp_person.IDp = tbl_pipelist.IDp)", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [ + "casein_pipe", + "2016-03-01" + ], + "isOperator": false, + "expr": "casein_pipe > '2016-03-01'" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [], + "isOperator": true, + "expr": "AND" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [ + "campaign_id_pipe" + ], + "isOperator": false, + "expr": "`campaign_id_pipe` = 24569" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [], + "isOperator": true, + "expr": "AND" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [ + "weeksonlist_pipe" + ], + "isOperator": false, + "expr": "`weeksonlist_pipe` = 1" + } + ], + "group": null, + "having": null, + "order": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "tbl_pipelist", + "column": "casein_pipe", + "expr": "`tbl_pipelist`.`casein_pipe`", + "alias": null, + "function": null, + "subquery": null + }, + "type": "ASC" + } + ], + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 68 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCase1.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCase1.in new file mode 100644 index 0000000000..8a9fbf83b2 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCase1.in @@ -0,0 +1,2 @@ +select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name, +case 1 when 1 then "Some" else "Other" end FROM a; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCase1.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCase1.out new file mode 100644 index 0000000000..67c8e83dd3 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCase1.out @@ -0,0 +1,1115 @@ +{ + "query": "select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name,\ncase 1 when 1 then \"Some\" else \"Other\" end FROM a;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name,\ncase 1 when 1 then \"Some\" else \"Other\" end FROM a;", + "len": 132, + "last": 132, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "select", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": 1, + "flags": 1, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "mysql", + "value": "mysql", + "keyword": null, + "type": 0, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category", + "value": "help_category", + "keyword": null, + "type": 0, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category_id", + "value": "help_category_id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": 1, + "flags": 1, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "case", + "value": "CASE", + "keyword": "CASE", + "type": 1, + "flags": 3, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "when", + "value": "WHEN", + "keyword": "WHEN", + "type": 1, + "flags": 3, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 95 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "then", + "value": "THEN", + "keyword": "THEN", + "type": 1, + "flags": 3, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Some\"", + "value": "Some", + "keyword": null, + "type": 7, + "flags": 2, + "position": 101 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "else", + "value": "ELSE", + "keyword": "ELSE", + "type": 1, + "flags": 3, + "position": 108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Other\"", + "value": "Other", + "keyword": null, + "type": 7, + "flags": 2, + "position": 113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 120 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "end", + "value": "end", + "keyword": "END", + "type": 1, + "flags": 1, + "position": 121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 124 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 125 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 129 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": 0, + "flags": 0, + "position": 130 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 131 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 50, + "idx": 50 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "(SELECT name FROM mysql.help_category WHERE help_category_id = 1)", + "alias": "name", + "function": null, + "subquery": "SELECT" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CaseExpression", + "value": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "1", + "alias": null, + "function": null, + "subquery": null + }, + "conditions": [], + "results": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "Some", + "expr": "\"Some\"", + "alias": null, + "function": null, + "subquery": null + } + ], + "compare_values": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "1", + "alias": null, + "function": null, + "subquery": null + } + ], + "else_result": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "Other", + "expr": "\"Other\"", + "alias": null, + "function": null, + "subquery": null + }, + "alias": null, + "expr": "CASE 1 WHEN 1 THEN \"Some\" ELSE \"Other\" END" + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "a", + "column": null, + "expr": "a", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": null, + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 47 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCase2.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCase2.in new file mode 100644 index 0000000000..39af441cf4 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCase2.in @@ -0,0 +1,2 @@ +select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name, +case /* */ when 1=1 then "Some" else "Other" end FROM a; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCase2.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCase2.out new file mode 100644 index 0000000000..48a1fba79f --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCase2.out @@ -0,0 +1,1124 @@ +{ + "query": "select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name,\ncase \/* *\/ when 1=1 then \"Some\" else \"Other\" end FROM a;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name,\ncase \/* *\/ when 1=1 then \"Some\" else \"Other\" end FROM a;", + "len": 138, + "last": 138, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "select", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": 1, + "flags": 1, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "mysql", + "value": "mysql", + "keyword": null, + "type": 0, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category", + "value": "help_category", + "keyword": null, + "type": 0, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category_id", + "value": "help_category_id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": 1, + "flags": 1, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "case", + "value": "CASE", + "keyword": "CASE", + "type": 1, + "flags": 3, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* *\/", + "value": "\/* *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "when", + "value": "WHEN", + "keyword": "WHEN", + "type": 1, + "flags": 3, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 97 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 101 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "then", + "value": "THEN", + "keyword": "THEN", + "type": 1, + "flags": 3, + "position": 102 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 106 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Some\"", + "value": "Some", + "keyword": null, + "type": 7, + "flags": 2, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "else", + "value": "ELSE", + "keyword": "ELSE", + "type": 1, + "flags": 3, + "position": 114 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 118 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Other\"", + "value": "Other", + "keyword": null, + "type": 7, + "flags": 2, + "position": 119 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 126 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "end", + "value": "end", + "keyword": "END", + "type": 1, + "flags": 1, + "position": 127 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 130 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 131 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 135 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": 0, + "flags": 0, + "position": 136 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 137 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 52, + "idx": 52 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "(SELECT name FROM mysql.help_category WHERE help_category_id = 1)", + "alias": "name", + "function": null, + "subquery": "SELECT" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CaseExpression", + "value": null, + "conditions": [ + [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [], + "isOperator": false, + "expr": "1=1" + } + ] + ], + "results": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "Some", + "expr": "\"Some\"", + "alias": null, + "function": null, + "subquery": null + } + ], + "compare_values": [], + "else_result": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "Other", + "expr": "\"Other\"", + "alias": null, + "function": null, + "subquery": null + }, + "alias": null, + "expr": "CASE WHEN 1=1 THEN \"Some\" ELSE \"Other\" END" + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "a", + "column": null, + "expr": "a", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": null, + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 49 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCase3.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCase3.in new file mode 100644 index 0000000000..6e2c04b436 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCase3.in @@ -0,0 +1,2 @@ +select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name, +case /* */ when 1=1 then "Some" when 2=1 then "Other" end FROM a; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCase3.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCase3.out new file mode 100644 index 0000000000..9663e5e2f4 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCase3.out @@ -0,0 +1,1215 @@ +{ + "query": "select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name,\ncase \/* *\/ when 1=1 then \"Some\" when 2=1 then \"Other\" end FROM a;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name,\ncase \/* *\/ when 1=1 then \"Some\" when 2=1 then \"Other\" end FROM a;", + "len": 147, + "last": 147, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "select", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": 1, + "flags": 1, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "mysql", + "value": "mysql", + "keyword": null, + "type": 0, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category", + "value": "help_category", + "keyword": null, + "type": 0, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category_id", + "value": "help_category_id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": 1, + "flags": 1, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "case", + "value": "CASE", + "keyword": "CASE", + "type": 1, + "flags": 3, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* *\/", + "value": "\/* *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "when", + "value": "WHEN", + "keyword": "WHEN", + "type": 1, + "flags": 3, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 97 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 101 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "then", + "value": "THEN", + "keyword": "THEN", + "type": 1, + "flags": 3, + "position": 102 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 106 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Some\"", + "value": "Some", + "keyword": null, + "type": 7, + "flags": 2, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "when", + "value": "WHEN", + "keyword": "WHEN", + "type": 1, + "flags": 3, + "position": 114 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 118 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": 6, + "flags": 0, + "position": 119 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 120 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 122 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "then", + "value": "THEN", + "keyword": "THEN", + "type": 1, + "flags": 3, + "position": 123 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 127 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Other\"", + "value": "Other", + "keyword": null, + "type": 7, + "flags": 2, + "position": 128 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 135 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "end", + "value": "end", + "keyword": "END", + "type": 1, + "flags": 1, + "position": 136 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 139 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 140 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 144 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": 0, + "flags": 0, + "position": 145 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 146 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 58, + "idx": 58 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "(SELECT name FROM mysql.help_category WHERE help_category_id = 1)", + "alias": "name", + "function": null, + "subquery": "SELECT" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CaseExpression", + "value": null, + "conditions": [ + [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [], + "isOperator": false, + "expr": "1=1" + } + ], + [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [], + "isOperator": false, + "expr": "2=1" + } + ] + ], + "results": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "Some", + "expr": "\"Some\"", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "Other", + "expr": "\"Other\"", + "alias": null, + "function": null, + "subquery": null + } + ], + "compare_values": [], + "else_result": null, + "alias": null, + "expr": "CASE WHEN 1=1 THEN \"Some\" WHEN 2=1 THEN \"Other\" END" + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "a", + "column": null, + "expr": "a", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": null, + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 55 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCase4.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCase4.in new file mode 100644 index 0000000000..26fab1904c --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCase4.in @@ -0,0 +1,2 @@ +select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name, +case 1 /* */ when 1 then "Some" when 2 then "Other" end FROM a; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCase4.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCase4.out new file mode 100644 index 0000000000..46c0fc181a --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCase4.out @@ -0,0 +1,1193 @@ +{ + "query": "select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name,\ncase 1 \/* *\/ when 1 then \"Some\" when 2 then \"Other\" end FROM a;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name,\ncase 1 \/* *\/ when 1 then \"Some\" when 2 then \"Other\" end FROM a;", + "len": 145, + "last": 145, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "select", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": 1, + "flags": 1, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "mysql", + "value": "mysql", + "keyword": null, + "type": 0, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category", + "value": "help_category", + "keyword": null, + "type": 0, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category_id", + "value": "help_category_id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": 1, + "flags": 1, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "case", + "value": "CASE", + "keyword": "CASE", + "type": 1, + "flags": 3, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* *\/", + "value": "\/* *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "when", + "value": "WHEN", + "keyword": "WHEN", + "type": 1, + "flags": 3, + "position": 95 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 101 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "then", + "value": "THEN", + "keyword": "THEN", + "type": 1, + "flags": 3, + "position": 102 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 106 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Some\"", + "value": "Some", + "keyword": null, + "type": 7, + "flags": 2, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "when", + "value": "WHEN", + "keyword": "WHEN", + "type": 1, + "flags": 3, + "position": 114 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 118 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": 6, + "flags": 0, + "position": 119 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 120 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "then", + "value": "THEN", + "keyword": "THEN", + "type": 1, + "flags": 3, + "position": 121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 125 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Other\"", + "value": "Other", + "keyword": null, + "type": 7, + "flags": 2, + "position": 126 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 133 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "end", + "value": "end", + "keyword": "END", + "type": 1, + "flags": 1, + "position": 134 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 137 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 138 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 142 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": 0, + "flags": 0, + "position": 143 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 144 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 56, + "idx": 56 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "(SELECT name FROM mysql.help_category WHERE help_category_id = 1)", + "alias": "name", + "function": null, + "subquery": "SELECT" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CaseExpression", + "value": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "1 \/* *\/", + "alias": null, + "function": null, + "subquery": null + }, + "conditions": [], + "results": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "Some", + "expr": "\"Some\"", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "Other", + "expr": "\"Other\"", + "alias": null, + "function": null, + "subquery": null + } + ], + "compare_values": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "1", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "2", + "alias": null, + "function": null, + "subquery": null + } + ], + "else_result": null, + "alias": null, + "expr": "CASE 1 \/* *\/ WHEN 1 THEN \"Some\" WHEN 2 THEN \"Other\" END" + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "a", + "column": null, + "expr": "a", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": null, + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 53 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCase5.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCase5.in new file mode 100644 index 0000000000..af3dbe0294 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCase5.in @@ -0,0 +1,2 @@ +select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name, +test=case 1 /* */ when 1 then "Some" when 2 then "Other" end FROM a; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCase5.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCase5.out new file mode 100644 index 0000000000..1f45242563 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCase5.out @@ -0,0 +1,1108 @@ +{ + "query": "select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name,\ntest=case 1 \/* *\/ when 1 then \"Some\" when 2 then \"Other\" end FROM a;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name,\ntest=case 1 \/* *\/ when 1 then \"Some\" when 2 then \"Other\" end FROM a;", + "len": 150, + "last": 150, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "select", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": 1, + "flags": 1, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "mysql", + "value": "mysql", + "keyword": null, + "type": 0, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category", + "value": "help_category", + "keyword": null, + "type": 0, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category_id", + "value": "help_category_id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": 1, + "flags": 1, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "test", + "value": "test", + "keyword": null, + "type": 0, + "flags": 0, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "case", + "value": "CASE", + "keyword": "CASE", + "type": 1, + "flags": 3, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 91 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* *\/", + "value": "\/* *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "when", + "value": "WHEN", + "keyword": "WHEN", + "type": 1, + "flags": 3, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 104 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 105 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 106 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "then", + "value": "THEN", + "keyword": "THEN", + "type": 1, + "flags": 3, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 111 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Some\"", + "value": "Some", + "keyword": null, + "type": 7, + "flags": 2, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 118 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "when", + "value": "WHEN", + "keyword": "WHEN", + "type": 1, + "flags": 3, + "position": 119 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 123 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": 6, + "flags": 0, + "position": 124 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 125 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "then", + "value": "THEN", + "keyword": "THEN", + "type": 1, + "flags": 3, + "position": 126 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 130 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Other\"", + "value": "Other", + "keyword": null, + "type": 7, + "flags": 2, + "position": 131 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 138 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "end", + "value": "end", + "keyword": "END", + "type": 1, + "flags": 1, + "position": 139 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 142 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 143 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 147 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": 0, + "flags": 0, + "position": 148 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 149 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 58, + "idx": 58 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "(SELECT name FROM mysql.help_category WHERE help_category_id = 1)", + "alias": "name", + "function": null, + "subquery": "SELECT" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "test", + "expr": "test=CASE 1 \/* *\/ WHEN 1 THEN \"Some\" WHEN 2 THEN \"Other\" END", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "a", + "column": null, + "expr": "a", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": null, + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 55 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseAlias1.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseAlias1.in new file mode 100644 index 0000000000..fe81f9d794 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseAlias1.in @@ -0,0 +1,2 @@ +select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name, +case /* */ when 1=1 then "Some" when 2=1 then "Other" end /* */ AS /* */ foo FROM a; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseAlias1.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseAlias1.out new file mode 100644 index 0000000000..0b35813fbc --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseAlias1.out @@ -0,0 +1,1287 @@ +{ + "query": "select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name,\ncase \/* *\/ when 1=1 then \"Some\" when 2=1 then \"Other\" end \/* *\/ AS \/* *\/ foo FROM a;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name,\ncase \/* *\/ when 1=1 then \"Some\" when 2=1 then \"Other\" end \/* *\/ AS \/* *\/ foo FROM a;", + "len": 166, + "last": 166, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "select", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": 1, + "flags": 1, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "mysql", + "value": "mysql", + "keyword": null, + "type": 0, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category", + "value": "help_category", + "keyword": null, + "type": 0, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category_id", + "value": "help_category_id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": 1, + "flags": 1, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "case", + "value": "CASE", + "keyword": "CASE", + "type": 1, + "flags": 3, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* *\/", + "value": "\/* *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "when", + "value": "WHEN", + "keyword": "WHEN", + "type": 1, + "flags": 3, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 97 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 101 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "then", + "value": "THEN", + "keyword": "THEN", + "type": 1, + "flags": 3, + "position": 102 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 106 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Some\"", + "value": "Some", + "keyword": null, + "type": 7, + "flags": 2, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "when", + "value": "WHEN", + "keyword": "WHEN", + "type": 1, + "flags": 3, + "position": 114 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 118 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": 6, + "flags": 0, + "position": 119 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 120 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 122 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "then", + "value": "THEN", + "keyword": "THEN", + "type": 1, + "flags": 3, + "position": 123 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 127 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Other\"", + "value": "Other", + "keyword": null, + "type": 7, + "flags": 2, + "position": 128 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 135 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "end", + "value": "end", + "keyword": "END", + "type": 1, + "flags": 1, + "position": 136 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 139 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* *\/", + "value": "\/* *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 140 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 145 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 146 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 148 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* *\/", + "value": "\/* *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 149 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 154 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "foo", + "value": "foo", + "keyword": null, + "type": 0, + "flags": 0, + "position": 155 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 158 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 159 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 163 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": 0, + "flags": 0, + "position": 164 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 165 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 66, + "idx": 66 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "(SELECT name FROM mysql.help_category WHERE help_category_id = 1)", + "alias": "name", + "function": null, + "subquery": "SELECT" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CaseExpression", + "value": null, + "conditions": [ + [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [], + "isOperator": false, + "expr": "1=1" + } + ], + [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [], + "isOperator": false, + "expr": "2=1" + } + ] + ], + "results": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "Some", + "expr": "\"Some\"", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "Other", + "expr": "\"Other\"", + "alias": null, + "function": null, + "subquery": null + } + ], + "compare_values": [], + "else_result": null, + "alias": "foo", + "expr": "CASE WHEN 1=1 THEN \"Some\" WHEN 2=1 THEN \"Other\" END AS `foo`" + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "a", + "column": null, + "expr": "a", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": null, + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 63 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseAlias2.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseAlias2.in new file mode 100644 index 0000000000..1288173e98 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseAlias2.in @@ -0,0 +1,2 @@ +select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name, +case /* */ when 1=1 then "Some" when 2=1 then "Other" end /* */ foo FROM a; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseAlias2.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseAlias2.out new file mode 100644 index 0000000000..c539200a43 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseAlias2.out @@ -0,0 +1,1251 @@ +{ + "query": "select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name,\ncase \/* *\/ when 1=1 then \"Some\" when 2=1 then \"Other\" end \/* *\/ foo FROM a;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name,\ncase \/* *\/ when 1=1 then \"Some\" when 2=1 then \"Other\" end \/* *\/ foo FROM a;", + "len": 157, + "last": 157, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "select", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": 1, + "flags": 1, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "mysql", + "value": "mysql", + "keyword": null, + "type": 0, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category", + "value": "help_category", + "keyword": null, + "type": 0, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category_id", + "value": "help_category_id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": 1, + "flags": 1, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "case", + "value": "CASE", + "keyword": "CASE", + "type": 1, + "flags": 3, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* *\/", + "value": "\/* *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "when", + "value": "WHEN", + "keyword": "WHEN", + "type": 1, + "flags": 3, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 97 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 101 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "then", + "value": "THEN", + "keyword": "THEN", + "type": 1, + "flags": 3, + "position": 102 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 106 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Some\"", + "value": "Some", + "keyword": null, + "type": 7, + "flags": 2, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "when", + "value": "WHEN", + "keyword": "WHEN", + "type": 1, + "flags": 3, + "position": 114 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 118 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": 6, + "flags": 0, + "position": 119 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 120 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 122 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "then", + "value": "THEN", + "keyword": "THEN", + "type": 1, + "flags": 3, + "position": 123 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 127 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Other\"", + "value": "Other", + "keyword": null, + "type": 7, + "flags": 2, + "position": 128 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 135 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "end", + "value": "end", + "keyword": "END", + "type": 1, + "flags": 1, + "position": 136 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 139 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* *\/", + "value": "\/* *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 140 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 145 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "foo", + "value": "foo", + "keyword": null, + "type": 0, + "flags": 0, + "position": 146 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 149 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 150 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 154 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": 0, + "flags": 0, + "position": 155 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 156 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 62, + "idx": 62 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "(SELECT name FROM mysql.help_category WHERE help_category_id = 1)", + "alias": "name", + "function": null, + "subquery": "SELECT" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CaseExpression", + "value": null, + "conditions": [ + [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [], + "isOperator": false, + "expr": "1=1" + } + ], + [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [], + "isOperator": false, + "expr": "2=1" + } + ] + ], + "results": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "Some", + "expr": "\"Some\"", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "Other", + "expr": "\"Other\"", + "alias": null, + "function": null, + "subquery": null + } + ], + "compare_values": [], + "else_result": null, + "alias": "foo", + "expr": "CASE WHEN 1=1 THEN \"Some\" WHEN 2=1 THEN \"Other\" END AS `foo`" + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "a", + "column": null, + "expr": "a", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": null, + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 59 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseAlias3.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseAlias3.in new file mode 100644 index 0000000000..2da0fe86f5 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseAlias3.in @@ -0,0 +1,2 @@ +select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name, +test=case 1 /* */ when 1 then "Some" when 2 then "Other" end /* */ AS /* */ foo FROM a; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseAlias3.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseAlias3.out new file mode 100644 index 0000000000..0fd51985ea --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseAlias3.out @@ -0,0 +1,1180 @@ +{ + "query": "select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name,\ntest=case 1 \/* *\/ when 1 then \"Some\" when 2 then \"Other\" end \/* *\/ AS \/* *\/ foo FROM a;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name,\ntest=case 1 \/* *\/ when 1 then \"Some\" when 2 then \"Other\" end \/* *\/ AS \/* *\/ foo FROM a;", + "len": 169, + "last": 169, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "select", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": 1, + "flags": 1, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "mysql", + "value": "mysql", + "keyword": null, + "type": 0, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category", + "value": "help_category", + "keyword": null, + "type": 0, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category_id", + "value": "help_category_id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": 1, + "flags": 1, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "test", + "value": "test", + "keyword": null, + "type": 0, + "flags": 0, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "case", + "value": "CASE", + "keyword": "CASE", + "type": 1, + "flags": 3, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 91 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* *\/", + "value": "\/* *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "when", + "value": "WHEN", + "keyword": "WHEN", + "type": 1, + "flags": 3, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 104 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 105 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 106 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "then", + "value": "THEN", + "keyword": "THEN", + "type": 1, + "flags": 3, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 111 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Some\"", + "value": "Some", + "keyword": null, + "type": 7, + "flags": 2, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 118 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "when", + "value": "WHEN", + "keyword": "WHEN", + "type": 1, + "flags": 3, + "position": 119 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 123 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": 6, + "flags": 0, + "position": 124 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 125 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "then", + "value": "THEN", + "keyword": "THEN", + "type": 1, + "flags": 3, + "position": 126 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 130 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Other\"", + "value": "Other", + "keyword": null, + "type": 7, + "flags": 2, + "position": 131 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 138 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "end", + "value": "end", + "keyword": "END", + "type": 1, + "flags": 1, + "position": 139 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 142 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* *\/", + "value": "\/* *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 143 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 148 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 149 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 151 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* *\/", + "value": "\/* *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 152 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 157 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "foo", + "value": "foo", + "keyword": null, + "type": 0, + "flags": 0, + "position": 158 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 161 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 162 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 166 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": 0, + "flags": 0, + "position": 167 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 168 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 66, + "idx": 66 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "(SELECT name FROM mysql.help_category WHERE help_category_id = 1)", + "alias": "name", + "function": null, + "subquery": "SELECT" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "test", + "expr": "test=CASE 1 \/* *\/ WHEN 1 THEN \"Some\" WHEN 2 THEN \"Other\" END AS `foo`", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "a", + "column": null, + "expr": "a", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": null, + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 63 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseAlias4.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseAlias4.in new file mode 100644 index 0000000000..b4d56238ec --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseAlias4.in @@ -0,0 +1,2 @@ +select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name, +test=case 1 /* */ when 1 then "Some" when 2 then "Other" end /* */ foo FROM a; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseAlias4.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseAlias4.out new file mode 100644 index 0000000000..4b075fe1e8 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseAlias4.out @@ -0,0 +1,1144 @@ +{ + "query": "select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name,\ntest=case 1 \/* *\/ when 1 then \"Some\" when 2 then \"Other\" end \/* *\/ foo FROM a;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name,\ntest=case 1 \/* *\/ when 1 then \"Some\" when 2 then \"Other\" end \/* *\/ foo FROM a;", + "len": 160, + "last": 160, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "select", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": 1, + "flags": 1, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "mysql", + "value": "mysql", + "keyword": null, + "type": 0, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category", + "value": "help_category", + "keyword": null, + "type": 0, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category_id", + "value": "help_category_id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": 1, + "flags": 1, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "test", + "value": "test", + "keyword": null, + "type": 0, + "flags": 0, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "case", + "value": "CASE", + "keyword": "CASE", + "type": 1, + "flags": 3, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 91 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* *\/", + "value": "\/* *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "when", + "value": "WHEN", + "keyword": "WHEN", + "type": 1, + "flags": 3, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 104 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 105 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 106 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "then", + "value": "THEN", + "keyword": "THEN", + "type": 1, + "flags": 3, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 111 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Some\"", + "value": "Some", + "keyword": null, + "type": 7, + "flags": 2, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 118 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "when", + "value": "WHEN", + "keyword": "WHEN", + "type": 1, + "flags": 3, + "position": 119 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 123 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": 6, + "flags": 0, + "position": 124 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 125 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "then", + "value": "THEN", + "keyword": "THEN", + "type": 1, + "flags": 3, + "position": 126 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 130 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Other\"", + "value": "Other", + "keyword": null, + "type": 7, + "flags": 2, + "position": 131 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 138 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "end", + "value": "end", + "keyword": "END", + "type": 1, + "flags": 1, + "position": 139 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 142 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* *\/", + "value": "\/* *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 143 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 148 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "foo", + "value": "foo", + "keyword": null, + "type": 0, + "flags": 0, + "position": 149 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 152 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 153 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 157 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": 0, + "flags": 0, + "position": 158 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 159 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 62, + "idx": 62 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "(SELECT name FROM mysql.help_category WHERE help_category_id = 1)", + "alias": "name", + "function": null, + "subquery": "SELECT" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "test", + "expr": "test=CASE 1 \/* *\/ WHEN 1 THEN \"Some\" WHEN 2 THEN \"Other\" END AS `foo`", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "a", + "column": null, + "expr": "a", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": null, + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 59 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseAlias5.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseAlias5.in new file mode 100644 index 0000000000..ec99ffbf4a --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseAlias5.in @@ -0,0 +1,2 @@ +select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name, +case 1 when 1 then "Some" else "Other" end AS "string value" FROM a; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseAlias5.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseAlias5.out new file mode 100644 index 0000000000..77a83baaa5 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseAlias5.out @@ -0,0 +1,1151 @@ +{ + "query": "select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name,\ncase 1 when 1 then \"Some\" else \"Other\" end AS \"string value\" FROM a;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name,\ncase 1 when 1 then \"Some\" else \"Other\" end AS \"string value\" FROM a;", + "len": 150, + "last": 150, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "select", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": 1, + "flags": 1, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "mysql", + "value": "mysql", + "keyword": null, + "type": 0, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category", + "value": "help_category", + "keyword": null, + "type": 0, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category_id", + "value": "help_category_id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": 1, + "flags": 1, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "case", + "value": "CASE", + "keyword": "CASE", + "type": 1, + "flags": 3, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "when", + "value": "WHEN", + "keyword": "WHEN", + "type": 1, + "flags": 3, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 95 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "then", + "value": "THEN", + "keyword": "THEN", + "type": 1, + "flags": 3, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Some\"", + "value": "Some", + "keyword": null, + "type": 7, + "flags": 2, + "position": 101 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "else", + "value": "ELSE", + "keyword": "ELSE", + "type": 1, + "flags": 3, + "position": 108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Other\"", + "value": "Other", + "keyword": null, + "type": 7, + "flags": 2, + "position": 113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 120 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "end", + "value": "end", + "keyword": "END", + "type": 1, + "flags": 1, + "position": 121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 124 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 125 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 127 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"string value\"", + "value": "string value", + "keyword": null, + "type": 7, + "flags": 2, + "position": 128 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 142 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 143 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 147 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": 0, + "flags": 0, + "position": 148 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 149 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 54, + "idx": 54 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "(SELECT name FROM mysql.help_category WHERE help_category_id = 1)", + "alias": "name", + "function": null, + "subquery": "SELECT" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CaseExpression", + "value": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "1", + "alias": null, + "function": null, + "subquery": null + }, + "conditions": [], + "results": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "Some", + "expr": "\"Some\"", + "alias": null, + "function": null, + "subquery": null + } + ], + "compare_values": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "1", + "alias": null, + "function": null, + "subquery": null + } + ], + "else_result": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "Other", + "expr": "\"Other\"", + "alias": null, + "function": null, + "subquery": null + }, + "alias": "string value", + "expr": "CASE 1 WHEN 1 THEN \"Some\" ELSE \"Other\" END AS `string value`" + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "a", + "column": null, + "expr": "a", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": null, + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 51 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseAlias6.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseAlias6.in new file mode 100644 index 0000000000..e964f94c96 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseAlias6.in @@ -0,0 +1,2 @@ +select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name, +case 1 when 1 then "Some" else "Other" end AS `symbol_value` FROM a; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseAlias6.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseAlias6.out new file mode 100644 index 0000000000..9e5da45cd1 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseAlias6.out @@ -0,0 +1,1151 @@ +{ + "query": "select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name,\ncase 1 when 1 then \"Some\" else \"Other\" end AS `symbol_value` FROM a;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name,\ncase 1 when 1 then \"Some\" else \"Other\" end AS `symbol_value` FROM a;", + "len": 150, + "last": 150, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "select", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": 1, + "flags": 1, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "mysql", + "value": "mysql", + "keyword": null, + "type": 0, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category", + "value": "help_category", + "keyword": null, + "type": 0, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category_id", + "value": "help_category_id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": 1, + "flags": 1, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "case", + "value": "CASE", + "keyword": "CASE", + "type": 1, + "flags": 3, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "when", + "value": "WHEN", + "keyword": "WHEN", + "type": 1, + "flags": 3, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 95 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "then", + "value": "THEN", + "keyword": "THEN", + "type": 1, + "flags": 3, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Some\"", + "value": "Some", + "keyword": null, + "type": 7, + "flags": 2, + "position": 101 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "else", + "value": "ELSE", + "keyword": "ELSE", + "type": 1, + "flags": 3, + "position": 108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Other\"", + "value": "Other", + "keyword": null, + "type": 7, + "flags": 2, + "position": 113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 120 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "end", + "value": "end", + "keyword": "END", + "type": 1, + "flags": 1, + "position": 121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 124 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 125 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 127 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`symbol_value`", + "value": "symbol_value", + "keyword": null, + "type": 8, + "flags": 2, + "position": 128 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 142 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 143 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 147 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": 0, + "flags": 0, + "position": 148 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 149 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 54, + "idx": 54 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "(SELECT name FROM mysql.help_category WHERE help_category_id = 1)", + "alias": "name", + "function": null, + "subquery": "SELECT" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CaseExpression", + "value": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "1", + "alias": null, + "function": null, + "subquery": null + }, + "conditions": [], + "results": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "Some", + "expr": "\"Some\"", + "alias": null, + "function": null, + "subquery": null + } + ], + "compare_values": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "1", + "alias": null, + "function": null, + "subquery": null + } + ], + "else_result": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "Other", + "expr": "\"Other\"", + "alias": null, + "function": null, + "subquery": null + }, + "alias": "symbol_value", + "expr": "CASE 1 WHEN 1 THEN \"Some\" ELSE \"Other\" END AS `symbol_value`" + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "a", + "column": null, + "expr": "a", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": null, + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 51 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseAliasErr1.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseAliasErr1.in new file mode 100644 index 0000000000..b00b077d3c --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseAliasErr1.in @@ -0,0 +1,2 @@ +select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name, +case 1 when 1 then "Some" else "Other" end AS AS foo FROM a; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseAliasErr1.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseAliasErr1.out new file mode 100644 index 0000000000..a91b87c96b --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseAliasErr1.out @@ -0,0 +1,1198 @@ +{ + "query": "select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name,\ncase 1 when 1 then \"Some\" else \"Other\" end AS AS foo FROM a;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name,\ncase 1 when 1 then \"Some\" else \"Other\" end AS AS foo FROM a;", + "len": 142, + "last": 142, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "select", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": 1, + "flags": 1, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "mysql", + "value": "mysql", + "keyword": null, + "type": 0, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category", + "value": "help_category", + "keyword": null, + "type": 0, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category_id", + "value": "help_category_id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": 1, + "flags": 1, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "case", + "value": "CASE", + "keyword": "CASE", + "type": 1, + "flags": 3, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "when", + "value": "WHEN", + "keyword": "WHEN", + "type": 1, + "flags": 3, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 95 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "then", + "value": "THEN", + "keyword": "THEN", + "type": 1, + "flags": 3, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Some\"", + "value": "Some", + "keyword": null, + "type": 7, + "flags": 2, + "position": 101 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "else", + "value": "ELSE", + "keyword": "ELSE", + "type": 1, + "flags": 3, + "position": 108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Other\"", + "value": "Other", + "keyword": null, + "type": 7, + "flags": 2, + "position": 113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 120 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "end", + "value": "end", + "keyword": "END", + "type": 1, + "flags": 1, + "position": 121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 124 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 125 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 127 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 128 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 130 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "foo", + "value": "foo", + "keyword": null, + "type": 0, + "flags": 0, + "position": 131 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 134 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 135 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 139 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": 0, + "flags": 0, + "position": 140 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 141 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 56, + "idx": 56 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "(SELECT name FROM mysql.help_category WHERE help_category_id = 1)", + "alias": "name", + "function": null, + "subquery": "SELECT" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CaseExpression", + "value": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "1", + "alias": null, + "function": null, + "subquery": null + }, + "conditions": [], + "results": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "Some", + "expr": "\"Some\"", + "alias": null, + "function": null, + "subquery": null + } + ], + "compare_values": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "1", + "alias": null, + "function": null, + "subquery": null + } + ], + "else_result": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "Other", + "expr": "\"Other\"", + "alias": null, + "function": null, + "subquery": null + }, + "alias": null, + "expr": "CASE 1 WHEN 1 THEN \"Some\" ELSE \"Other\" END" + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "a", + "column": null, + "expr": "a", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": null, + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 53 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Potential duplicate alias of CASE expression.", + { + "@type": "@49" + }, + 0 + ], + [ + "An alias was expected after AS.", + { + "@type": "@48" + }, + 0 + ], + [ + "Unrecognized keyword.", + { + "@type": "@49" + }, + 0 + ], + [ + "Unexpected token.", + { + "@type": "@51" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseAliasErr2.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseAliasErr2.in new file mode 100644 index 0000000000..8611713103 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseAliasErr2.in @@ -0,0 +1,2 @@ +select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name, +case 1 when 1 then "Some" else "Other" end AS FROM a; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseAliasErr2.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseAliasErr2.out new file mode 100644 index 0000000000..3d1b28be83 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseAliasErr2.out @@ -0,0 +1,1141 @@ +{ + "query": "select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name,\ncase 1 when 1 then \"Some\" else \"Other\" end AS FROM a;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name,\ncase 1 when 1 then \"Some\" else \"Other\" end AS FROM a;", + "len": 135, + "last": 135, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "select", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": 1, + "flags": 1, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "mysql", + "value": "mysql", + "keyword": null, + "type": 0, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category", + "value": "help_category", + "keyword": null, + "type": 0, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category_id", + "value": "help_category_id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": 1, + "flags": 1, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "case", + "value": "CASE", + "keyword": "CASE", + "type": 1, + "flags": 3, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "when", + "value": "WHEN", + "keyword": "WHEN", + "type": 1, + "flags": 3, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 95 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "then", + "value": "THEN", + "keyword": "THEN", + "type": 1, + "flags": 3, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Some\"", + "value": "Some", + "keyword": null, + "type": 7, + "flags": 2, + "position": 101 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "else", + "value": "ELSE", + "keyword": "ELSE", + "type": 1, + "flags": 3, + "position": 108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Other\"", + "value": "Other", + "keyword": null, + "type": 7, + "flags": 2, + "position": 113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 120 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "end", + "value": "end", + "keyword": "END", + "type": 1, + "flags": 1, + "position": 121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 124 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 125 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 127 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 128 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 132 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": 0, + "flags": 0, + "position": 133 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 134 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 52, + "idx": 52 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "(SELECT name FROM mysql.help_category WHERE help_category_id = 1)", + "alias": "name", + "function": null, + "subquery": "SELECT" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CaseExpression", + "value": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "1", + "alias": null, + "function": null, + "subquery": null + }, + "conditions": [], + "results": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "Some", + "expr": "\"Some\"", + "alias": null, + "function": null, + "subquery": null + } + ], + "compare_values": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "1", + "alias": null, + "function": null, + "subquery": null + } + ], + "else_result": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "Other", + "expr": "\"Other\"", + "alias": null, + "function": null, + "subquery": null + }, + "alias": null, + "expr": "CASE 1 WHEN 1 THEN \"Some\" ELSE \"Other\" END" + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "a", + "column": null, + "expr": "a", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": null, + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 49 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "An alias expected after AS but got FROM", + { + "@type": "@49" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseAliasErr3.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseAliasErr3.in new file mode 100644 index 0000000000..fde3e44c79 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseAliasErr3.in @@ -0,0 +1,2 @@ +select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name, +case 1 when 1 then "Some" else "Other" end AS foo bar FROM a; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseAliasErr3.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseAliasErr3.out new file mode 100644 index 0000000000..62fa00f227 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseAliasErr3.out @@ -0,0 +1,1184 @@ +{ + "query": "select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name,\ncase 1 when 1 then \"Some\" else \"Other\" end AS foo bar FROM a;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name,\ncase 1 when 1 then \"Some\" else \"Other\" end AS foo bar FROM a;", + "len": 143, + "last": 143, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "select", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": 1, + "flags": 1, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "mysql", + "value": "mysql", + "keyword": null, + "type": 0, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category", + "value": "help_category", + "keyword": null, + "type": 0, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category_id", + "value": "help_category_id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": 1, + "flags": 1, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "case", + "value": "CASE", + "keyword": "CASE", + "type": 1, + "flags": 3, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "when", + "value": "WHEN", + "keyword": "WHEN", + "type": 1, + "flags": 3, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 95 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "then", + "value": "THEN", + "keyword": "THEN", + "type": 1, + "flags": 3, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Some\"", + "value": "Some", + "keyword": null, + "type": 7, + "flags": 2, + "position": 101 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "else", + "value": "ELSE", + "keyword": "ELSE", + "type": 1, + "flags": 3, + "position": 108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Other\"", + "value": "Other", + "keyword": null, + "type": 7, + "flags": 2, + "position": 113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 120 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "end", + "value": "end", + "keyword": "END", + "type": 1, + "flags": 1, + "position": 121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 124 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 125 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 127 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "foo", + "value": "foo", + "keyword": null, + "type": 0, + "flags": 0, + "position": 128 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 131 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "bar", + "value": "bar", + "keyword": null, + "type": 0, + "flags": 0, + "position": 132 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 135 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 136 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 140 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": 0, + "flags": 0, + "position": 141 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 142 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 56, + "idx": 56 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "(SELECT name FROM mysql.help_category WHERE help_category_id = 1)", + "alias": "name", + "function": null, + "subquery": "SELECT" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CaseExpression", + "value": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "1", + "alias": null, + "function": null, + "subquery": null + }, + "conditions": [], + "results": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "Some", + "expr": "\"Some\"", + "alias": null, + "function": null, + "subquery": null + } + ], + "compare_values": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "1", + "alias": null, + "function": null, + "subquery": null + } + ], + "else_result": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "Other", + "expr": "\"Other\"", + "alias": null, + "function": null, + "subquery": null + }, + "alias": "foo", + "expr": "CASE 1 WHEN 1 THEN \"Some\" ELSE \"Other\" END AS `foo`" + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "a", + "column": null, + "expr": "a", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": null, + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 53 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "An alias was previously found.", + { + "@type": "@51" + }, + 0 + ], + [ + "Unexpected token.", + { + "@type": "@51" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseAliasErr4.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseAliasErr4.in new file mode 100644 index 0000000000..61c2014186 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseAliasErr4.in @@ -0,0 +1 @@ +SELECT CASE WHEN 2 IS NULL THEN "this is true" ELSE "this is false" END AS ; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseAliasErr4.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseAliasErr4.out new file mode 100644 index 0000000000..2d212c9c3d --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseAliasErr4.out @@ -0,0 +1,851 @@ +{ + "query": "SELECT CASE WHEN 2 IS NULL THEN \"this is true\" ELSE \"this is false\" END AS ;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SELECT CASE WHEN 2 IS NULL THEN \"this is true\" ELSE \"this is false\" END AS ;", + "len": 76, + "last": 76, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CASE", + "value": "CASE", + "keyword": "CASE", + "type": 1, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHEN", + "value": "WHEN", + "keyword": "WHEN", + "type": 1, + "flags": 3, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": 6, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IS", + "value": "IS", + "keyword": "IS", + "type": 1, + "flags": 3, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NULL", + "value": "NULL", + "keyword": "NULL", + "type": 1, + "flags": 3, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "THEN", + "value": "THEN", + "keyword": "THEN", + "type": 1, + "flags": 3, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"this is true\"", + "value": "this is true", + "keyword": null, + "type": 7, + "flags": 2, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ELSE", + "value": "ELSE", + "keyword": "ELSE", + "type": 1, + "flags": 3, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"this is false\"", + "value": "this is false", + "keyword": null, + "type": 7, + "flags": 2, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "END", + "value": "END", + "keyword": "END", + "type": 1, + "flags": 1, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 26, + "idx": 26 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CaseExpression", + "value": null, + "conditions": [ + [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [], + "isOperator": false, + "expr": "2 IS NULL" + } + ] + ], + "results": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "this is true", + "expr": "\"this is true\"", + "alias": null, + "function": null, + "subquery": null + } + ], + "compare_values": [], + "else_result": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "this is false", + "expr": "\"this is false\"", + "alias": null, + "function": null, + "subquery": null + }, + "alias": null, + "expr": "CASE WHEN 2 IS NULL THEN \"this is true\" ELSE \"this is false\" END" + } + ], + "from": [], + "index_hints": null, + "partition": null, + "where": null, + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 23 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "An alias was expected after AS.", + { + "@type": "@25" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseErr1.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseErr1.in new file mode 100644 index 0000000000..d0fbf101c4 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseErr1.in @@ -0,0 +1 @@ +select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name, case 1 then 1 then "Some" else "Other" end FROM a; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseErr1.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseErr1.out new file mode 100644 index 0000000000..d04b520021 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseErr1.out @@ -0,0 +1,1109 @@ +{ + "query": "select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name, case 1 then 1 then \"Some\" else \"Other\" end FROM a;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name, case 1 then 1 then \"Some\" else \"Other\" end FROM a;", + "len": 132, + "last": 132, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "select", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": 1, + "flags": 1, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "mysql", + "value": "mysql", + "keyword": null, + "type": 0, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category", + "value": "help_category", + "keyword": null, + "type": 0, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category_id", + "value": "help_category_id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": 1, + "flags": 1, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "case", + "value": "CASE", + "keyword": "CASE", + "type": 1, + "flags": 3, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "then", + "value": "THEN", + "keyword": "THEN", + "type": 1, + "flags": 3, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 95 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "then", + "value": "THEN", + "keyword": "THEN", + "type": 1, + "flags": 3, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Some\"", + "value": "Some", + "keyword": null, + "type": 7, + "flags": 2, + "position": 101 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "else", + "value": "ELSE", + "keyword": "ELSE", + "type": 1, + "flags": 3, + "position": 108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Other\"", + "value": "Other", + "keyword": null, + "type": 7, + "flags": 2, + "position": 113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 120 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "end", + "value": "end", + "keyword": "END", + "type": 1, + "flags": 1, + "position": 121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 124 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 125 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 129 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": 0, + "flags": 0, + "position": 130 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 131 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 50, + "idx": 50 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "(SELECT name FROM mysql.help_category WHERE help_category_id = 1)", + "alias": "name", + "function": null, + "subquery": "SELECT" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CaseExpression", + "value": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "1", + "alias": null, + "function": null, + "subquery": null + }, + "conditions": [], + "results": [], + "compare_values": [], + "else_result": null, + "alias": null, + "expr": "" + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "a", + "column": null, + "expr": "a", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": null, + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 47 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected keyword.", + { + "@type": "@33" + }, + 0 + ], + [ + "Unexpected end of CASE expression", + { + "@type": "@32" + }, + 0 + ], + [ + "Unrecognized keyword.", + { + "@type": "@33" + }, + 0 + ], + [ + "Unexpected token.", + { + "@type": "@35" + }, + 0 + ], + [ + "Unrecognized keyword.", + { + "@type": "@37" + }, + 0 + ], + [ + "Unexpected token.", + { + "@type": "@39" + }, + 0 + ], + [ + "Unrecognized keyword.", + { + "@type": "@41" + }, + 0 + ], + [ + "Unexpected token.", + { + "@type": "@43" + }, + 0 + ], + [ + "Unrecognized keyword.", + { + "@type": "@45" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseErr2.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseErr2.in new file mode 100644 index 0000000000..90b7b9a59b --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseErr2.in @@ -0,0 +1,2 @@ +select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name, +case then 1=1 then "Some" else "Other" end FROM a; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseErr2.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseErr2.out new file mode 100644 index 0000000000..5c8443c489 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseErr2.out @@ -0,0 +1,1101 @@ +{ + "query": "select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name,\ncase then 1=1 then \"Some\" else \"Other\" end FROM a;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name,\ncase then 1=1 then \"Some\" else \"Other\" end FROM a;", + "len": 132, + "last": 132, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "select", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": 1, + "flags": 1, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "mysql", + "value": "mysql", + "keyword": null, + "type": 0, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category", + "value": "help_category", + "keyword": null, + "type": 0, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category_id", + "value": "help_category_id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": 1, + "flags": 1, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "case", + "value": "CASE", + "keyword": "CASE", + "type": 1, + "flags": 3, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "then", + "value": "THEN", + "keyword": "THEN", + "type": 1, + "flags": 3, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 91 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 95 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "then", + "value": "THEN", + "keyword": "THEN", + "type": 1, + "flags": 3, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Some\"", + "value": "Some", + "keyword": null, + "type": 7, + "flags": 2, + "position": 101 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "else", + "value": "ELSE", + "keyword": "ELSE", + "type": 1, + "flags": 3, + "position": 108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Other\"", + "value": "Other", + "keyword": null, + "type": 7, + "flags": 2, + "position": 113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 120 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "end", + "value": "end", + "keyword": "END", + "type": 1, + "flags": 1, + "position": 121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 124 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 125 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 129 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": 0, + "flags": 0, + "position": 130 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 131 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 50, + "idx": 50 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "(SELECT name FROM mysql.help_category WHERE help_category_id = 1)", + "alias": "name", + "function": null, + "subquery": "SELECT" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CaseExpression", + "value": null, + "conditions": [], + "results": [], + "compare_values": [], + "else_result": null, + "alias": null, + "expr": "" + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "a", + "column": null, + "expr": "a", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": null, + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 47 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected keyword.", + { + "@type": "@31" + }, + 0 + ], + [ + "Unexpected end of CASE expression", + { + "@type": "@30" + }, + 0 + ], + [ + "Unrecognized keyword.", + { + "@type": "@31" + }, + 0 + ], + [ + "Unexpected token.", + { + "@type": "@33" + }, + 0 + ], + [ + "Unexpected token.", + { + "@type": "@34" + }, + 0 + ], + [ + "Unexpected token.", + { + "@type": "@35" + }, + 0 + ], + [ + "Unrecognized keyword.", + { + "@type": "@37" + }, + 0 + ], + [ + "Unexpected token.", + { + "@type": "@39" + }, + 0 + ], + [ + "Unrecognized keyword.", + { + "@type": "@41" + }, + 0 + ], + [ + "Unexpected token.", + { + "@type": "@43" + }, + 0 + ], + [ + "Unrecognized keyword.", + { + "@type": "@45" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseErr3.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseErr3.in new file mode 100644 index 0000000000..9461c0ed6d --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseErr3.in @@ -0,0 +1,2 @@ +select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name, +case when 1=1 when "Some" else "Other" end FROM a; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseErr3.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseErr3.out new file mode 100644 index 0000000000..5818e3adc6 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseErr3.out @@ -0,0 +1,1110 @@ +{ + "query": "select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name,\ncase when 1=1 when \"Some\" else \"Other\" end FROM a;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name,\ncase when 1=1 when \"Some\" else \"Other\" end FROM a;", + "len": 132, + "last": 132, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "select", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": 1, + "flags": 1, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "mysql", + "value": "mysql", + "keyword": null, + "type": 0, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category", + "value": "help_category", + "keyword": null, + "type": 0, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category_id", + "value": "help_category_id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": 1, + "flags": 1, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "case", + "value": "CASE", + "keyword": "CASE", + "type": 1, + "flags": 3, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "when", + "value": "WHEN", + "keyword": "WHEN", + "type": 1, + "flags": 3, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 91 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 95 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "when", + "value": "WHEN", + "keyword": "WHEN", + "type": 1, + "flags": 3, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Some\"", + "value": "Some", + "keyword": null, + "type": 7, + "flags": 2, + "position": 101 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "else", + "value": "ELSE", + "keyword": "ELSE", + "type": 1, + "flags": 3, + "position": 108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Other\"", + "value": "Other", + "keyword": null, + "type": 7, + "flags": 2, + "position": 113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 120 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "end", + "value": "end", + "keyword": "END", + "type": 1, + "flags": 1, + "position": 121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 124 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 125 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 129 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": 0, + "flags": 0, + "position": 130 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 131 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 50, + "idx": 50 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "(SELECT name FROM mysql.help_category WHERE help_category_id = 1)", + "alias": "name", + "function": null, + "subquery": "SELECT" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CaseExpression", + "value": null, + "conditions": [ + [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [], + "isOperator": false, + "expr": "1=1" + } + ] + ], + "results": [], + "compare_values": [], + "else_result": null, + "alias": null, + "expr": "" + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "a", + "column": null, + "expr": "a", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": null, + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 47 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected keyword.", + { + "@type": "@37" + }, + 0 + ], + [ + "Unexpected end of CASE expression", + { + "@type": "@36" + }, + 0 + ], + [ + "Unrecognized keyword.", + { + "@type": "@37" + }, + 0 + ], + [ + "Unexpected token.", + { + "@type": "@39" + }, + 0 + ], + [ + "Unrecognized keyword.", + { + "@type": "@41" + }, + 0 + ], + [ + "Unexpected token.", + { + "@type": "@43" + }, + 0 + ], + [ + "Unrecognized keyword.", + { + "@type": "@45" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseErr4.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseErr4.in new file mode 100644 index 0000000000..e2fa19f17a --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseErr4.in @@ -0,0 +1,2 @@ +select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name, +case 1 then 1 when "Some" else "Other" end FROM a; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseErr4.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseErr4.out new file mode 100644 index 0000000000..2620f0d70d --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseErr4.out @@ -0,0 +1,1109 @@ +{ + "query": "select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name,\ncase 1 then 1 when \"Some\" else \"Other\" end FROM a;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name,\ncase 1 then 1 when \"Some\" else \"Other\" end FROM a;", + "len": 132, + "last": 132, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "select", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": 1, + "flags": 1, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "mysql", + "value": "mysql", + "keyword": null, + "type": 0, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category", + "value": "help_category", + "keyword": null, + "type": 0, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category_id", + "value": "help_category_id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": 1, + "flags": 1, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "case", + "value": "CASE", + "keyword": "CASE", + "type": 1, + "flags": 3, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "then", + "value": "THEN", + "keyword": "THEN", + "type": 1, + "flags": 3, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 95 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "when", + "value": "WHEN", + "keyword": "WHEN", + "type": 1, + "flags": 3, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Some\"", + "value": "Some", + "keyword": null, + "type": 7, + "flags": 2, + "position": 101 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "else", + "value": "ELSE", + "keyword": "ELSE", + "type": 1, + "flags": 3, + "position": 108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Other\"", + "value": "Other", + "keyword": null, + "type": 7, + "flags": 2, + "position": 113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 120 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "end", + "value": "end", + "keyword": "END", + "type": 1, + "flags": 1, + "position": 121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 124 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 125 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 129 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": 0, + "flags": 0, + "position": 130 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 131 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 50, + "idx": 50 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "(SELECT name FROM mysql.help_category WHERE help_category_id = 1)", + "alias": "name", + "function": null, + "subquery": "SELECT" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CaseExpression", + "value": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "1", + "alias": null, + "function": null, + "subquery": null + }, + "conditions": [], + "results": [], + "compare_values": [], + "else_result": null, + "alias": null, + "expr": "" + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "a", + "column": null, + "expr": "a", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": null, + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 47 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected keyword.", + { + "@type": "@33" + }, + 0 + ], + [ + "Unexpected end of CASE expression", + { + "@type": "@32" + }, + 0 + ], + [ + "Unrecognized keyword.", + { + "@type": "@33" + }, + 0 + ], + [ + "Unexpected token.", + { + "@type": "@35" + }, + 0 + ], + [ + "Unrecognized keyword.", + { + "@type": "@37" + }, + 0 + ], + [ + "Unexpected token.", + { + "@type": "@39" + }, + 0 + ], + [ + "Unrecognized keyword.", + { + "@type": "@41" + }, + 0 + ], + [ + "Unexpected token.", + { + "@type": "@43" + }, + 0 + ], + [ + "Unrecognized keyword.", + { + "@type": "@45" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseErr5.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseErr5.in new file mode 100644 index 0000000000..64873750d1 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseErr5.in @@ -0,0 +1,2 @@ +select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name, +case 1 when 1 then "Some" when 2 when "Other" end FROM a; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseErr5.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseErr5.out new file mode 100644 index 0000000000..9dc4c1a8d0 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectCaseErr5.out @@ -0,0 +1,1188 @@ +{ + "query": "select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name,\ncase 1 when 1 then \"Some\" when 2 when \"Other\" end FROM a;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "select (SELECT name FROM mysql.help_category WHERE help_category_id = 1) as name,\ncase 1 when 1 then \"Some\" when 2 when \"Other\" end FROM a;", + "len": 139, + "last": 139, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "select", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": 1, + "flags": 1, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "mysql", + "value": "mysql", + "keyword": null, + "type": 0, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category", + "value": "help_category", + "keyword": null, + "type": 0, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "help_category_id", + "value": "help_category_id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name", + "value": "name", + "keyword": "NAME", + "type": 1, + "flags": 1, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "case", + "value": "CASE", + "keyword": "CASE", + "type": 1, + "flags": 3, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "when", + "value": "WHEN", + "keyword": "WHEN", + "type": 1, + "flags": 3, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 95 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "then", + "value": "THEN", + "keyword": "THEN", + "type": 1, + "flags": 3, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Some\"", + "value": "Some", + "keyword": null, + "type": 7, + "flags": 2, + "position": 101 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "when", + "value": "WHEN", + "keyword": "WHEN", + "type": 1, + "flags": 3, + "position": 108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": 6, + "flags": 0, + "position": 113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 114 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "when", + "value": "WHEN", + "keyword": "WHEN", + "type": 1, + "flags": 3, + "position": 115 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 119 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Other\"", + "value": "Other", + "keyword": null, + "type": 7, + "flags": 2, + "position": 120 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 127 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "end", + "value": "end", + "keyword": "END", + "type": 1, + "flags": 1, + "position": 128 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 131 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 132 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 136 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": 0, + "flags": 0, + "position": 137 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 138 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 54, + "idx": 54 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "(SELECT name FROM mysql.help_category WHERE help_category_id = 1)", + "alias": "name", + "function": null, + "subquery": "SELECT" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\CaseExpression", + "value": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "1", + "alias": null, + "function": null, + "subquery": null + }, + "conditions": [], + "results": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "Some", + "expr": "\"Some\"", + "alias": null, + "function": null, + "subquery": null + } + ], + "compare_values": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "1", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "2", + "alias": null, + "function": null, + "subquery": null + } + ], + "else_result": null, + "alias": null, + "expr": "" + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "a", + "column": null, + "expr": "a", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": null, + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 51 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected keyword.", + { + "@type": "@45" + }, + 0 + ], + [ + "Unexpected end of CASE expression", + { + "@type": "@44" + }, + 0 + ], + [ + "Unrecognized keyword.", + { + "@type": "@45" + }, + 0 + ], + [ + "Unexpected token.", + { + "@type": "@47" + }, + 0 + ], + [ + "Unrecognized keyword.", + { + "@type": "@49" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectEndOptions1.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectEndOptions1.in new file mode 100644 index 0000000000..cc11abb069 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectEndOptions1.in @@ -0,0 +1 @@ +SELECT pid, name2 FROM tablename WHERE pid = 20 /* FOR UPDATE end_option */ FOR UPDATE \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectEndOptions1.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectEndOptions1.out new file mode 100644 index 0000000000..294d1f13a3 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectEndOptions1.out @@ -0,0 +1,835 @@ +{ + "query": "SELECT pid, name2 FROM tablename WHERE pid = 20 \/* FOR UPDATE end_option *\/ FOR UPDATE", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SELECT pid, name2 FROM tablename WHERE pid = 20 \/* FOR UPDATE end_option *\/ FOR UPDATE", + "len": 86, + "last": 86, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "pid", + "value": "pid", + "keyword": null, + "type": 0, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name2", + "value": "name2", + "keyword": null, + "type": 0, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "tablename", + "value": "tablename", + "keyword": null, + "type": 0, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "pid", + "value": "pid", + "keyword": null, + "type": 0, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "20", + "value": 20, + "keyword": null, + "type": 6, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* FOR UPDATE end_option *\/", + "value": "\/* FOR UPDATE end_option *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FOR UPDATE", + "value": "FOR UPDATE", + "keyword": "FOR UPDATE", + "type": 1, + "flags": 7, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 23, + "idx": 23 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "pid", + "expr": "pid", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "name2", + "expr": "name2", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "tablename", + "column": null, + "expr": "tablename", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [ + "pid" + ], + "isOperator": false, + "expr": "pid = 20" + } + ], + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "FOR UPDATE" + } + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 21 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectEndOptions2.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectEndOptions2.in new file mode 100644 index 0000000000..2e44c63c2c --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectEndOptions2.in @@ -0,0 +1,2 @@ +SELECT pid, name2 FROM tablename WHERE pid = 20 +/* LOCK IN SHARE MODE end_option */ LOCK IN SHARE MODE \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectEndOptions2.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectEndOptions2.out new file mode 100644 index 0000000000..03575c5420 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectEndOptions2.out @@ -0,0 +1,835 @@ +{ + "query": "SELECT pid, name2 FROM tablename WHERE pid = 20\n\/* LOCK IN SHARE MODE end_option *\/ LOCK IN SHARE MODE", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SELECT pid, name2 FROM tablename WHERE pid = 20\n\/* LOCK IN SHARE MODE end_option *\/ LOCK IN SHARE MODE", + "len": 102, + "last": 102, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "pid", + "value": "pid", + "keyword": null, + "type": 0, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name2", + "value": "name2", + "keyword": null, + "type": 0, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "tablename", + "value": "tablename", + "keyword": null, + "type": 0, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "pid", + "value": "pid", + "keyword": null, + "type": 0, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "20", + "value": 20, + "keyword": null, + "type": 6, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* LOCK IN SHARE MODE end_option *\/", + "value": "\/* LOCK IN SHARE MODE end_option *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 83 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOCK IN SHARE MODE", + "value": "LOCK IN SHARE MODE", + "keyword": "LOCK IN SHARE MODE", + "type": 1, + "flags": 7, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 23, + "idx": 23 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "pid", + "expr": "pid", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "name2", + "expr": "name2", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "tablename", + "column": null, + "expr": "tablename", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [ + "pid" + ], + "isOperator": false, + "expr": "pid = 20" + } + ], + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "LOCK IN SHARE MODE" + } + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 21 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectEndOptionsErr.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectEndOptionsErr.in new file mode 100644 index 0000000000..d6c6071e84 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectEndOptionsErr.in @@ -0,0 +1,3 @@ +SELECT pid, name2 FROM tablename WHERE pid = 20 +/* USE both end_option, gives error */ +FOR UPDATE LOCK IN SHARE MODE \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectEndOptionsErr.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectEndOptionsErr.out new file mode 100644 index 0000000000..16b3593692 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectEndOptionsErr.out @@ -0,0 +1,862 @@ +{ + "query": "SELECT pid, name2 FROM tablename WHERE pid = 20\n\/* USE both end_option, gives error *\/\nFOR UPDATE LOCK IN SHARE MODE", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SELECT pid, name2 FROM tablename WHERE pid = 20\n\/* USE both end_option, gives error *\/\nFOR UPDATE LOCK IN SHARE MODE", + "len": 116, + "last": 116, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "pid", + "value": "pid", + "keyword": null, + "type": 0, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name2", + "value": "name2", + "keyword": null, + "type": 0, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "tablename", + "value": "tablename", + "keyword": null, + "type": 0, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "pid", + "value": "pid", + "keyword": null, + "type": 0, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "20", + "value": 20, + "keyword": null, + "type": 6, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* USE both end_option, gives error *\/", + "value": "\/* USE both end_option, gives error *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FOR UPDATE", + "value": "FOR UPDATE", + "keyword": "FOR UPDATE", + "type": 1, + "flags": 7, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 97 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LOCK IN SHARE MODE", + "value": "LOCK IN SHARE MODE", + "keyword": "LOCK IN SHARE MODE", + "type": 1, + "flags": 7, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 25, + "idx": 25 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "pid", + "expr": "pid", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "name2", + "expr": "name2", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "tablename", + "column": null, + "expr": "tablename", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [ + "pid" + ], + "isOperator": false, + "expr": "pid = 20" + } + ], + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "FOR UPDATE", + "3": "LOCK IN SHARE MODE" + } + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 23 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "This option conflicts with \"FOR UPDATE\".", + { + "@type": "@25" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectErr1.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectErr1.in new file mode 100644 index 0000000000..37a1c456bd --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectErr1.in @@ -0,0 +1,14 @@ +SELECT ALL DISTINCT MAX_STATEMENT_TIME = 10 + 1 + 2 AS result, + @idx, + id, + test.`users`.username AS +FROM + `test`.users + PARTITION (p1, p2) +WHERE + id > 0 +ORDER BY + username DESC, + id +LIMIT 2, 3; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectErr1.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectErr1.out new file mode 100644 index 0000000000..5ff8256c65 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectErr1.out @@ -0,0 +1,1455 @@ +{ + "query": "SELECT ALL DISTINCT MAX_STATEMENT_TIME = 10\n 1 + 2 AS result,\n @idx,\n id,\n test.`users`.username AS\nFROM\n `test`.users\n PARTITION (p1, p2)\nWHERE\n id > 0\nORDER BY\n username DESC,\n id\nLIMIT 2, 3;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SELECT ALL DISTINCT MAX_STATEMENT_TIME = 10\n 1 + 2 AS result,\n @idx,\n id,\n test.`users`.username AS\nFROM\n `test`.users\n PARTITION (p1, p2)\nWHERE\n id > 0\nORDER BY\n username DESC,\n id\nLIMIT 2, 3;", + "len": 220, + "last": 220, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ALL", + "value": "ALL", + "keyword": "ALL", + "type": 1, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DISTINCT", + "value": "DISTINCT", + "keyword": "DISTINCT", + "type": 1, + "flags": 3, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "MAX_STATEMENT_TIME", + "value": "MAX_STATEMENT_TIME", + "keyword": "MAX_STATEMENT_TIME", + "type": 1, + "flags": 1, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "10", + "value": 10, + "keyword": null, + "type": 6, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "+", + "value": "+", + "keyword": null, + "type": 2, + "flags": 1, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": 6, + "flags": 0, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "result", + "value": "result", + "keyword": null, + "type": 0, + "flags": 0, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@idx", + "value": "idx", + "keyword": null, + "type": 8, + "flags": 1, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "test", + "value": "test", + "keyword": null, + "type": 0, + "flags": 0, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 91 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`users`", + "value": "users", + "keyword": null, + "type": 8, + "flags": 2, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "username", + "value": "username", + "keyword": null, + "type": 0, + "flags": 0, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 109 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 111 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 116 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`test`", + "value": "test", + "keyword": null, + "type": 8, + "flags": 2, + "position": 121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 127 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "users", + "value": "users", + "keyword": null, + "type": 0, + "flags": 0, + "position": 128 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 133 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "PARTITION", + "value": "PARTITION", + "keyword": "PARTITION", + "type": 1, + "flags": 3, + "position": 138 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 147 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 148 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p1", + "value": "p1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 149 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 151 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 152 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "p2", + "value": "p2", + "keyword": null, + "type": 0, + "flags": 0, + "position": 153 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 155 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 156 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 157 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 162 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 167 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 169 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ">", + "value": ">", + "keyword": null, + "type": 2, + "flags": 2, + "position": 170 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 171 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "0", + "value": 0, + "keyword": null, + "type": 6, + "flags": 0, + "position": 172 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 173 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ORDER BY", + "value": "ORDER BY", + "keyword": "ORDER BY", + "type": 1, + "flags": 7, + "position": 174 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 182 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "username", + "value": "username", + "keyword": null, + "type": 0, + "flags": 0, + "position": 187 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 195 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DESC", + "value": "DESC", + "keyword": "DESC", + "type": 1, + "flags": 3, + "position": 196 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 200 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 201 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 206 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 208 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LIMIT", + "value": "LIMIT", + "keyword": "LIMIT", + "type": 1, + "flags": 3, + "position": 209 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 214 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": 6, + "flags": 0, + "position": 215 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 216 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 217 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3", + "value": 3, + "keyword": null, + "type": 6, + "flags": 0, + "position": 218 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 219 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 77, + "idx": 77 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "1 + 2", + "alias": "result", + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "@idx", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "id", + "expr": "id", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": "test", + "table": "users", + "column": "username", + "expr": "test.`users`.username", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": "test", + "table": "users", + "column": null, + "expr": "`test`.users", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "raw": [ + "p1", + "p2" + ], + "values": [ + "p1", + "p2" + ] + }, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [ + "id" + ], + "isOperator": false, + "expr": "id > 0" + } + ], + "group": null, + "having": null, + "order": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "username", + "expr": "username", + "alias": null, + "function": null, + "subquery": null + }, + "type": "DESC" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "id", + "expr": "id", + "alias": null, + "function": null, + "subquery": null + }, + "type": "ASC" + } + ], + "limit": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "offset": 2, + "rowCount": 3 + }, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "ALL", + "3": { + "name": "MAX_STATEMENT_TIME", + "equals": true, + "expr": "10", + "value": "10" + }, + "13": "DISTINCT" + } + }, + "first": 0, + "last": 74 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "This option conflicts with \"ALL\".", + { + "@type": "@6" + }, + 0 + ], + [ + "An alias was expected.", + { + "@type": "@38" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectErr2.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectErr2.in new file mode 100644 index 0000000000..494d5b7beb --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectErr2.in @@ -0,0 +1 @@ +select * from foobar where foo = @ diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectErr2.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectErr2.out new file mode 100644 index 0000000000..3b7878850c --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectErr2.out @@ -0,0 +1,752 @@ +{ + "query": "select * from foobar where foo = @\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "select * from foobar where foo = @\n", + "len": 35, + "last": 35, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "select", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "from", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "foobar", + "value": "foobar", + "keyword": null, + "type": 0, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "where", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "foo", + "value": "foo", + "keyword": null, + "type": 0, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@", + "value": "", + "keyword": null, + "type": 8, + "flags": 1, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 16, + "idx": 16 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "foobar", + "column": null, + "expr": "foobar", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [ + "foo", + "" + ], + "isOperator": false, + "expr": "foo = @" + } + ], + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 14 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [ + [ + "Variable name was expected.", + "\n", + 34, + 0 + ] + ], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectExists.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectExists.in new file mode 100644 index 0000000000..98d89d7907 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectExists.in @@ -0,0 +1 @@ +SELECT EXISTS(SELECT 1) diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectExists.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectExists.out new file mode 100644 index 0000000000..b10a0494c4 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectExists.out @@ -0,0 +1,629 @@ +{ + "query": "SELECT EXISTS(SELECT 1)\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SELECT EXISTS(SELECT 1)\n", + "len": 24, + "last": 24, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "EXISTS", + "value": "EXISTS", + "keyword": "EXISTS", + "type": 1, + "flags": 35, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 10, + "idx": 10 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "EXISTS(SELECT 1)", + "alias": null, + "function": "EXISTS", + "subquery": "SELECT" + } + ], + "from": [], + "index_hints": null, + "partition": null, + "where": null, + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 8 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectIndexHint1.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectIndexHint1.in new file mode 100644 index 0000000000..a29005b041 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectIndexHint1.in @@ -0,0 +1 @@ +SELECT * FROM address FORCE INDEX (idx_fk_city_id) IGNORE KEY FOR GROUP BY (a, b,c) WHERE city_id<0; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectIndexHint1.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectIndexHint1.out new file mode 100644 index 0000000000..0f30fc6cc6 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectIndexHint1.out @@ -0,0 +1,1023 @@ +{ + "query": "SELECT * FROM address FORCE INDEX (idx_fk_city_id) IGNORE KEY FOR GROUP BY (a, b,c) WHERE city_id<0;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SELECT * FROM address FORCE INDEX (idx_fk_city_id) IGNORE KEY FOR GROUP BY (a, b,c) WHERE city_id<0;", + "len": 101, + "last": 101, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "address", + "value": "address", + "keyword": null, + "type": 0, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FORCE", + "value": "FORCE", + "keyword": "FORCE", + "type": 1, + "flags": 3, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INDEX", + "value": "INDEX", + "keyword": "INDEX", + "type": 1, + "flags": 19, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "idx_fk_city_id", + "value": "idx_fk_city_id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IGNORE", + "value": "IGNORE", + "keyword": "IGNORE", + "type": 1, + "flags": 3, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "KEY", + "value": "KEY", + "keyword": "KEY", + "type": 1, + "flags": 19, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FOR", + "value": "FOR", + "keyword": "FOR", + "type": 1, + "flags": 3, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "GROUP BY", + "value": "GROUP BY", + "keyword": "GROUP BY", + "type": 1, + "flags": 7, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": 0, + "flags": 0, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "b", + "value": "b", + "keyword": null, + "type": 0, + "flags": 0, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "c", + "value": "c", + "keyword": null, + "type": 0, + "flags": 0, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 83 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 90 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "city_id", + "value": "city_id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 91 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "<", + "value": "<", + "keyword": null, + "type": 2, + "flags": 2, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "0", + "value": 0, + "keyword": null, + "type": 6, + "flags": 0, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 40, + "idx": 40 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "address", + "column": null, + "expr": "address", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "type": "FORCE", + "indexOrKey": "INDEX", + "for": null, + "indexes": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "(idx_fk_city_id)", + "alias": null, + "function": null, + "subquery": null + } + ] + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "type": "IGNORE", + "indexOrKey": "KEY", + "for": "GROUP BY", + "indexes": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "(a, b,c)", + "alias": null, + "function": null, + "subquery": null + } + ] + } + ], + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [ + "city_id" + ], + "isOperator": false, + "expr": "city_id<0" + } + ], + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 37 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectIndexHint2.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectIndexHint2.in new file mode 100644 index 0000000000..2022a163b8 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectIndexHint2.in @@ -0,0 +1 @@ +SELECT * FROM address USE INDEX (idx_fk_city_id) FORCE KEY FOR GROUP BY (a, b,c) WHERE city_id<0 \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectIndexHint2.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectIndexHint2.out new file mode 100644 index 0000000000..2b7b7a3043 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectIndexHint2.out @@ -0,0 +1,1014 @@ +{ + "query": "SELECT * FROM address USE INDEX (idx_fk_city_id) FORCE KEY FOR GROUP BY (a, b,c) WHERE city_id<0", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SELECT * FROM address USE INDEX (idx_fk_city_id) FORCE KEY FOR GROUP BY (a, b,c) WHERE city_id<0", + "len": 97, + "last": 97, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "address", + "value": "address", + "keyword": null, + "type": 0, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "USE", + "value": "USE", + "keyword": "USE", + "type": 1, + "flags": 3, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INDEX", + "value": "INDEX", + "keyword": "INDEX", + "type": 1, + "flags": 19, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "idx_fk_city_id", + "value": "idx_fk_city_id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FORCE", + "value": "FORCE", + "keyword": "FORCE", + "type": 1, + "flags": 3, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "KEY", + "value": "KEY", + "keyword": "KEY", + "type": 1, + "flags": 19, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FOR", + "value": "FOR", + "keyword": "FOR", + "type": 1, + "flags": 3, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "GROUP BY", + "value": "GROUP BY", + "keyword": "GROUP BY", + "type": 1, + "flags": 7, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": 0, + "flags": 0, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "b", + "value": "b", + "keyword": null, + "type": 0, + "flags": 0, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "c", + "value": "c", + "keyword": null, + "type": 0, + "flags": 0, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "city_id", + "value": "city_id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "<", + "value": "<", + "keyword": null, + "type": 2, + "flags": 2, + "position": 95 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "0", + "value": 0, + "keyword": null, + "type": 6, + "flags": 0, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 39, + "idx": 39 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "address", + "column": null, + "expr": "address", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "type": "USE", + "indexOrKey": "INDEX", + "for": null, + "indexes": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "(idx_fk_city_id)", + "alias": null, + "function": null, + "subquery": null + } + ] + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "type": "FORCE", + "indexOrKey": "KEY", + "for": "GROUP BY", + "indexes": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "(a, b,c)", + "alias": null, + "function": null, + "subquery": null + } + ] + } + ], + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [ + "city_id" + ], + "isOperator": false, + "expr": "city_id<0" + } + ], + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 37 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectIndexHintErr1.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectIndexHintErr1.in new file mode 100644 index 0000000000..160e22fd84 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectIndexHintErr1.in @@ -0,0 +1 @@ +SELECT * FROM address FORCE INT (idx_fk_city_id); \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectIndexHintErr1.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectIndexHintErr1.out new file mode 100644 index 0000000000..a7bca9439d --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectIndexHintErr1.out @@ -0,0 +1,756 @@ +{ + "query": "SELECT * FROM address FORCE INT (idx_fk_city_id);", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SELECT * FROM address FORCE INT (idx_fk_city_id);", + "len": 49, + "last": 49, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "address", + "value": "address", + "keyword": null, + "type": 0, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FORCE", + "value": "FORCE", + "keyword": "FORCE", + "type": 1, + "flags": 3, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INT", + "value": "INT", + "keyword": "INT", + "type": 1, + "flags": 11, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "idx_fk_city_id", + "value": "idx_fk_city_id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 17, + "idx": 17 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "address", + "column": null, + "expr": "address", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "type": "FORCE", + "indexOrKey": null, + "for": null, + "indexes": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "(idx_fk_city_id)", + "alias": null, + "function": null, + "subquery": null + } + ] + } + ], + "partition": null, + "where": null, + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 14 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected keyword.", + { + "@type": "@12" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectIndexHintErr2.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectIndexHintErr2.in new file mode 100644 index 0000000000..bb5a7a556e --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectIndexHintErr2.in @@ -0,0 +1 @@ +SELECT * FROM address FORCE abc (idx_fk_city_id); \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectIndexHintErr2.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectIndexHintErr2.out new file mode 100644 index 0000000000..04cfd36253 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectIndexHintErr2.out @@ -0,0 +1,745 @@ +{ + "query": "SELECT * FROM address FORCE abc (idx_fk_city_id);", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SELECT * FROM address FORCE abc (idx_fk_city_id);", + "len": 49, + "last": 49, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "address", + "value": "address", + "keyword": null, + "type": 0, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FORCE", + "value": "FORCE", + "keyword": "FORCE", + "type": 1, + "flags": 3, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "abc", + "value": "abc", + "keyword": null, + "type": 0, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "idx_fk_city_id", + "value": "idx_fk_city_id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 17, + "idx": 17 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "address", + "column": null, + "expr": "address", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": [], + "partition": null, + "where": null, + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 14 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected token.", + { + "@type": "@12" + }, + 0 + ], + [ + "Unexpected token.", + { + "@type": "@14" + }, + 0 + ], + [ + "Unexpected token.", + { + "@type": "@15" + }, + 0 + ], + [ + "Unexpected token.", + { + "@type": "@16" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectIndexHintErr3.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectIndexHintErr3.in new file mode 100644 index 0000000000..c310c7e572 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectIndexHintErr3.in @@ -0,0 +1 @@ +SELECT * FROM address FORCE INDEX FOR abc (idx_fk_city_id); \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectIndexHintErr3.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectIndexHintErr3.out new file mode 100644 index 0000000000..3171a3d0ad --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectIndexHintErr3.out @@ -0,0 +1,781 @@ +{ + "query": "SELECT * FROM address FORCE INDEX FOR abc (idx_fk_city_id);", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SELECT * FROM address FORCE INDEX FOR abc (idx_fk_city_id);", + "len": 59, + "last": 59, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "address", + "value": "address", + "keyword": null, + "type": 0, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FORCE", + "value": "FORCE", + "keyword": "FORCE", + "type": 1, + "flags": 3, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INDEX", + "value": "INDEX", + "keyword": "INDEX", + "type": 1, + "flags": 19, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FOR", + "value": "FOR", + "keyword": "FOR", + "type": 1, + "flags": 3, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "abc", + "value": "abc", + "keyword": null, + "type": 0, + "flags": 0, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "idx_fk_city_id", + "value": "idx_fk_city_id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 21, + "idx": 21 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "address", + "column": null, + "expr": "address", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": [], + "partition": null, + "where": null, + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 18 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected token.", + { + "@type": "@16" + }, + 0 + ], + [ + "Unexpected token.", + { + "@type": "@18" + }, + 0 + ], + [ + "Unexpected token.", + { + "@type": "@19" + }, + 0 + ], + [ + "Unexpected token.", + { + "@type": "@20" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectIndexHintErr4.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectIndexHintErr4.in new file mode 100644 index 0000000000..b87acb90aa --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectIndexHintErr4.in @@ -0,0 +1 @@ +SELECT * FROM address FORCE INDEX FOR INT (idx_fk_city_id); \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectIndexHintErr4.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectIndexHintErr4.out new file mode 100644 index 0000000000..2bb3acc69c --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectIndexHintErr4.out @@ -0,0 +1,792 @@ +{ + "query": "SELECT * FROM address FORCE INDEX FOR INT (idx_fk_city_id);", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SELECT * FROM address FORCE INDEX FOR INT (idx_fk_city_id);", + "len": 59, + "last": 59, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "address", + "value": "address", + "keyword": null, + "type": 0, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FORCE", + "value": "FORCE", + "keyword": "FORCE", + "type": 1, + "flags": 3, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INDEX", + "value": "INDEX", + "keyword": "INDEX", + "type": 1, + "flags": 19, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FOR", + "value": "FOR", + "keyword": "FOR", + "type": 1, + "flags": 3, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INT", + "value": "INT", + "keyword": "INT", + "type": 1, + "flags": 11, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "idx_fk_city_id", + "value": "idx_fk_city_id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 21, + "idx": 21 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "address", + "column": null, + "expr": "address", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "type": "FORCE", + "indexOrKey": "INDEX", + "for": null, + "indexes": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "(idx_fk_city_id)", + "alias": null, + "function": null, + "subquery": null + } + ] + } + ], + "partition": null, + "where": null, + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 18 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected keyword.", + { + "@type": "@16" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectIntoOptions1.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectIntoOptions1.in new file mode 100644 index 0000000000..bae8e59bb6 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectIntoOptions1.in @@ -0,0 +1,4 @@ +SELECT a,b,a+b INTO OUTFILE '/tmp/result.txt' + FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' + LINES TERMINATED BY '\n' + FROM test_table; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectIntoOptions1.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectIntoOptions1.out new file mode 100644 index 0000000000..02f0026c30 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectIntoOptions1.out @@ -0,0 +1,1087 @@ +{ + "query": "SELECT a,b,a+b INTO OUTFILE '\/tmp\/result.txt'\n FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\\\"'\n LINES TERMINATED BY '\\n'\n FROM test_table;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SELECT a,b,a+b INTO OUTFILE '\/tmp\/result.txt'\n FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\\\"'\n LINES TERMINATED BY '\\n'\n FROM test_table;", + "len": 152, + "last": 152, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": 0, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "b", + "value": "b", + "keyword": null, + "type": 0, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": 0, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "+", + "value": "+", + "keyword": null, + "type": 2, + "flags": 1, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "b", + "value": "b", + "keyword": null, + "type": 0, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": 1, + "flags": 3, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "OUTFILE", + "value": "OUTFILE", + "keyword": "OUTFILE", + "type": 1, + "flags": 3, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'\/tmp\/result.txt'", + "value": "\/tmp\/result.txt", + "keyword": null, + "type": 7, + "flags": 1, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FIELDS", + "value": "FIELDS", + "keyword": "FIELDS", + "type": 1, + "flags": 1, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TERMINATED BY", + "value": "TERMINATED BY", + "keyword": "TERMINATED BY", + "type": 1, + "flags": 7, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "','", + "value": ",", + "keyword": null, + "type": 7, + "flags": 1, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "OPTIONALLY", + "value": "OPTIONALLY", + "keyword": "OPTIONALLY", + "type": 1, + "flags": 3, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ENCLOSED BY", + "value": "ENCLOSED BY", + "keyword": "ENCLOSED BY", + "type": 1, + "flags": 7, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 97 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'\\\"'", + "value": "\"", + "keyword": null, + "type": 7, + "flags": 1, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 102 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LINES", + "value": "LINES", + "keyword": "LINES", + "type": 1, + "flags": 3, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TERMINATED BY", + "value": "TERMINATED BY", + "keyword": "TERMINATED BY", + "type": 1, + "flags": 7, + "position": 113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 126 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'\\n'", + "value": "\n", + "keyword": null, + "type": 7, + "flags": 1, + "position": 127 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 131 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 136 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 140 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "test_table", + "value": "test_table", + "keyword": null, + "type": 0, + "flags": 0, + "position": 141 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 151 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 39, + "idx": 39 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "a", + "expr": "a", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "b", + "expr": "b", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "a", + "expr": "a+b", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "test_table", + "column": null, + "expr": "test_table", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": null, + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "FIELDS_OPTIONS": { + "TERMINATED BY": [ + 1, + "expr" + ], + "OPTIONALLY": 2, + "ENCLOSED BY": [ + 3, + "expr" + ], + "ESCAPED BY": [ + 4, + "expr" + ] + }, + "LINES_OPTIONS": { + "STARTING BY": [ + 1, + "expr" + ], + "TERMINATED BY": [ + 2, + "expr" + ] + }, + "type": "OUTFILE", + "dest": "\/tmp\/result.txt", + "columns": null, + "values": null, + "fields_options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "TERMINATED BY", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": ",", + "expr": "','", + "alias": null, + "function": null, + "subquery": null + }, + "value": "','" + }, + "2": "OPTIONALLY", + "3": { + "name": "ENCLOSED BY", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "\"", + "expr": "'\\\"'", + "alias": null, + "function": null, + "subquery": null + }, + "value": "'\\\"'" + } + } + }, + "fields_keyword": true, + "lines_options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": { + "name": "TERMINATED BY", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "\n", + "expr": "'\\n'", + "alias": null, + "function": null, + "subquery": null + }, + "value": "'\\n'" + } + } + } + }, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 36 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectIntoOptions2.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectIntoOptions2.in new file mode 100644 index 0000000000..3ab31bd26b --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectIntoOptions2.in @@ -0,0 +1,4 @@ +SELECT a,b,a+b INTO OUTFILE '/tmp/result.txt' + COLUMNS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' + LINES TERMINATED BY '\n' + FROM test_table; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectIntoOptions2.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectIntoOptions2.out new file mode 100644 index 0000000000..23de3ad968 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectIntoOptions2.out @@ -0,0 +1,1087 @@ +{ + "query": "SELECT a,b,a+b INTO OUTFILE '\/tmp\/result.txt'\n COLUMNS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\\\"'\n LINES TERMINATED BY '\\n'\n FROM test_table;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SELECT a,b,a+b INTO OUTFILE '\/tmp\/result.txt'\n COLUMNS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\\\"'\n LINES TERMINATED BY '\\n'\n FROM test_table;", + "len": 153, + "last": 153, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": 0, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "b", + "value": "b", + "keyword": null, + "type": 0, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": 0, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "+", + "value": "+", + "keyword": null, + "type": 2, + "flags": 1, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "b", + "value": "b", + "keyword": null, + "type": 0, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": 1, + "flags": 3, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "OUTFILE", + "value": "OUTFILE", + "keyword": "OUTFILE", + "type": 1, + "flags": 3, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'\/tmp\/result.txt'", + "value": "\/tmp\/result.txt", + "keyword": null, + "type": 7, + "flags": 1, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COLUMNS", + "value": "COLUMNS", + "keyword": "COLUMNS", + "type": 1, + "flags": 1, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TERMINATED BY", + "value": "TERMINATED BY", + "keyword": "TERMINATED BY", + "type": 1, + "flags": 7, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "','", + "value": ",", + "keyword": null, + "type": 7, + "flags": 1, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "OPTIONALLY", + "value": "OPTIONALLY", + "keyword": "OPTIONALLY", + "type": 1, + "flags": 3, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ENCLOSED BY", + "value": "ENCLOSED BY", + "keyword": "ENCLOSED BY", + "type": 1, + "flags": 7, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'\\\"'", + "value": "\"", + "keyword": null, + "type": 7, + "flags": 1, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 103 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LINES", + "value": "LINES", + "keyword": "LINES", + "type": 1, + "flags": 3, + "position": 108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TERMINATED BY", + "value": "TERMINATED BY", + "keyword": "TERMINATED BY", + "type": 1, + "flags": 7, + "position": 114 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 127 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'\\n'", + "value": "\n", + "keyword": null, + "type": 7, + "flags": 1, + "position": 128 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 132 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 137 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 141 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "test_table", + "value": "test_table", + "keyword": null, + "type": 0, + "flags": 0, + "position": 142 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 152 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 39, + "idx": 39 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "a", + "expr": "a", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "b", + "expr": "b", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "a", + "expr": "a+b", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "test_table", + "column": null, + "expr": "test_table", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": null, + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "FIELDS_OPTIONS": { + "TERMINATED BY": [ + 1, + "expr" + ], + "OPTIONALLY": 2, + "ENCLOSED BY": [ + 3, + "expr" + ], + "ESCAPED BY": [ + 4, + "expr" + ] + }, + "LINES_OPTIONS": { + "STARTING BY": [ + 1, + "expr" + ], + "TERMINATED BY": [ + 2, + "expr" + ] + }, + "type": "OUTFILE", + "dest": "\/tmp\/result.txt", + "columns": null, + "values": null, + "fields_options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "TERMINATED BY", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": ",", + "expr": "','", + "alias": null, + "function": null, + "subquery": null + }, + "value": "','" + }, + "2": "OPTIONALLY", + "3": { + "name": "ENCLOSED BY", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "\"", + "expr": "'\\\"'", + "alias": null, + "function": null, + "subquery": null + }, + "value": "'\\\"'" + } + } + }, + "fields_keyword": false, + "lines_options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "2": { + "name": "TERMINATED BY", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "\n", + "expr": "'\\n'", + "alias": null, + "function": null, + "subquery": null + }, + "value": "'\\n'" + } + } + } + }, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 36 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectIntoOptions3.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectIntoOptions3.in new file mode 100644 index 0000000000..45a7e974b2 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectIntoOptions3.in @@ -0,0 +1,3 @@ +SELECT a,b,a+b INTO OUTFILE '/tmp/result.txt' + COLUMNS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\"' + FROM test_table; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectIntoOptions3.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectIntoOptions3.out new file mode 100644 index 0000000000..53b7e81061 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectIntoOptions3.out @@ -0,0 +1,1001 @@ +{ + "query": "SELECT a,b,a+b INTO OUTFILE '\/tmp\/result.txt'\n COLUMNS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\\\"'\n FROM test_table;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SELECT a,b,a+b INTO OUTFILE '\/tmp\/result.txt'\n COLUMNS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '\\\"'\n FROM test_table;", + "len": 124, + "last": 124, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": 0, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "b", + "value": "b", + "keyword": null, + "type": 0, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": 0, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "+", + "value": "+", + "keyword": null, + "type": 2, + "flags": 1, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "b", + "value": "b", + "keyword": null, + "type": 0, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INTO", + "value": "INTO", + "keyword": "INTO", + "type": 1, + "flags": 3, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "OUTFILE", + "value": "OUTFILE", + "keyword": "OUTFILE", + "type": 1, + "flags": 3, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'\/tmp\/result.txt'", + "value": "\/tmp\/result.txt", + "keyword": null, + "type": 7, + "flags": 1, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COLUMNS", + "value": "COLUMNS", + "keyword": "COLUMNS", + "type": 1, + "flags": 1, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TERMINATED BY", + "value": "TERMINATED BY", + "keyword": "TERMINATED BY", + "type": 1, + "flags": 7, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "','", + "value": ",", + "keyword": null, + "type": 7, + "flags": 1, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "OPTIONALLY", + "value": "OPTIONALLY", + "keyword": "OPTIONALLY", + "type": 1, + "flags": 3, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ENCLOSED BY", + "value": "ENCLOSED BY", + "keyword": "ENCLOSED BY", + "type": 1, + "flags": 7, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'\\\"'", + "value": "\"", + "keyword": null, + "type": 7, + "flags": 1, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 103 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "test_table", + "value": "test_table", + "keyword": null, + "type": 0, + "flags": 0, + "position": 113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 123 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 33, + "idx": 33 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "a", + "expr": "a", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "b", + "expr": "b", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "a", + "expr": "a+b", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "test_table", + "column": null, + "expr": "test_table", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": null, + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "FIELDS_OPTIONS": { + "TERMINATED BY": [ + 1, + "expr" + ], + "OPTIONALLY": 2, + "ENCLOSED BY": [ + 3, + "expr" + ], + "ESCAPED BY": [ + 4, + "expr" + ] + }, + "LINES_OPTIONS": { + "STARTING BY": [ + 1, + "expr" + ], + "TERMINATED BY": [ + 2, + "expr" + ] + }, + "type": "OUTFILE", + "dest": "\/tmp\/result.txt", + "columns": null, + "values": null, + "fields_options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "TERMINATED BY", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": ",", + "expr": "','", + "alias": null, + "function": null, + "subquery": null + }, + "value": "','" + }, + "2": "OPTIONALLY", + "3": { + "name": "ENCLOSED BY", + "equals": false, + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "\"", + "expr": "'\\\"'", + "alias": null, + "function": null, + "subquery": null + }, + "value": "'\\\"'" + } + } + }, + "fields_keyword": false, + "lines_options": null + }, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 30 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectJoinCross.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectJoinCross.in new file mode 100644 index 0000000000..31b4feb239 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectJoinCross.in @@ -0,0 +1,4 @@ +SELECT table112.id,table112.bval1,table112.bval2, +table111.id,table111.aval1 +FROM table112 +CROSS JOIN table111 \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectJoinCross.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectJoinCross.out new file mode 100644 index 0000000000..6686a557ab --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectJoinCross.out @@ -0,0 +1,981 @@ +{ + "query": "SELECT table112.id,table112.bval1,table112.bval2,\ntable111.id,table111.aval1\nFROM table112\nCROSS JOIN table111", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SELECT table112.id,table112.bval1,table112.bval2,\ntable111.id,table111.aval1\nFROM table112\nCROSS JOIN table111", + "len": 110, + "last": 110, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table112", + "value": "table112", + "keyword": null, + "type": 0, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table112", + "value": "table112", + "keyword": null, + "type": 0, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "bval1", + "value": "bval1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table112", + "value": "table112", + "keyword": null, + "type": 0, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "bval2", + "value": "bval2", + "keyword": null, + "type": 0, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table111", + "value": "table111", + "keyword": null, + "type": 0, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table111", + "value": "table111", + "keyword": null, + "type": 0, + "flags": 0, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "aval1", + "value": "aval1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table112", + "value": "table112", + "keyword": null, + "type": 0, + "flags": 0, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 90 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CROSS JOIN", + "value": "CROSS JOIN", + "keyword": "CROSS JOIN", + "type": 1, + "flags": 7, + "position": 91 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 101 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table111", + "value": "table111", + "keyword": null, + "type": 0, + "flags": 0, + "position": 102 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 31, + "idx": 31 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "table112", + "column": "id", + "expr": "table112.id", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "table112", + "column": "bval1", + "expr": "table112.bval1", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "table112", + "column": "bval2", + "expr": "table112.bval2", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "table111", + "column": "id", + "expr": "table111.id", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "table111", + "column": "aval1", + "expr": "table111.aval1", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "table112", + "column": null, + "expr": "table112", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": null, + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "JOINS": { + "CROSS JOIN": "CROSS", + "FULL JOIN": "FULL", + "FULL OUTER JOIN": "FULL", + "INNER JOIN": "INNER", + "JOIN": "JOIN", + "LEFT JOIN": "LEFT", + "LEFT OUTER JOIN": "LEFT", + "RIGHT JOIN": "RIGHT", + "RIGHT OUTER JOIN": "RIGHT", + "NATURAL JOIN": "NATURAL", + "NATURAL LEFT JOIN": "NATURAL LEFT", + "NATURAL RIGHT JOIN": "NATURAL RIGHT", + "NATURAL LEFT OUTER JOIN": "NATURAL LEFT OUTER", + "NATURAL RIGHT OUTER JOIN": "NATURAL RIGHT OUTER", + "STRAIGHT_JOIN": "STRAIGHT" + }, + "type": "CROSS", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "table111", + "column": null, + "expr": "table111", + "alias": null, + "function": null, + "subquery": null + }, + "on": null, + "using": null + } + ], + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 29 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectJoinMultiple.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectJoinMultiple.in new file mode 100644 index 0000000000..39af387da9 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectJoinMultiple.in @@ -0,0 +1,2 @@ +SELECT * FROM Orders NATURAL JOIN Items_Orders NATURAL JOIN Items +WHERE customer= 'username' \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectJoinMultiple.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectJoinMultiple.out new file mode 100644 index 0000000000..13172286c7 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectJoinMultiple.out @@ -0,0 +1,901 @@ +{ + "query": "SELECT * FROM Orders NATURAL JOIN Items_Orders NATURAL JOIN Items\nWHERE customer= 'username'", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SELECT * FROM Orders NATURAL JOIN Items_Orders NATURAL JOIN Items\nWHERE customer= 'username'", + "len": 92, + "last": 92, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "Orders", + "value": "Orders", + "keyword": null, + "type": 0, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NATURAL JOIN", + "value": "NATURAL JOIN", + "keyword": "NATURAL JOIN", + "type": 1, + "flags": 7, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "Items_Orders", + "value": "Items_Orders", + "keyword": null, + "type": 0, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NATURAL JOIN", + "value": "NATURAL JOIN", + "keyword": "NATURAL JOIN", + "type": 1, + "flags": 7, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "Items", + "value": "Items", + "keyword": null, + "type": 0, + "flags": 0, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "customer", + "value": "customer", + "keyword": null, + "type": 0, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'username'", + "value": "username", + "keyword": null, + "type": 7, + "flags": 1, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 23, + "idx": 23 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "Orders", + "column": null, + "expr": "Orders", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [ + "customer", + "username" + ], + "isOperator": false, + "expr": "customer= 'username'" + } + ], + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "JOINS": { + "CROSS JOIN": "CROSS", + "FULL JOIN": "FULL", + "FULL OUTER JOIN": "FULL", + "INNER JOIN": "INNER", + "JOIN": "JOIN", + "LEFT JOIN": "LEFT", + "LEFT OUTER JOIN": "LEFT", + "RIGHT JOIN": "RIGHT", + "RIGHT OUTER JOIN": "RIGHT", + "NATURAL JOIN": "NATURAL", + "NATURAL LEFT JOIN": "NATURAL LEFT", + "NATURAL RIGHT JOIN": "NATURAL RIGHT", + "NATURAL LEFT OUTER JOIN": "NATURAL LEFT OUTER", + "NATURAL RIGHT OUTER JOIN": "NATURAL RIGHT OUTER", + "STRAIGHT_JOIN": "STRAIGHT" + }, + "type": "NATURAL", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "Items_Orders", + "column": null, + "expr": "Items_Orders", + "alias": null, + "function": null, + "subquery": null + }, + "on": null, + "using": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "JOINS": { + "CROSS JOIN": "CROSS", + "FULL JOIN": "FULL", + "FULL OUTER JOIN": "FULL", + "INNER JOIN": "INNER", + "JOIN": "JOIN", + "LEFT JOIN": "LEFT", + "LEFT OUTER JOIN": "LEFT", + "RIGHT JOIN": "RIGHT", + "RIGHT OUTER JOIN": "RIGHT", + "NATURAL JOIN": "NATURAL", + "NATURAL LEFT JOIN": "NATURAL LEFT", + "NATURAL RIGHT JOIN": "NATURAL RIGHT", + "NATURAL LEFT OUTER JOIN": "NATURAL LEFT OUTER", + "NATURAL RIGHT OUTER JOIN": "NATURAL RIGHT OUTER", + "STRAIGHT_JOIN": "STRAIGHT" + }, + "type": "NATURAL", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "Items", + "column": null, + "expr": "Items", + "alias": null, + "function": null, + "subquery": null + }, + "on": null, + "using": null + } + ], + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 21 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectJoinMultiple2.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectJoinMultiple2.in new file mode 100644 index 0000000000..e5fa659f49 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectJoinMultiple2.in @@ -0,0 +1,3 @@ +SELECT * FROM orders +NATURAL JOIN Items_Orders LEFT JOIN items on orders.item_id = items.id +WHERE customer= 'username' \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectJoinMultiple2.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectJoinMultiple2.out new file mode 100644 index 0000000000..0e21272eba --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectJoinMultiple2.out @@ -0,0 +1,1049 @@ +{ + "query": "SELECT * FROM orders\nNATURAL JOIN Items_Orders LEFT JOIN items on orders.item_id = items.id\nWHERE customer= 'username'", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SELECT * FROM orders\nNATURAL JOIN Items_Orders LEFT JOIN items on orders.item_id = items.id\nWHERE customer= 'username'", + "len": 118, + "last": 118, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "orders", + "value": "orders", + "keyword": null, + "type": 0, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NATURAL JOIN", + "value": "NATURAL JOIN", + "keyword": "NATURAL JOIN", + "type": 1, + "flags": 7, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "Items_Orders", + "value": "Items_Orders", + "keyword": null, + "type": 0, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LEFT JOIN", + "value": "LEFT JOIN", + "keyword": "LEFT JOIN", + "type": 1, + "flags": 7, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "items", + "value": "items", + "keyword": null, + "type": 0, + "flags": 0, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "on", + "value": "ON", + "keyword": "ON", + "type": 1, + "flags": 3, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "orders", + "value": "orders", + "keyword": null, + "type": 0, + "flags": 0, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "item_id", + "value": "item_id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "items", + "value": "items", + "keyword": null, + "type": 0, + "flags": 0, + "position": 83 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 91 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 97 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "customer", + "value": "customer", + "keyword": null, + "type": 0, + "flags": 0, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 106 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'username'", + "value": "username", + "keyword": null, + "type": 7, + "flags": 1, + "position": 108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 35, + "idx": 35 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "orders", + "column": null, + "expr": "orders", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [ + "customer", + "username" + ], + "isOperator": false, + "expr": "customer= 'username'" + } + ], + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "JOINS": { + "CROSS JOIN": "CROSS", + "FULL JOIN": "FULL", + "FULL OUTER JOIN": "FULL", + "INNER JOIN": "INNER", + "JOIN": "JOIN", + "LEFT JOIN": "LEFT", + "LEFT OUTER JOIN": "LEFT", + "RIGHT JOIN": "RIGHT", + "RIGHT OUTER JOIN": "RIGHT", + "NATURAL JOIN": "NATURAL", + "NATURAL LEFT JOIN": "NATURAL LEFT", + "NATURAL RIGHT JOIN": "NATURAL RIGHT", + "NATURAL LEFT OUTER JOIN": "NATURAL LEFT OUTER", + "NATURAL RIGHT OUTER JOIN": "NATURAL RIGHT OUTER", + "STRAIGHT_JOIN": "STRAIGHT" + }, + "type": "NATURAL", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "Items_Orders", + "column": null, + "expr": "Items_Orders", + "alias": null, + "function": null, + "subquery": null + }, + "on": null, + "using": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "JOINS": { + "CROSS JOIN": "CROSS", + "FULL JOIN": "FULL", + "FULL OUTER JOIN": "FULL", + "INNER JOIN": "INNER", + "JOIN": "JOIN", + "LEFT JOIN": "LEFT", + "LEFT OUTER JOIN": "LEFT", + "RIGHT JOIN": "RIGHT", + "RIGHT OUTER JOIN": "RIGHT", + "NATURAL JOIN": "NATURAL", + "NATURAL LEFT JOIN": "NATURAL LEFT", + "NATURAL RIGHT JOIN": "NATURAL RIGHT", + "NATURAL LEFT OUTER JOIN": "NATURAL LEFT OUTER", + "NATURAL RIGHT OUTER JOIN": "NATURAL RIGHT OUTER", + "STRAIGHT_JOIN": "STRAIGHT" + }, + "type": "LEFT", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "items", + "column": null, + "expr": "items", + "alias": null, + "function": null, + "subquery": null + }, + "on": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [ + "orders", + "item_id", + "items", + "id" + ], + "isOperator": false, + "expr": "orders.item_id = items.id" + } + ], + "using": null + } + ], + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 33 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectJoinNatural.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectJoinNatural.in new file mode 100644 index 0000000000..606842d803 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectJoinNatural.in @@ -0,0 +1,3 @@ +SELECT id,aval1,cval1 +FROM table111 +NATURAL JOIN table113 \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectJoinNatural.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectJoinNatural.out new file mode 100644 index 0000000000..6bf8b30e32 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectJoinNatural.out @@ -0,0 +1,800 @@ +{ + "query": "SELECT id,aval1,cval1\nFROM table111\nNATURAL JOIN table113", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SELECT id,aval1,cval1\nFROM table111\nNATURAL JOIN table113", + "len": 57, + "last": 57, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "aval1", + "value": "aval1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "cval1", + "value": "cval1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table111", + "value": "table111", + "keyword": null, + "type": 0, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NATURAL JOIN", + "value": "NATURAL JOIN", + "keyword": "NATURAL JOIN", + "type": 1, + "flags": 7, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table113", + "value": "table113", + "keyword": null, + "type": 0, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 16, + "idx": 16 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "id", + "expr": "id", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "aval1", + "expr": "aval1", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "cval1", + "expr": "cval1", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "table111", + "column": null, + "expr": "table111", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": null, + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "JOINS": { + "CROSS JOIN": "CROSS", + "FULL JOIN": "FULL", + "FULL OUTER JOIN": "FULL", + "INNER JOIN": "INNER", + "JOIN": "JOIN", + "LEFT JOIN": "LEFT", + "LEFT OUTER JOIN": "LEFT", + "RIGHT JOIN": "RIGHT", + "RIGHT OUTER JOIN": "RIGHT", + "NATURAL JOIN": "NATURAL", + "NATURAL LEFT JOIN": "NATURAL LEFT", + "NATURAL RIGHT JOIN": "NATURAL RIGHT", + "NATURAL LEFT OUTER JOIN": "NATURAL LEFT OUTER", + "NATURAL RIGHT OUTER JOIN": "NATURAL RIGHT OUTER", + "STRAIGHT_JOIN": "STRAIGHT" + }, + "type": "NATURAL", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "table113", + "column": null, + "expr": "table113", + "alias": null, + "function": null, + "subquery": null + }, + "on": null, + "using": null + } + ], + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 14 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectJoinNaturalLeft.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectJoinNaturalLeft.in new file mode 100644 index 0000000000..bc99f6bba9 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectJoinNaturalLeft.in @@ -0,0 +1,3 @@ +SELECT C.First_Name, C.Last_Name, O.title +FROM Employee as C +NATURAL LEFT JOIN JOb as O; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectJoinNaturalLeft.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectJoinNaturalLeft.out new file mode 100644 index 0000000000..3121090faf --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectJoinNaturalLeft.out @@ -0,0 +1,953 @@ +{ + "query": "SELECT C.First_Name, C.Last_Name, O.title\nFROM Employee as C\nNATURAL LEFT JOIN JOb as O;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SELECT C.First_Name, C.Last_Name, O.title\nFROM Employee as C\nNATURAL LEFT JOIN JOb as O;", + "len": 88, + "last": 88, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "C", + "value": "C", + "keyword": null, + "type": 0, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "First_Name", + "value": "First_Name", + "keyword": null, + "type": 0, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "C", + "value": "C", + "keyword": null, + "type": 0, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "Last_Name", + "value": "Last_Name", + "keyword": null, + "type": 0, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "O", + "value": "O", + "keyword": null, + "type": 0, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "title", + "value": "title", + "keyword": null, + "type": 0, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "Employee", + "value": "Employee", + "keyword": null, + "type": 0, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "C", + "value": "C", + "keyword": null, + "type": 0, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NATURAL LEFT JOIN", + "value": "NATURAL LEFT JOIN", + "keyword": "NATURAL LEFT JOIN", + "type": 1, + "flags": 7, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 78 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "JOb", + "value": "JOb", + "keyword": null, + "type": 0, + "flags": 0, + "position": 79 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 83 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "O", + "value": "O", + "keyword": null, + "type": 0, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 33, + "idx": 33 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "C", + "column": "First_Name", + "expr": "C.First_Name", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "C", + "column": "Last_Name", + "expr": "C.Last_Name", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "O", + "column": "title", + "expr": "O.title", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "Employee", + "column": null, + "expr": "Employee", + "alias": "C", + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": null, + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "JOINS": { + "CROSS JOIN": "CROSS", + "FULL JOIN": "FULL", + "FULL OUTER JOIN": "FULL", + "INNER JOIN": "INNER", + "JOIN": "JOIN", + "LEFT JOIN": "LEFT", + "LEFT OUTER JOIN": "LEFT", + "RIGHT JOIN": "RIGHT", + "RIGHT OUTER JOIN": "RIGHT", + "NATURAL JOIN": "NATURAL", + "NATURAL LEFT JOIN": "NATURAL LEFT", + "NATURAL RIGHT JOIN": "NATURAL RIGHT", + "NATURAL LEFT OUTER JOIN": "NATURAL LEFT OUTER", + "NATURAL RIGHT OUTER JOIN": "NATURAL RIGHT OUTER", + "STRAIGHT_JOIN": "STRAIGHT" + }, + "type": "NATURAL LEFT", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "JOb", + "column": null, + "expr": "JOb", + "alias": "O", + "function": null, + "subquery": null + }, + "on": null, + "using": null + } + ], + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 30 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectJoinNaturalLeftOuter.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectJoinNaturalLeftOuter.in new file mode 100644 index 0000000000..ab06720dd1 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectJoinNaturalLeftOuter.in @@ -0,0 +1 @@ +SELECT * FROM actor NATURAL LEFT OUTER JOIN film_actor; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectJoinNaturalLeftOuter.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectJoinNaturalLeftOuter.out new file mode 100644 index 0000000000..284936be31 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectJoinNaturalLeftOuter.out @@ -0,0 +1,727 @@ +{ + "query": "SELECT * FROM actor NATURAL LEFT OUTER JOIN film_actor;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SELECT * FROM actor NATURAL LEFT OUTER JOIN film_actor;", + "len": 55, + "last": 55, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "actor", + "value": "actor", + "keyword": null, + "type": 0, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NATURAL LEFT OUTER JOIN", + "value": "NATURAL LEFT OUTER JOIN", + "keyword": "NATURAL LEFT OUTER JOIN", + "type": 1, + "flags": 7, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "film_actor", + "value": "film_actor", + "keyword": null, + "type": 0, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 13, + "idx": 13 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "actor", + "column": null, + "expr": "actor", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": null, + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "JOINS": { + "CROSS JOIN": "CROSS", + "FULL JOIN": "FULL", + "FULL OUTER JOIN": "FULL", + "INNER JOIN": "INNER", + "JOIN": "JOIN", + "LEFT JOIN": "LEFT", + "LEFT OUTER JOIN": "LEFT", + "RIGHT JOIN": "RIGHT", + "RIGHT OUTER JOIN": "RIGHT", + "NATURAL JOIN": "NATURAL", + "NATURAL LEFT JOIN": "NATURAL LEFT", + "NATURAL RIGHT JOIN": "NATURAL RIGHT", + "NATURAL LEFT OUTER JOIN": "NATURAL LEFT OUTER", + "NATURAL RIGHT OUTER JOIN": "NATURAL RIGHT OUTER", + "STRAIGHT_JOIN": "STRAIGHT" + }, + "type": "NATURAL LEFT OUTER", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "film_actor", + "column": null, + "expr": "film_actor", + "alias": null, + "function": null, + "subquery": null + }, + "on": null, + "using": null + } + ], + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 10 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectJoinNaturalRight.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectJoinNaturalRight.in new file mode 100644 index 0000000000..b5e2a9b34d --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectJoinNaturalRight.in @@ -0,0 +1 @@ +SELECT * FROM actor NATURAL RIGHT JOIN film_actor; diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectJoinNaturalRight.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectJoinNaturalRight.out new file mode 100644 index 0000000000..11a469224a --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectJoinNaturalRight.out @@ -0,0 +1,736 @@ +{ + "query": "SELECT * FROM actor NATURAL RIGHT JOIN film_actor;\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SELECT * FROM actor NATURAL RIGHT JOIN film_actor;\n", + "len": 51, + "last": 51, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "actor", + "value": "actor", + "keyword": null, + "type": 0, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NATURAL RIGHT JOIN", + "value": "NATURAL RIGHT JOIN", + "keyword": "NATURAL RIGHT JOIN", + "type": 1, + "flags": 7, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "film_actor", + "value": "film_actor", + "keyword": null, + "type": 0, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 14, + "idx": 14 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "actor", + "column": null, + "expr": "actor", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": null, + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "JOINS": { + "CROSS JOIN": "CROSS", + "FULL JOIN": "FULL", + "FULL OUTER JOIN": "FULL", + "INNER JOIN": "INNER", + "JOIN": "JOIN", + "LEFT JOIN": "LEFT", + "LEFT OUTER JOIN": "LEFT", + "RIGHT JOIN": "RIGHT", + "RIGHT OUTER JOIN": "RIGHT", + "NATURAL JOIN": "NATURAL", + "NATURAL LEFT JOIN": "NATURAL LEFT", + "NATURAL RIGHT JOIN": "NATURAL RIGHT", + "NATURAL LEFT OUTER JOIN": "NATURAL LEFT OUTER", + "NATURAL RIGHT OUTER JOIN": "NATURAL RIGHT OUTER", + "STRAIGHT_JOIN": "STRAIGHT" + }, + "type": "NATURAL RIGHT", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "film_actor", + "column": null, + "expr": "film_actor", + "alias": null, + "function": null, + "subquery": null + }, + "on": null, + "using": null + } + ], + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 10 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectJoinNaturalRightOuter.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectJoinNaturalRightOuter.in new file mode 100644 index 0000000000..0ef197f505 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectJoinNaturalRightOuter.in @@ -0,0 +1 @@ +SELECT * FROM actor NATURAL RIGHT OUTER JOIN film_actor; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectJoinNaturalRightOuter.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectJoinNaturalRightOuter.out new file mode 100644 index 0000000000..c32cc537b9 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectJoinNaturalRightOuter.out @@ -0,0 +1,727 @@ +{ + "query": "SELECT * FROM actor NATURAL RIGHT OUTER JOIN film_actor;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SELECT * FROM actor NATURAL RIGHT OUTER JOIN film_actor;", + "len": 56, + "last": 56, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "actor", + "value": "actor", + "keyword": null, + "type": 0, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NATURAL RIGHT OUTER JOIN", + "value": "NATURAL RIGHT OUTER JOIN", + "keyword": "NATURAL RIGHT OUTER JOIN", + "type": 1, + "flags": 7, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "film_actor", + "value": "film_actor", + "keyword": null, + "type": 0, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 13, + "idx": 13 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "actor", + "column": null, + "expr": "actor", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": null, + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "JOINS": { + "CROSS JOIN": "CROSS", + "FULL JOIN": "FULL", + "FULL OUTER JOIN": "FULL", + "INNER JOIN": "INNER", + "JOIN": "JOIN", + "LEFT JOIN": "LEFT", + "LEFT OUTER JOIN": "LEFT", + "RIGHT JOIN": "RIGHT", + "RIGHT OUTER JOIN": "RIGHT", + "NATURAL JOIN": "NATURAL", + "NATURAL LEFT JOIN": "NATURAL LEFT", + "NATURAL RIGHT JOIN": "NATURAL RIGHT", + "NATURAL LEFT OUTER JOIN": "NATURAL LEFT OUTER", + "NATURAL RIGHT OUTER JOIN": "NATURAL RIGHT OUTER", + "STRAIGHT_JOIN": "STRAIGHT" + }, + "type": "NATURAL RIGHT OUTER", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "film_actor", + "column": null, + "expr": "film_actor", + "alias": null, + "function": null, + "subquery": null + }, + "on": null, + "using": null + } + ], + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 10 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectJoinStraight.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectJoinStraight.in new file mode 100644 index 0000000000..2fd532ea29 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectJoinStraight.in @@ -0,0 +1,3 @@ +SELECT id,aval1,cval1 +FROM table111 +STRAIGHT_JOIN table113 on table111.a = table113.b \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectJoinStraight.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectJoinStraight.out new file mode 100644 index 0000000000..766d217478 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectJoinStraight.out @@ -0,0 +1,948 @@ +{ + "query": "SELECT id,aval1,cval1\nFROM table111\nSTRAIGHT_JOIN table113 on table111.a = table113.b", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SELECT id,aval1,cval1\nFROM table111\nSTRAIGHT_JOIN table113 on table111.a = table113.b", + "len": 85, + "last": 85, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "aval1", + "value": "aval1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "cval1", + "value": "cval1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table111", + "value": "table111", + "keyword": null, + "type": 0, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "STRAIGHT_JOIN", + "value": "STRAIGHT_JOIN", + "keyword": "STRAIGHT_JOIN", + "type": 1, + "flags": 3, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table113", + "value": "table113", + "keyword": null, + "type": 0, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "on", + "value": "ON", + "keyword": "ON", + "type": 1, + "flags": 3, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table111", + "value": "table111", + "keyword": null, + "type": 0, + "flags": 0, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": 0, + "flags": 0, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table113", + "value": "table113", + "keyword": null, + "type": 0, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 83 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "b", + "value": "b", + "keyword": null, + "type": 0, + "flags": 0, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 28, + "idx": 28 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "id", + "expr": "id", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "aval1", + "expr": "aval1", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "cval1", + "expr": "cval1", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "table111", + "column": null, + "expr": "table111", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": null, + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "JOINS": { + "CROSS JOIN": "CROSS", + "FULL JOIN": "FULL", + "FULL OUTER JOIN": "FULL", + "INNER JOIN": "INNER", + "JOIN": "JOIN", + "LEFT JOIN": "LEFT", + "LEFT OUTER JOIN": "LEFT", + "RIGHT JOIN": "RIGHT", + "RIGHT OUTER JOIN": "RIGHT", + "NATURAL JOIN": "NATURAL", + "NATURAL LEFT JOIN": "NATURAL LEFT", + "NATURAL RIGHT JOIN": "NATURAL RIGHT", + "NATURAL LEFT OUTER JOIN": "NATURAL LEFT OUTER", + "NATURAL RIGHT OUTER JOIN": "NATURAL RIGHT OUTER", + "STRAIGHT_JOIN": "STRAIGHT" + }, + "type": "STRAIGHT", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "table113", + "column": null, + "expr": "table113", + "alias": null, + "function": null, + "subquery": null + }, + "on": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [ + "table111", + "a", + "table113", + "b" + ], + "isOperator": false, + "expr": "table111.a = table113.b" + } + ], + "using": null + } + ], + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 26 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectNested.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectNested.in new file mode 100644 index 0000000000..92afa745ff --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectNested.in @@ -0,0 +1 @@ +SELECT (SELECT 'foo') as Bar, (SELECT 'baz') as fOo; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectNested.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectNested.out new file mode 100644 index 0000000000..5c22106e32 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectNested.out @@ -0,0 +1,778 @@ +{ + "query": "SELECT (SELECT 'foo') as Bar, (SELECT 'baz') as fOo;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SELECT (SELECT 'foo') as Bar, (SELECT 'baz') as fOo;", + "len": 52, + "last": 52, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'foo'", + "value": "foo", + "keyword": null, + "type": 7, + "flags": 1, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "Bar", + "value": "Bar", + "keyword": null, + "type": 0, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 29 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'baz'", + "value": "baz", + "keyword": null, + "type": 7, + "flags": 1, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "fOo", + "value": "fOo", + "keyword": null, + "type": 0, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 24, + "idx": 24 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "(SELECT 'foo')", + "alias": "Bar", + "function": null, + "subquery": "SELECT" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "(SELECT 'baz')", + "alias": "fOo", + "function": null, + "subquery": "SELECT" + } + ], + "from": [], + "index_hints": null, + "partition": null, + "where": null, + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 21 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectOrderByComment.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectOrderByComment.in new file mode 100644 index 0000000000..84df8c3f87 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectOrderByComment.in @@ -0,0 +1,3 @@ +SELECT `one space` -- this is the SELECT + FROM `Une table espace` -- this is the FROM + ORDER BY `one space` ASC -- this is the order by \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectOrderByComment.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectOrderByComment.out new file mode 100644 index 0000000000..242759b0ac --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectOrderByComment.out @@ -0,0 +1,771 @@ +{ + "query": "SELECT `one space` -- this is the SELECT\n FROM `Une table espace` -- this is the FROM\n ORDER BY `one space` ASC -- this is the order by", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SELECT `one space` -- this is the SELECT\n FROM `Une table espace` -- this is the FROM\n ORDER BY `one space` ASC -- this is the order by", + "len": 143, + "last": 144, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`one space`", + "value": "one space", + "keyword": null, + "type": 8, + "flags": 2, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-- this is the SELECT", + "value": "-- this is the SELECT", + "keyword": null, + "type": 4, + "flags": 4, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`Une table espace`", + "value": "Une table espace", + "keyword": null, + "type": 8, + "flags": 2, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-- this is the FROM", + "value": "-- this is the FROM", + "keyword": null, + "type": 4, + "flags": 4, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 90 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ORDER BY", + "value": "ORDER BY", + "keyword": "ORDER BY", + "type": 1, + "flags": 7, + "position": 95 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 103 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`one space`", + "value": "one space", + "keyword": null, + "type": 8, + "flags": 2, + "position": 104 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 115 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ASC", + "value": "ASC", + "keyword": "ASC", + "type": 1, + "flags": 3, + "position": 116 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 119 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-- this is the order by", + "value": "-- this is the order by", + "keyword": null, + "type": 4, + "flags": 4, + "position": 120 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 20, + "idx": 20 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "one space", + "expr": "`one space`", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "Une table espace", + "column": null, + "expr": "`Une table espace`", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": null, + "group": null, + "having": null, + "order": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "one space", + "expr": "`one space`", + "alias": null, + "function": null, + "subquery": null + }, + "type": "ASC" + } + ], + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 18 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectOverAlias_mariadb_100600.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectOverAlias_mariadb_100600.in new file mode 100644 index 0000000000..9950d13960 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectOverAlias_mariadb_100600.in @@ -0,0 +1 @@ +select `products`.`pid` AS `pid`, `products`.`pname` as `name`, rank() over( partition by `products`.`pvalue` order by `products`.`pid` desc) AS `myrank` from `products` diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectOverAlias_mariadb_100600.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectOverAlias_mariadb_100600.out new file mode 100644 index 0000000000..6d3d73357f --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectOverAlias_mariadb_100600.out @@ -0,0 +1,1072 @@ +{ + "query": "select `products`.`pid` AS `pid`, `products`.`pname` as `name`, rank() over( partition by `products`.`pvalue` order by `products`.`pid` desc) AS `myrank` from `products` \n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "select `products`.`pid` AS `pid`, `products`.`pname` as `name`, rank() over( partition by `products`.`pvalue` order by `products`.`pid` desc) AS `myrank` from `products` \n", + "len": 171, + "last": 171, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "select", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`products`", + "value": "products", + "keyword": null, + "type": 8, + "flags": 2, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`pid`", + "value": "pid", + "keyword": null, + "type": 8, + "flags": 2, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`pid`", + "value": "pid", + "keyword": null, + "type": 8, + "flags": 2, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`products`", + "value": "products", + "keyword": null, + "type": 8, + "flags": 2, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`pname`", + "value": "pname", + "keyword": null, + "type": 8, + "flags": 2, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "as", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`name`", + "value": "name", + "keyword": null, + "type": 8, + "flags": 2, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "rank", + "value": "rank", + "keyword": null, + "type": 0, + "flags": 0, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "over", + "value": "OVER", + "keyword": "OVER", + "type": 1, + "flags": 3, + "position": 71 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "partition by", + "value": "PARTITION BY", + "keyword": "PARTITION BY", + "type": 1, + "flags": 7, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`products`", + "value": "products", + "keyword": null, + "type": 8, + "flags": 2, + "position": 90 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`pvalue`", + "value": "pvalue", + "keyword": null, + "type": 8, + "flags": 2, + "position": 101 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 109 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "order by", + "value": "ORDER BY", + "keyword": "ORDER BY", + "type": 1, + "flags": 7, + "position": 110 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 118 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`products`", + "value": "products", + "keyword": null, + "type": 8, + "flags": 2, + "position": 119 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 129 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`pid`", + "value": "pid", + "keyword": null, + "type": 8, + "flags": 2, + "position": 130 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 135 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "desc", + "value": "DESC", + "keyword": "DESC", + "type": 1, + "flags": 3, + "position": 136 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 140 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 141 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AS", + "value": "AS", + "keyword": "AS", + "type": 1, + "flags": 3, + "position": 142 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 144 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`myrank`", + "value": "myrank", + "keyword": null, + "type": 8, + "flags": 2, + "position": 145 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 153 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "from", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 154 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 158 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`products`", + "value": "products", + "keyword": null, + "type": 8, + "flags": 2, + "position": 159 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " \n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 169 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 51, + "idx": 51 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1, + "OVER": 2 + }, + "database": null, + "table": "products", + "column": "pid", + "expr": "`products`.`pid`", + "alias": "pid", + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1, + "OVER": 2 + }, + "database": null, + "table": "products", + "column": "pname", + "expr": "`products`.`pname`", + "alias": "name", + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1, + "OVER": 2 + }, + "database": null, + "table": null, + "column": "rank", + "expr": "rank() over( partition by `products`.`pvalue` order by `products`.`pid` desc)", + "alias": "myrank", + "function": "rank", + "subquery": "DESC" + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1, + "OVER": 2 + }, + "database": null, + "table": "products", + "column": null, + "expr": "`products`", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": null, + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 49 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectUnion.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectUnion.in new file mode 100644 index 0000000000..75e673b0b5 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectUnion.in @@ -0,0 +1 @@ +(SELECT a FROM t WHERE a=1) UNION (SELECT a FROM t WHERE a=2) diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectUnion.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectUnion.out new file mode 100644 index 0000000000..fd99c62207 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectUnion.out @@ -0,0 +1,1174 @@ +{ + "query": "(SELECT a FROM t WHERE a=1) UNION (SELECT a FROM t WHERE a=2)\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "(SELECT a FROM t WHERE a=1) UNION (SELECT a FROM t WHERE a=2)\n", + "len": 62, + "last": 62, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 1 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": 0, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t", + "value": "t", + "keyword": null, + "type": 0, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": 0, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNION", + "value": "UNION", + "keyword": "UNION", + "type": 1, + "flags": 3, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": 0, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "t", + "value": "t", + "keyword": null, + "type": 0, + "flags": 0, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "a", + "value": "a", + "keyword": null, + "type": 0, + "flags": 0, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 58 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": 6, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 35, + "idx": 35 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "a", + "expr": "a", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "t", + "column": null, + "expr": "t", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [ + "a" + ], + "isOperator": false, + "expr": "a=1" + } + ], + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [ + [ + "UNION", + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "a", + "expr": "a", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "t", + "column": null, + "expr": "t", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [ + "a" + ], + "isOperator": false, + "expr": "a=2" + } + ], + "group": null, + "having": null, + "order": [], + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 16, + "last": 33 + } + ] + ], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 33 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectUnion2.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectUnion2.in new file mode 100644 index 0000000000..27d838847b --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectUnion2.in @@ -0,0 +1 @@ +(SELECT DISTINCT `User`, `Host` FROM `mysql`.`user` ) UNION (SELECT DISTINCT `User`, `Host` FROM `mysql`.`db` ) UNION (SELECT DISTINCT `User`, `Host` FROM `mysql`.`tables_priv` ) UNION (SELECT DISTINCT `User`, `Host` FROM `mysql`.`columns_priv` ) UNION (SELECT DISTINCT `User`, `Host` FROM `mysql`.`procs_priv` ) ORDER BY `User` ASC, `Host` ASC \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectUnion2.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectUnion2.out new file mode 100644 index 0000000000..c271206532 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectUnion2.out @@ -0,0 +1,2609 @@ +{ + "query": "(SELECT DISTINCT `User`, `Host` FROM `mysql`.`user` ) UNION (SELECT DISTINCT `User`, `Host` FROM `mysql`.`db` ) UNION (SELECT DISTINCT `User`, `Host` FROM `mysql`.`tables_priv` ) UNION (SELECT DISTINCT `User`, `Host` FROM `mysql`.`columns_priv` ) UNION (SELECT DISTINCT `User`, `Host` FROM `mysql`.`procs_priv` ) ORDER BY `User` ASC, `Host` ASC", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "(SELECT DISTINCT `User`, `Host` FROM `mysql`.`user` ) UNION (SELECT DISTINCT `User`, `Host` FROM `mysql`.`db` ) UNION (SELECT DISTINCT `User`, `Host` FROM `mysql`.`tables_priv` ) UNION (SELECT DISTINCT `User`, `Host` FROM `mysql`.`columns_priv` ) UNION (SELECT DISTINCT `User`, `Host` FROM `mysql`.`procs_priv` ) ORDER BY `User` ASC, `Host` ASC", + "len": 344, + "last": 344, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 1 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DISTINCT", + "value": "DISTINCT", + "keyword": "DISTINCT", + "type": 1, + "flags": 3, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`User`", + "value": "User", + "keyword": null, + "type": 8, + "flags": 2, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`Host`", + "value": "Host", + "keyword": null, + "type": 8, + "flags": 2, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`mysql`", + "value": "mysql", + "keyword": null, + "type": 8, + "flags": 2, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`user`", + "value": "user", + "keyword": null, + "type": 8, + "flags": 2, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNION", + "value": "UNION", + "keyword": "UNION", + "type": 1, + "flags": 3, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DISTINCT", + "value": "DISTINCT", + "keyword": "DISTINCT", + "type": 1, + "flags": 3, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`User`", + "value": "User", + "keyword": null, + "type": 8, + "flags": 2, + "position": 77 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 83 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`Host`", + "value": "Host", + "keyword": null, + "type": 8, + "flags": 2, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 91 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`mysql`", + "value": "mysql", + "keyword": null, + "type": 8, + "flags": 2, + "position": 97 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 104 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`db`", + "value": "db", + "keyword": null, + "type": 8, + "flags": 2, + "position": 105 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 109 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 110 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 111 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNION", + "value": "UNION", + "keyword": "UNION", + "type": 1, + "flags": 3, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 117 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 118 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 119 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 125 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DISTINCT", + "value": "DISTINCT", + "keyword": "DISTINCT", + "type": 1, + "flags": 3, + "position": 126 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 134 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`User`", + "value": "User", + "keyword": null, + "type": 8, + "flags": 2, + "position": 135 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 141 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 142 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`Host`", + "value": "Host", + "keyword": null, + "type": 8, + "flags": 2, + "position": 143 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 149 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 150 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 154 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`mysql`", + "value": "mysql", + "keyword": null, + "type": 8, + "flags": 2, + "position": 155 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 162 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`tables_priv`", + "value": "tables_priv", + "keyword": null, + "type": 8, + "flags": 2, + "position": 163 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 176 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 177 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 178 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNION", + "value": "UNION", + "keyword": "UNION", + "type": 1, + "flags": 3, + "position": 179 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 184 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 185 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 186 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 192 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DISTINCT", + "value": "DISTINCT", + "keyword": "DISTINCT", + "type": 1, + "flags": 3, + "position": 193 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 201 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`User`", + "value": "User", + "keyword": null, + "type": 8, + "flags": 2, + "position": 202 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 208 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 209 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`Host`", + "value": "Host", + "keyword": null, + "type": 8, + "flags": 2, + "position": 210 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 216 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 217 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 221 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`mysql`", + "value": "mysql", + "keyword": null, + "type": 8, + "flags": 2, + "position": 222 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 229 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`columns_priv`", + "value": "columns_priv", + "keyword": null, + "type": 8, + "flags": 2, + "position": 230 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 244 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 245 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 246 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNION", + "value": "UNION", + "keyword": "UNION", + "type": 1, + "flags": 3, + "position": 247 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 252 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 253 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 254 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 260 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DISTINCT", + "value": "DISTINCT", + "keyword": "DISTINCT", + "type": 1, + "flags": 3, + "position": 261 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 269 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`User`", + "value": "User", + "keyword": null, + "type": 8, + "flags": 2, + "position": 270 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 276 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 277 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`Host`", + "value": "Host", + "keyword": null, + "type": 8, + "flags": 2, + "position": 278 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 284 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 285 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 289 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`mysql`", + "value": "mysql", + "keyword": null, + "type": 8, + "flags": 2, + "position": 290 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 297 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`procs_priv`", + "value": "procs_priv", + "keyword": null, + "type": 8, + "flags": 2, + "position": 298 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 310 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 311 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 312 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ORDER BY", + "value": "ORDER BY", + "keyword": "ORDER BY", + "type": 1, + "flags": 7, + "position": 313 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 321 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`User`", + "value": "User", + "keyword": null, + "type": 8, + "flags": 2, + "position": 322 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 328 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ASC", + "value": "ASC", + "keyword": "ASC", + "type": 1, + "flags": 3, + "position": 329 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 332 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 333 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`Host`", + "value": "Host", + "keyword": null, + "type": 8, + "flags": 2, + "position": 334 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 340 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ASC", + "value": "ASC", + "keyword": "ASC", + "type": 1, + "flags": 3, + "position": 341 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 109, + "idx": 109 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "User", + "expr": "`User`", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "Host", + "expr": "`Host`", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": "mysql", + "table": "user", + "column": null, + "expr": "`mysql`.`user`", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": null, + "group": null, + "having": null, + "order": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "User", + "expr": "`User`", + "alias": null, + "function": null, + "subquery": null + }, + "type": "ASC" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "Host", + "expr": "`Host`", + "alias": null, + "function": null, + "subquery": null + }, + "type": "ASC" + } + ], + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [ + [ + "UNION", + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "User", + "expr": "`User`", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "Host", + "expr": "`Host`", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": "mysql", + "table": "db", + "column": null, + "expr": "`mysql`.`db`", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": null, + "group": null, + "having": null, + "order": [], + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "DISTINCT" + } + }, + "first": 18, + "last": 37 + } + ], + [ + "UNION", + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "User", + "expr": "`User`", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "Host", + "expr": "`Host`", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": "mysql", + "table": "tables_priv", + "column": null, + "expr": "`mysql`.`tables_priv`", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": null, + "group": null, + "having": null, + "order": [], + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "DISTINCT" + } + }, + "first": 38, + "last": 57 + } + ], + [ + "UNION", + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "User", + "expr": "`User`", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "Host", + "expr": "`Host`", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": "mysql", + "table": "columns_priv", + "column": null, + "expr": "`mysql`.`columns_priv`", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": null, + "group": null, + "having": null, + "order": [], + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "DISTINCT" + } + }, + "first": 58, + "last": 77 + } + ], + [ + "UNION", + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "User", + "expr": "`User`", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "Host", + "expr": "`Host`", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": "mysql", + "table": "procs_priv", + "column": null, + "expr": "`mysql`.`procs_priv`", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": null, + "group": null, + "having": null, + "order": [], + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "DISTINCT" + } + }, + "first": 78, + "last": 107 + } + ] + ], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "DISTINCT" + } + }, + "first": 0, + "last": 107 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectWhere.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectWhere.in new file mode 100644 index 0000000000..6838048daa --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectWhere.in @@ -0,0 +1,15 @@ +SELECT * FROM film WHERE film_id = 10 OR film_id >= 20; +SELECT * FROM film WHERE (film_id < 10) || (film_id > 20); +SELECT * FROM film WHERE `film_id` != 10 AND `film_id` <= 20; +SELECT * FROM film WHERE `film`.`film_id` <> 10 && `film`.`film_id` <= 20; +SELECT * FROM film WHERE film.film_id < 20 XOR film.rating = 'PG-13'; +SELECT * FROM film WHERE /* film_id = */ film_id = 10; +SELECT * FROM film WHERE NOT film_id > 10; +SELECT * FROM film WHERE ! (film_id > 10); +SELECT * FROM film WHERE description IS NULL; +SELECT * FROM film WHERE description IS NOT NULL; +SELECT * FROM film WHERE film_id BETWEEN 10 AND 20; +SELECT * FROM film WHERE film_id NOT BETWEEN 10 AND 20; +SELECT * FROM film WHERE film_id IN (3,5,7); +SELECT * FROM film WHERE rating = UPPER('pg'); +SELECT * FROM film WHERE rating SOUNDS LIKE 'PG'; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectWhere.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectWhere.out new file mode 100644 index 0000000000..90b7e1481f --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectWhere.out @@ -0,0 +1,7553 @@ +{ + "query": "SELECT * FROM film WHERE film_id = 10 OR film_id >= 20;\nSELECT * FROM film WHERE (film_id < 10) || (film_id > 20);\nSELECT * FROM film WHERE `film_id` != 10 AND `film_id` <= 20;\nSELECT * FROM film WHERE `film`.`film_id` <> 10 && `film`.`film_id` <= 20;\nSELECT * FROM film WHERE film.film_id < 20 XOR film.rating = 'PG-13';\nSELECT * FROM film WHERE \/* film_id = *\/ film_id = 10;\nSELECT * FROM film WHERE NOT film_id > 10;\nSELECT * FROM film WHERE ! (film_id > 10);\nSELECT * FROM film WHERE description IS NULL;\nSELECT * FROM film WHERE description IS NOT NULL;\nSELECT * FROM film WHERE film_id BETWEEN 10 AND 20;\nSELECT * FROM film WHERE film_id NOT BETWEEN 10 AND 20;\nSELECT * FROM film WHERE film_id IN (3,5,7);\nSELECT * FROM film WHERE rating = UPPER('pg');\nSELECT * FROM film WHERE rating SOUNDS LIKE 'PG';", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SELECT * FROM film WHERE film_id = 10 OR film_id >= 20;\nSELECT * FROM film WHERE (film_id < 10) || (film_id > 20);\nSELECT * FROM film WHERE `film_id` != 10 AND `film_id` <= 20;\nSELECT * FROM film WHERE `film`.`film_id` <> 10 && `film`.`film_id` <= 20;\nSELECT * FROM film WHERE film.film_id < 20 XOR film.rating = 'PG-13';\nSELECT * FROM film WHERE \/* film_id = *\/ film_id = 10;\nSELECT * FROM film WHERE NOT film_id > 10;\nSELECT * FROM film WHERE ! (film_id > 10);\nSELECT * FROM film WHERE description IS NULL;\nSELECT * FROM film WHERE description IS NOT NULL;\nSELECT * FROM film WHERE film_id BETWEEN 10 AND 20;\nSELECT * FROM film WHERE film_id NOT BETWEEN 10 AND 20;\nSELECT * FROM film WHERE film_id IN (3,5,7);\nSELECT * FROM film WHERE rating = UPPER('pg');\nSELECT * FROM film WHERE rating SOUNDS LIKE 'PG';", + "len": 808, + "last": 808, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "film", + "value": "film", + "keyword": null, + "type": 0, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "film_id", + "value": "film_id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "10", + "value": 10, + "keyword": null, + "type": 6, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "OR", + "value": "OR", + "keyword": "OR", + "type": 1, + "flags": 3, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "film_id", + "value": "film_id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ">=", + "value": ">=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "20", + "value": 20, + "keyword": null, + "type": 6, + "flags": 0, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "film", + "value": "film", + "keyword": null, + "type": 0, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "film_id", + "value": "film_id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "<", + "value": "<", + "keyword": null, + "type": 2, + "flags": 2, + "position": 90 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 91 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "10", + "value": 10, + "keyword": null, + "type": 6, + "flags": 0, + "position": 92 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 95 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "||", + "value": "||", + "keyword": null, + "type": 2, + "flags": 2, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 99 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "film_id", + "value": "film_id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 100 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ">", + "value": ">", + "keyword": null, + "type": 2, + "flags": 2, + "position": 108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 109 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "20", + "value": 20, + "keyword": null, + "type": 6, + "flags": 0, + "position": 110 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 112 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 113 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 114 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 115 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 121 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 122 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 123 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 124 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 128 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "film", + "value": "film", + "keyword": null, + "type": 0, + "flags": 0, + "position": 129 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 133 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 134 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 139 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`film_id`", + "value": "film_id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 140 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 149 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "!=", + "value": "!=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 150 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 152 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "10", + "value": 10, + "keyword": null, + "type": 6, + "flags": 0, + "position": 153 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 155 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AND", + "value": "AND", + "keyword": "AND", + "type": 1, + "flags": 3, + "position": 156 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 159 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`film_id`", + "value": "film_id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 160 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 169 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "<=", + "value": "<=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 170 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 172 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "20", + "value": 20, + "keyword": null, + "type": 6, + "flags": 0, + "position": 173 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 175 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 176 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 177 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 183 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 184 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 185 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 186 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 190 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "film", + "value": "film", + "keyword": null, + "type": 0, + "flags": 0, + "position": 191 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 195 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 196 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 201 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`film`", + "value": "film", + "keyword": null, + "type": 8, + "flags": 2, + "position": 202 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 208 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`film_id`", + "value": "film_id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 209 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 218 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "<>", + "value": "<>", + "keyword": null, + "type": 2, + "flags": 2, + "position": 219 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 221 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "10", + "value": 10, + "keyword": null, + "type": 6, + "flags": 0, + "position": 222 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 224 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "&&", + "value": "&&", + "keyword": null, + "type": 2, + "flags": 2, + "position": 225 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 227 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`film`", + "value": "film", + "keyword": null, + "type": 8, + "flags": 2, + "position": 228 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 234 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`film_id`", + "value": "film_id", + "keyword": null, + "type": 8, + "flags": 2, + "position": 235 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 244 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "<=", + "value": "<=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 245 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 247 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "20", + "value": 20, + "keyword": null, + "type": 6, + "flags": 0, + "position": 248 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 250 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 251 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 252 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 258 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 259 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 260 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 261 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 265 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "film", + "value": "film", + "keyword": null, + "type": 0, + "flags": 0, + "position": 266 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 270 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 271 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 276 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "film", + "value": "film", + "keyword": null, + "type": 0, + "flags": 0, + "position": 277 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 281 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "film_id", + "value": "film_id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 282 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 289 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "<", + "value": "<", + "keyword": null, + "type": 2, + "flags": 2, + "position": 290 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 291 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "20", + "value": 20, + "keyword": null, + "type": 6, + "flags": 0, + "position": 292 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 294 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "XOR", + "value": "XOR", + "keyword": "XOR", + "type": 1, + "flags": 3, + "position": 295 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 298 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "film", + "value": "film", + "keyword": null, + "type": 0, + "flags": 0, + "position": 299 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ".", + "value": ".", + "keyword": null, + "type": 2, + "flags": 16, + "position": 303 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "rating", + "value": "rating", + "keyword": null, + "type": 0, + "flags": 0, + "position": 304 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 310 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 311 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 312 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'PG-13'", + "value": "PG-13", + "keyword": null, + "type": 7, + "flags": 1, + "position": 313 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 320 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 321 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 322 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 328 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 329 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 330 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 331 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 335 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "film", + "value": "film", + "keyword": null, + "type": 0, + "flags": 0, + "position": 336 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 340 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 341 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 346 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\/* film_id = *\/", + "value": "\/* film_id = *\/", + "keyword": null, + "type": 4, + "flags": 2, + "position": 347 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 362 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "film_id", + "value": "film_id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 363 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 370 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 371 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 372 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "10", + "value": 10, + "keyword": null, + "type": 6, + "flags": 0, + "position": 373 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 375 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 376 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 377 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 383 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 384 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 385 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 386 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 390 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "film", + "value": "film", + "keyword": null, + "type": 0, + "flags": 0, + "position": 391 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 395 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 396 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 401 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT", + "value": "NOT", + "keyword": "NOT", + "type": 1, + "flags": 3, + "position": 402 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 405 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "film_id", + "value": "film_id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 406 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 413 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ">", + "value": ">", + "keyword": null, + "type": 2, + "flags": 2, + "position": 414 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 415 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "10", + "value": 10, + "keyword": null, + "type": 6, + "flags": 0, + "position": 416 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 418 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 419 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 420 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 426 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 427 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 428 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 429 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 433 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "film", + "value": "film", + "keyword": null, + "type": 0, + "flags": 0, + "position": 434 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 438 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 439 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 444 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "!", + "value": "!", + "keyword": null, + "type": 2, + "flags": 2, + "position": 445 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 446 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 447 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "film_id", + "value": "film_id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 448 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 455 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ">", + "value": ">", + "keyword": null, + "type": 2, + "flags": 2, + "position": 456 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 457 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "10", + "value": 10, + "keyword": null, + "type": 6, + "flags": 0, + "position": 458 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 460 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 461 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 462 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 463 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 469 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 470 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 471 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 472 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 476 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "film", + "value": "film", + "keyword": null, + "type": 0, + "flags": 0, + "position": 477 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 481 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 482 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 487 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "description", + "value": "description", + "keyword": null, + "type": 0, + "flags": 0, + "position": 488 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 499 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IS", + "value": "IS", + "keyword": "IS", + "type": 1, + "flags": 3, + "position": 500 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 502 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NULL", + "value": "NULL", + "keyword": "NULL", + "type": 1, + "flags": 3, + "position": 503 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 507 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 508 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 509 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 515 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 516 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 517 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 518 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 522 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "film", + "value": "film", + "keyword": null, + "type": 0, + "flags": 0, + "position": 523 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 527 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 528 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 533 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "description", + "value": "description", + "keyword": null, + "type": 0, + "flags": 0, + "position": 534 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 545 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IS", + "value": "IS", + "keyword": "IS", + "type": 1, + "flags": 3, + "position": 546 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 548 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT NULL", + "value": "NOT NULL", + "keyword": "NOT NULL", + "type": 1, + "flags": 7, + "position": 549 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 557 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 558 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 559 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 565 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 566 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 567 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 568 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 572 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "film", + "value": "film", + "keyword": null, + "type": 0, + "flags": 0, + "position": 573 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 577 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 578 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 583 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "film_id", + "value": "film_id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 584 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 591 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "BETWEEN", + "value": "BETWEEN", + "keyword": "BETWEEN", + "type": 1, + "flags": 3, + "position": 592 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 599 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "10", + "value": 10, + "keyword": null, + "type": 6, + "flags": 0, + "position": 600 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 602 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AND", + "value": "AND", + "keyword": "AND", + "type": 1, + "flags": 3, + "position": 603 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 606 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "20", + "value": 20, + "keyword": null, + "type": 6, + "flags": 0, + "position": 607 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 609 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 610 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 611 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 617 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 618 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 619 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 620 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 624 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "film", + "value": "film", + "keyword": null, + "type": 0, + "flags": 0, + "position": 625 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 629 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 630 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 635 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "film_id", + "value": "film_id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 636 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 643 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NOT", + "value": "NOT", + "keyword": "NOT", + "type": 1, + "flags": 3, + "position": 644 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 647 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "BETWEEN", + "value": "BETWEEN", + "keyword": "BETWEEN", + "type": 1, + "flags": 3, + "position": 648 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 655 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "10", + "value": 10, + "keyword": null, + "type": 6, + "flags": 0, + "position": 656 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 658 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "AND", + "value": "AND", + "keyword": "AND", + "type": 1, + "flags": 3, + "position": 659 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 662 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "20", + "value": 20, + "keyword": null, + "type": 6, + "flags": 0, + "position": 663 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 665 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 666 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 667 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 673 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 674 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 675 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 676 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 680 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "film", + "value": "film", + "keyword": null, + "type": 0, + "flags": 0, + "position": 681 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 685 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 686 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 691 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "film_id", + "value": "film_id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 692 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 699 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "IN", + "value": "IN", + "keyword": "IN", + "type": 1, + "flags": 35, + "position": 700 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 702 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 703 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "3", + "value": 3, + "keyword": null, + "type": 6, + "flags": 0, + "position": 704 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 705 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "5", + "value": 5, + "keyword": null, + "type": 6, + "flags": 0, + "position": 706 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 707 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "7", + "value": 7, + "keyword": null, + "type": 6, + "flags": 0, + "position": 708 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 709 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 710 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 711 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 712 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 718 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 719 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 720 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 721 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 725 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "film", + "value": "film", + "keyword": null, + "type": 0, + "flags": 0, + "position": 726 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 730 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 731 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 736 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "rating", + "value": "rating", + "keyword": null, + "type": 0, + "flags": 0, + "position": 737 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 743 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 744 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 745 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UPPER", + "value": "UPPER", + "keyword": "UPPER", + "type": 1, + "flags": 33, + "position": 746 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 751 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'pg'", + "value": "pg", + "keyword": null, + "type": 7, + "flags": 1, + "position": 752 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 756 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 757 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 758 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 759 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 765 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 766 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 767 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 768 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 772 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "film", + "value": "film", + "keyword": null, + "type": 0, + "flags": 0, + "position": 773 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 777 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 778 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 783 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "rating", + "value": "rating", + "keyword": null, + "type": 0, + "flags": 0, + "position": 784 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 790 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SOUNDS", + "value": "SOUNDS", + "keyword": "SOUNDS", + "type": 1, + "flags": 1, + "position": 791 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 797 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LIKE", + "value": "LIKE", + "keyword": "LIKE", + "type": 1, + "flags": 3, + "position": 798 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 802 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'PG'", + "value": "PG", + "keyword": null, + "type": 7, + "flags": 1, + "position": 803 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 807 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 336, + "idx": 336 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "film", + "column": null, + "expr": "film", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [ + "film_id" + ], + "isOperator": false, + "expr": "film_id = 10" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [], + "isOperator": true, + "expr": "OR" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [ + "film_id" + ], + "isOperator": false, + "expr": "film_id >= 20" + } + ], + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "film", + "column": null, + "expr": "film", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [ + "film_id" + ], + "isOperator": false, + "expr": "(film_id < 10)" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [], + "isOperator": true, + "expr": "||" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [ + "film_id" + ], + "isOperator": false, + "expr": "(film_id > 20)" + } + ], + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 23, + "last": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "film", + "column": null, + "expr": "film", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [ + "film_id" + ], + "isOperator": false, + "expr": "`film_id` != 10" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [], + "isOperator": true, + "expr": "AND" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [ + "film_id" + ], + "isOperator": false, + "expr": "`film_id` <= 20" + } + ], + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 52, + "last": 76 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "film", + "column": null, + "expr": "film", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [ + "film", + "film_id" + ], + "isOperator": false, + "expr": "`film`.`film_id` <> 10" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [], + "isOperator": true, + "expr": "&&" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [ + "film", + "film_id" + ], + "isOperator": false, + "expr": "`film`.`film_id` <= 20" + } + ], + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 77, + "last": 105 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "film", + "column": null, + "expr": "film", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [ + "film", + "film_id" + ], + "isOperator": false, + "expr": "film.film_id < 20" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [], + "isOperator": true, + "expr": "XOR" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [ + "film", + "rating", + "PG-13" + ], + "isOperator": false, + "expr": "film.rating = 'PG-13'" + } + ], + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 106, + "last": 134 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "film", + "column": null, + "expr": "film", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [ + "film_id" + ], + "isOperator": false, + "expr": "film_id = 10" + } + ], + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 135, + "last": 153 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "film", + "column": null, + "expr": "film", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [ + "film_id" + ], + "isOperator": false, + "expr": "NOT film_id > 10" + } + ], + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 154, + "last": 172 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "film", + "column": null, + "expr": "film", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [ + "film_id" + ], + "isOperator": false, + "expr": "! (film_id > 10)" + } + ], + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 173, + "last": 193 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "film", + "column": null, + "expr": "film", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [ + "description" + ], + "isOperator": false, + "expr": "description IS NULL" + } + ], + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 194, + "last": 210 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "film", + "column": null, + "expr": "film", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [ + "description" + ], + "isOperator": false, + "expr": "description IS NOT NULL" + } + ], + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 211, + "last": 227 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "film", + "column": null, + "expr": "film", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [ + "film_id" + ], + "isOperator": false, + "expr": "film_id BETWEEN 10 AND 20" + } + ], + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 228, + "last": 248 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "film", + "column": null, + "expr": "film", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [ + "film_id" + ], + "isOperator": false, + "expr": "film_id NOT BETWEEN 10 AND 20" + } + ], + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 249, + "last": 271 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "film", + "column": null, + "expr": "film", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [ + "film_id" + ], + "isOperator": false, + "expr": "film_id IN (3,5,7)" + } + ], + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 272, + "last": 294 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "film", + "column": null, + "expr": "film", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [ + "rating", + "UPPER", + "pg" + ], + "isOperator": false, + "expr": "rating = UPPER('pg')" + } + ], + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 295, + "last": 314 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "film", + "column": null, + "expr": "film", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [ + "rating", + "SOUNDS", + "PG" + ], + "isOperator": false, + "expr": "rating SOUNDS LIKE 'PG'" + } + ], + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 315, + "last": 333 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectWithParenthesis.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectWithParenthesis.in new file mode 100644 index 0000000000..3c47d72e92 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectWithParenthesis.in @@ -0,0 +1 @@ +(SELECT first_name FROM `actor` LIMIT 1, 2) \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectWithParenthesis.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectWithParenthesis.out new file mode 100644 index 0000000000..632db91f11 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectWithParenthesis.out @@ -0,0 +1,720 @@ +{ + "query": "(SELECT first_name FROM `actor` LIMIT 1, 2)", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "(SELECT first_name FROM `actor` LIMIT 1, 2)", + "len": 43, + "last": 43, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 1 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "first_name", + "value": "first_name", + "keyword": null, + "type": 0, + "flags": 0, + "position": 8 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`actor`", + "value": "actor", + "keyword": null, + "type": 8, + "flags": 2, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LIMIT", + "value": "LIMIT", + "keyword": "LIMIT", + "type": 1, + "flags": 3, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": 6, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 17, + "idx": 17 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "first_name", + "expr": "first_name", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "actor", + "column": null, + "expr": "`actor`", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": null, + "group": null, + "having": null, + "order": null, + "limit": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "offset": 1, + "rowCount": 2 + }, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 15 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectWrongOrder.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectWrongOrder.in new file mode 100644 index 0000000000..18d5dca878 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectWrongOrder.in @@ -0,0 +1 @@ +SELECT pid, name2 FROM tablename LIMIT 10 WHERE pid = 20 \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectWrongOrder.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectWrongOrder.out new file mode 100644 index 0000000000..d84a3b3a0c --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectWrongOrder.out @@ -0,0 +1,842 @@ +{ + "query": "SELECT pid, name2 FROM tablename LIMIT 10 WHERE pid = 20", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SELECT pid, name2 FROM tablename LIMIT 10 WHERE pid = 20", + "len": 56, + "last": 56, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "pid", + "value": "pid", + "keyword": null, + "type": 0, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "name2", + "value": "name2", + "keyword": null, + "type": 0, + "flags": 0, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "tablename", + "value": "tablename", + "keyword": null, + "type": 0, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LIMIT", + "value": "LIMIT", + "keyword": "LIMIT", + "type": 1, + "flags": 3, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "10", + "value": 10, + "keyword": null, + "type": 6, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "pid", + "value": "pid", + "keyword": null, + "type": 0, + "flags": 0, + "position": 48 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "20", + "value": 20, + "keyword": null, + "type": 6, + "flags": 0, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 23, + "idx": 23 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "pid", + "expr": "pid", + "alias": null, + "function": null, + "subquery": null + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": "name2", + "expr": "name2", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "tablename", + "column": null, + "expr": "tablename", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [ + "pid" + ], + "isOperator": false, + "expr": "pid = 20" + } + ], + "group": null, + "having": null, + "order": null, + "limit": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "offset": 0, + "rowCount": 10 + }, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 21 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected ordering of clauses.", + { + "@type": "@13" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectWrongOrder2.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectWrongOrder2.in new file mode 100644 index 0000000000..3a000ec65c --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectWrongOrder2.in @@ -0,0 +1 @@ +SELECT DISTINCT * FROM tbl1 INNER JOIN tbl2 ON id1 = id2 WHERE 1=1 LEFT OUTER JOIN l3; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectWrongOrder2.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectWrongOrder2.out new file mode 100644 index 0000000000..7ac5d376b4 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSelectWrongOrder2.out @@ -0,0 +1,952 @@ +{ + "query": "SELECT DISTINCT * FROM tbl1 INNER JOIN tbl2 ON id1 = id2 WHERE 1=1 LEFT OUTER JOIN l3;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SELECT DISTINCT * FROM tbl1 INNER JOIN tbl2 ON id1 = id2 WHERE 1=1 LEFT OUTER JOIN l3;", + "len": 86, + "last": 86, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DISTINCT", + "value": "DISTINCT", + "keyword": "DISTINCT", + "type": 1, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "tbl1", + "value": "tbl1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 23 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "INNER JOIN", + "value": "INNER JOIN", + "keyword": "INNER JOIN", + "type": 1, + "flags": 7, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 38 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "tbl2", + "value": "tbl2", + "keyword": null, + "type": 0, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 43 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ON", + "value": "ON", + "keyword": "ON", + "type": 1, + "flags": 3, + "position": 44 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id1", + "value": "id1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 51 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 52 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id2", + "value": "id2", + "keyword": null, + "type": 0, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 57 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 63 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LEFT OUTER JOIN", + "value": "LEFT OUTER JOIN", + "keyword": "LEFT OUTER JOIN", + "type": 1, + "flags": 7, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "l3", + "value": "l3", + "keyword": null, + "type": 0, + "flags": 0, + "position": 83 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 33, + "idx": 33 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "tbl1", + "column": null, + "expr": "tbl1", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [], + "isOperator": false, + "expr": "1=1" + } + ], + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "JOINS": { + "CROSS JOIN": "CROSS", + "FULL JOIN": "FULL", + "FULL OUTER JOIN": "FULL", + "INNER JOIN": "INNER", + "JOIN": "JOIN", + "LEFT JOIN": "LEFT", + "LEFT OUTER JOIN": "LEFT", + "RIGHT JOIN": "RIGHT", + "RIGHT OUTER JOIN": "RIGHT", + "NATURAL JOIN": "NATURAL", + "NATURAL LEFT JOIN": "NATURAL LEFT", + "NATURAL RIGHT JOIN": "NATURAL RIGHT", + "NATURAL LEFT OUTER JOIN": "NATURAL LEFT OUTER", + "NATURAL RIGHT OUTER JOIN": "NATURAL RIGHT OUTER", + "STRAIGHT_JOIN": "STRAIGHT" + }, + "type": "LEFT", + "expr": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "l3", + "column": null, + "expr": "l3", + "alias": null, + "function": null, + "subquery": null + }, + "on": null, + "using": null + } + ], + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "DISTINCT" + } + }, + "first": 0, + "last": 30 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected ordering of clauses.", + { + "@type": "@24" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSetCharacterSet.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSetCharacterSet.in new file mode 100644 index 0000000000..0653e0446c --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSetCharacterSet.in @@ -0,0 +1 @@ +SET CHARACTER SET 'utf8' \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSetCharacterSet.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSetCharacterSet.out new file mode 100644 index 0000000000..13398956f7 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSetCharacterSet.out @@ -0,0 +1,460 @@ +{ + "query": "SET CHARACTER SET 'utf8'", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SET CHARACTER SET 'utf8'", + "len": 24, + "last": 24, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": 1, + "flags": 11, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 3 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CHARACTER SET", + "value": "CHARACTER SET", + "keyword": "CHARACTER SET", + "type": 1, + "flags": 7, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'utf8'", + "value": "utf8", + "keyword": null, + "type": 7, + "flags": 1, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 6, + "idx": 6 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "CLAUSES": { + "SET": [ + "SET", + 3 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "OPTIONS": { + "CHARSET": [ + 3, + "var" + ], + "CHARACTER SET": [ + 3, + "var" + ], + "NAMES": [ + 3, + "var" + ], + "PASSWORD": [ + 3, + "expr" + ], + "SESSION": 3, + "GLOBAL": 3, + "PERSIST": 3, + "PERSIST_ONLY": 3, + "@@SESSION": 3, + "@@GLOBAL": 3, + "@@PERSIST": 3, + "@@PERSIST_ONLY": 3 + }, + "END_OPTIONS": { + "COLLATE": [ + 1, + "var" + ], + "DEFAULT": 1 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": { + "name": "CHARACTER SET", + "equals": false, + "expr": "'utf8'", + "value": "utf8" + } + } + }, + "end_options": null, + "set": [], + "first": 0, + "last": 4 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSetCharacterSetError.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSetCharacterSetError.in new file mode 100644 index 0000000000..f44c24b621 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSetCharacterSetError.in @@ -0,0 +1 @@ +SET CHARACTER SET \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSetCharacterSetError.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSetCharacterSetError.out new file mode 100644 index 0000000000..464ddeb067 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSetCharacterSetError.out @@ -0,0 +1,459 @@ +{ + "query": "SET CHARACTER SET ", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SET CHARACTER SET ", + "len": 18, + "last": 18, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": 1, + "flags": 11, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 3 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CHARACTER SET", + "value": "CHARACTER SET", + "keyword": "CHARACTER SET", + "type": 1, + "flags": 7, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 5, + "idx": 5 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "CLAUSES": { + "SET": [ + "SET", + 3 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "OPTIONS": { + "CHARSET": [ + 3, + "var" + ], + "CHARACTER SET": [ + 3, + "var" + ], + "NAMES": [ + 3, + "var" + ], + "PASSWORD": [ + 3, + "expr" + ], + "SESSION": 3, + "GLOBAL": 3, + "PERSIST": 3, + "PERSIST_ONLY": 3, + "@@SESSION": 3, + "@@GLOBAL": 3, + "@@PERSIST": 3, + "@@PERSIST_ONLY": 3 + }, + "END_OPTIONS": { + "COLLATE": [ + 1, + "var" + ], + "DEFAULT": 1 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": { + "name": "CHARACTER SET", + "equals": false, + "expr": "", + "value": "" + } + } + }, + "end_options": null, + "set": [], + "first": 0, + "last": 3 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Value\/Expression for the option CHARACTER SET was expected.", + { + "@type": "@5" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSetCharset.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSetCharset.in new file mode 100644 index 0000000000..9c64472f80 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSetCharset.in @@ -0,0 +1 @@ +SET CHARSET 'utf8' \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSetCharset.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSetCharset.out new file mode 100644 index 0000000000..fc0705bc4a --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSetCharset.out @@ -0,0 +1,460 @@ +{ + "query": "SET CHARSET 'utf8'", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SET CHARSET 'utf8'", + "len": 18, + "last": 18, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": 1, + "flags": 11, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 3 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CHARSET", + "value": "CHARSET", + "keyword": "CHARSET", + "type": 1, + "flags": 33, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'utf8'", + "value": "utf8", + "keyword": null, + "type": 7, + "flags": 1, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 6, + "idx": 6 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "CLAUSES": { + "SET": [ + "SET", + 3 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "OPTIONS": { + "CHARSET": [ + 3, + "var" + ], + "CHARACTER SET": [ + 3, + "var" + ], + "NAMES": [ + 3, + "var" + ], + "PASSWORD": [ + 3, + "expr" + ], + "SESSION": 3, + "GLOBAL": 3, + "PERSIST": 3, + "PERSIST_ONLY": 3, + "@@SESSION": 3, + "@@GLOBAL": 3, + "@@PERSIST": 3, + "@@PERSIST_ONLY": 3 + }, + "END_OPTIONS": { + "COLLATE": [ + 1, + "var" + ], + "DEFAULT": 1 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": { + "name": "CHARSET", + "equals": false, + "expr": "'utf8'", + "value": "utf8" + } + } + }, + "end_options": null, + "set": [], + "first": 0, + "last": 4 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSetCharsetError.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSetCharsetError.in new file mode 100644 index 0000000000..f9de298c42 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSetCharsetError.in @@ -0,0 +1 @@ +SET CHARSET \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSetCharsetError.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSetCharsetError.out new file mode 100644 index 0000000000..2fec929f7d --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSetCharsetError.out @@ -0,0 +1,459 @@ +{ + "query": "SET CHARSET ", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SET CHARSET ", + "len": 12, + "last": 12, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": 1, + "flags": 11, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 3 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CHARSET", + "value": "CHARSET", + "keyword": "CHARSET", + "type": 1, + "flags": 33, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 5, + "idx": 5 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "CLAUSES": { + "SET": [ + "SET", + 3 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "OPTIONS": { + "CHARSET": [ + 3, + "var" + ], + "CHARACTER SET": [ + 3, + "var" + ], + "NAMES": [ + 3, + "var" + ], + "PASSWORD": [ + 3, + "expr" + ], + "SESSION": 3, + "GLOBAL": 3, + "PERSIST": 3, + "PERSIST_ONLY": 3, + "@@SESSION": 3, + "@@GLOBAL": 3, + "@@PERSIST": 3, + "@@PERSIST_ONLY": 3 + }, + "END_OPTIONS": { + "COLLATE": [ + 1, + "var" + ], + "DEFAULT": 1 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": { + "name": "CHARSET", + "equals": false, + "expr": "", + "value": "" + } + } + }, + "end_options": null, + "set": [], + "first": 0, + "last": 3 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Value\/Expression for the option CHARSET was expected.", + { + "@type": "@5" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSetError1.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSetError1.in new file mode 100644 index 0000000000..dca44f90bd --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSetError1.in @@ -0,0 +1 @@ +SET CHARSET 'utf8' CHARACTER SET 'utf8' \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSetError1.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSetError1.out new file mode 100644 index 0000000000..896dbc14c5 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSetError1.out @@ -0,0 +1,510 @@ +{ + "query": "SET CHARSET 'utf8' CHARACTER SET 'utf8'", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SET CHARSET 'utf8' CHARACTER SET 'utf8'", + "len": 39, + "last": 39, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": 1, + "flags": 11, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 3 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CHARSET", + "value": "CHARSET", + "keyword": "CHARSET", + "type": 1, + "flags": 33, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'utf8'", + "value": "utf8", + "keyword": null, + "type": 7, + "flags": 1, + "position": 12 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "CHARACTER SET", + "value": "CHARACTER SET", + "keyword": "CHARACTER SET", + "type": 1, + "flags": 7, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'utf8'", + "value": "utf8", + "keyword": null, + "type": 7, + "flags": 1, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 10, + "idx": 10 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "CLAUSES": { + "SET": [ + "SET", + 3 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "OPTIONS": { + "CHARSET": [ + 3, + "var" + ], + "CHARACTER SET": [ + 3, + "var" + ], + "NAMES": [ + 3, + "var" + ], + "PASSWORD": [ + 3, + "expr" + ], + "SESSION": 3, + "GLOBAL": 3, + "PERSIST": 3, + "PERSIST_ONLY": 3, + "@@SESSION": 3, + "@@GLOBAL": 3, + "@@PERSIST": 3, + "@@PERSIST_ONLY": 3 + }, + "END_OPTIONS": { + "COLLATE": [ + 1, + "var" + ], + "DEFAULT": 1 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": { + "name": "CHARSET", + "equals": false, + "expr": "'utf8'", + "value": "utf8" + }, + "13": { + "name": "CHARACTER SET", + "equals": false, + "expr": "'utf8'", + "value": "utf8" + } + } + }, + "end_options": null, + "set": [], + "first": 0, + "last": 8 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "This option conflicts with \"CHARSET\".", + { + "@type": "@8" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSetNames.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSetNames.in new file mode 100644 index 0000000000..1b20c3f698 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSetNames.in @@ -0,0 +1 @@ +SET NAMES 'utf8' \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSetNames.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSetNames.out new file mode 100644 index 0000000000..d88fdfbd70 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSetNames.out @@ -0,0 +1,460 @@ +{ + "query": "SET NAMES 'utf8'", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SET NAMES 'utf8'", + "len": 16, + "last": 16, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": 1, + "flags": 11, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 3 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NAMES", + "value": "NAMES", + "keyword": "NAMES", + "type": 1, + "flags": 1, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'utf8'", + "value": "utf8", + "keyword": null, + "type": 7, + "flags": 1, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 6, + "idx": 6 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "CLAUSES": { + "SET": [ + "SET", + 3 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "OPTIONS": { + "CHARSET": [ + 3, + "var" + ], + "CHARACTER SET": [ + 3, + "var" + ], + "NAMES": [ + 3, + "var" + ], + "PASSWORD": [ + 3, + "expr" + ], + "SESSION": 3, + "GLOBAL": 3, + "PERSIST": 3, + "PERSIST_ONLY": 3, + "@@SESSION": 3, + "@@GLOBAL": 3, + "@@PERSIST": 3, + "@@PERSIST_ONLY": 3 + }, + "END_OPTIONS": { + "COLLATE": [ + 1, + "var" + ], + "DEFAULT": 1 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": { + "name": "NAMES", + "equals": false, + "expr": "'utf8'", + "value": "utf8" + } + } + }, + "end_options": null, + "set": [], + "first": 0, + "last": 4 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSetNames2.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSetNames2.in new file mode 100644 index 0000000000..e39b644ab9 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSetNames2.in @@ -0,0 +1 @@ +SET NAMES 'utf8' COLLATE 'utf8_general_ci' \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSetNames2.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSetNames2.out new file mode 100644 index 0000000000..78ca37959c --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSetNames2.out @@ -0,0 +1,506 @@ +{ + "query": "SET NAMES 'utf8' COLLATE 'utf8_general_ci'", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SET NAMES 'utf8' COLLATE 'utf8_general_ci'", + "len": 42, + "last": 42, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": 1, + "flags": 11, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 3 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NAMES", + "value": "NAMES", + "keyword": "NAMES", + "type": 1, + "flags": 1, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'utf8'", + "value": "utf8", + "keyword": null, + "type": 7, + "flags": 1, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COLLATE", + "value": "COLLATE", + "keyword": "COLLATE", + "type": 1, + "flags": 3, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'utf8_general_ci'", + "value": "utf8_general_ci", + "keyword": null, + "type": 7, + "flags": 1, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 10, + "idx": 10 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "CLAUSES": { + "SET": [ + "SET", + 3 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "OPTIONS": { + "CHARSET": [ + 3, + "var" + ], + "CHARACTER SET": [ + 3, + "var" + ], + "NAMES": [ + 3, + "var" + ], + "PASSWORD": [ + 3, + "expr" + ], + "SESSION": 3, + "GLOBAL": 3, + "PERSIST": 3, + "PERSIST_ONLY": 3, + "@@SESSION": 3, + "@@GLOBAL": 3, + "@@PERSIST": 3, + "@@PERSIST_ONLY": 3 + }, + "END_OPTIONS": { + "COLLATE": [ + 1, + "var" + ], + "DEFAULT": 1 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": { + "name": "NAMES", + "equals": false, + "expr": "'utf8'", + "value": "utf8" + } + } + }, + "end_options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "COLLATE", + "equals": false, + "expr": "'utf8_general_ci'", + "value": "utf8_general_ci" + } + } + }, + "set": [], + "first": 0, + "last": 8 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSetNames3.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSetNames3.in new file mode 100644 index 0000000000..691dd08696 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSetNames3.in @@ -0,0 +1 @@ +SET NAMES 'utf8' DEFAULT; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSetNames3.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSetNames3.out new file mode 100644 index 0000000000..73ca1adad8 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSetNames3.out @@ -0,0 +1,492 @@ +{ + "query": "SET NAMES 'utf8' DEFAULT;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SET NAMES 'utf8' DEFAULT;", + "len": 25, + "last": 25, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": 1, + "flags": 11, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 3 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NAMES", + "value": "NAMES", + "keyword": "NAMES", + "type": 1, + "flags": 1, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'utf8'", + "value": "utf8", + "keyword": null, + "type": 7, + "flags": 1, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT", + "value": "DEFAULT", + "keyword": "DEFAULT", + "type": 1, + "flags": 35, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 9, + "idx": 9 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "CLAUSES": { + "SET": [ + "SET", + 3 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "OPTIONS": { + "CHARSET": [ + 3, + "var" + ], + "CHARACTER SET": [ + 3, + "var" + ], + "NAMES": [ + 3, + "var" + ], + "PASSWORD": [ + 3, + "expr" + ], + "SESSION": 3, + "GLOBAL": 3, + "PERSIST": 3, + "PERSIST_ONLY": 3, + "@@SESSION": 3, + "@@GLOBAL": 3, + "@@PERSIST": 3, + "@@PERSIST_ONLY": 3 + }, + "END_OPTIONS": { + "COLLATE": [ + 1, + "var" + ], + "DEFAULT": 1 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": { + "name": "NAMES", + "equals": false, + "expr": "'utf8'", + "value": "utf8" + } + } + }, + "end_options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "DEFAULT" + } + }, + "set": [], + "first": 0, + "last": 6 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSetNamesError.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSetNamesError.in new file mode 100644 index 0000000000..3b6f833c2c --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSetNamesError.in @@ -0,0 +1 @@ +SET NAMES \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSetNamesError.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSetNamesError.out new file mode 100644 index 0000000000..3bc54f0963 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSetNamesError.out @@ -0,0 +1,459 @@ +{ + "query": "SET NAMES ", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SET NAMES ", + "len": 10, + "last": 10, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": 1, + "flags": 11, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 3 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NAMES", + "value": "NAMES", + "keyword": "NAMES", + "type": 1, + "flags": 1, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 5, + "idx": 5 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "CLAUSES": { + "SET": [ + "SET", + 3 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "OPTIONS": { + "CHARSET": [ + 3, + "var" + ], + "CHARACTER SET": [ + 3, + "var" + ], + "NAMES": [ + 3, + "var" + ], + "PASSWORD": [ + 3, + "expr" + ], + "SESSION": 3, + "GLOBAL": 3, + "PERSIST": 3, + "PERSIST_ONLY": 3, + "@@SESSION": 3, + "@@GLOBAL": 3, + "@@PERSIST": 3, + "@@PERSIST_ONLY": 3 + }, + "END_OPTIONS": { + "COLLATE": [ + 1, + "var" + ], + "DEFAULT": 1 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": { + "name": "NAMES", + "equals": false, + "expr": "", + "value": "" + } + } + }, + "end_options": null, + "set": [], + "first": 0, + "last": 3 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Value\/Expression for the option NAMES was expected.", + { + "@type": "@5" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSetNamesError2.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSetNamesError2.in new file mode 100644 index 0000000000..069c1a78fb --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSetNamesError2.in @@ -0,0 +1 @@ +SET NAMES 'utf8' DEFAULT 'utf8_general_ci' \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSetNamesError2.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSetNamesError2.out new file mode 100644 index 0000000000..c30e7e6333 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSetNamesError2.out @@ -0,0 +1,509 @@ +{ + "query": "SET NAMES 'utf8' DEFAULT 'utf8_general_ci'", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SET NAMES 'utf8' DEFAULT 'utf8_general_ci'", + "len": 42, + "last": 42, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": 1, + "flags": 11, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 3 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NAMES", + "value": "NAMES", + "keyword": "NAMES", + "type": 1, + "flags": 1, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'utf8'", + "value": "utf8", + "keyword": null, + "type": 7, + "flags": 1, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "DEFAULT", + "value": "DEFAULT", + "keyword": "DEFAULT", + "type": 1, + "flags": 35, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 24 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'utf8_general_ci'", + "value": "utf8_general_ci", + "keyword": null, + "type": 7, + "flags": 1, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 10, + "idx": 10 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "CLAUSES": { + "SET": [ + "SET", + 3 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "OPTIONS": { + "CHARSET": [ + 3, + "var" + ], + "CHARACTER SET": [ + 3, + "var" + ], + "NAMES": [ + 3, + "var" + ], + "PASSWORD": [ + 3, + "expr" + ], + "SESSION": 3, + "GLOBAL": 3, + "PERSIST": 3, + "PERSIST_ONLY": 3, + "@@SESSION": 3, + "@@GLOBAL": 3, + "@@PERSIST": 3, + "@@PERSIST_ONLY": 3 + }, + "END_OPTIONS": { + "COLLATE": [ + 1, + "var" + ], + "DEFAULT": 1 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": { + "name": "NAMES", + "equals": false, + "expr": "'utf8'", + "value": "utf8" + } + } + }, + "end_options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "DEFAULT" + } + }, + "set": [], + "first": 0, + "last": 8 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected token.", + { + "@type": "@10" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSetNamesError3.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSetNamesError3.in new file mode 100644 index 0000000000..1721acbcc0 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSetNamesError3.in @@ -0,0 +1 @@ +SET NAMES 'utf8' COLLATE \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSetNamesError3.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSetNamesError3.out new file mode 100644 index 0000000000..ed9a09d9fd --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseSetNamesError3.out @@ -0,0 +1,496 @@ +{ + "query": "SET NAMES 'utf8' COLLATE", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "SET NAMES 'utf8' COLLATE", + "len": 24, + "last": 24, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": 1, + "flags": 11, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 3 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "NAMES", + "value": "NAMES", + "keyword": "NAMES", + "type": 1, + "flags": 1, + "position": 4 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 9 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "'utf8'", + "value": "utf8", + "keyword": null, + "type": 7, + "flags": 1, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COLLATE", + "value": "COLLATE", + "keyword": "COLLATE", + "type": 1, + "flags": 3, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 8, + "idx": 8 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "CLAUSES": { + "SET": [ + "SET", + 3 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "OPTIONS": { + "CHARSET": [ + 3, + "var" + ], + "CHARACTER SET": [ + 3, + "var" + ], + "NAMES": [ + 3, + "var" + ], + "PASSWORD": [ + 3, + "expr" + ], + "SESSION": 3, + "GLOBAL": 3, + "PERSIST": 3, + "PERSIST_ONLY": 3, + "@@SESSION": 3, + "@@GLOBAL": 3, + "@@PERSIST": 3, + "@@PERSIST_ONLY": 3 + }, + "END_OPTIONS": { + "COLLATE": [ + 1, + "var" + ], + "DEFAULT": 1 + }, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "3": { + "name": "NAMES", + "equals": false, + "expr": "'utf8'", + "value": "utf8" + } + } + }, + "end_options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": { + "name": "COLLATE", + "equals": false, + "expr": "", + "value": "" + } + } + }, + "set": [], + "first": 0, + "last": 6 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Value\/Expression for the option COLLATE was expected.", + { + "@type": "@8" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseTransaction.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseTransaction.in new file mode 100644 index 0000000000..51c7e8ba56 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseTransaction.in @@ -0,0 +1,4 @@ +START TRANSACTION; +SELECT @A:=SUM(salary) FROM table1 WHERE type=1; +UPDATE table2 SET summary=@A WHERE type=1; +COMMIT; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseTransaction.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseTransaction.out new file mode 100644 index 0000000000..b29f53aabd --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseTransaction.out @@ -0,0 +1,1159 @@ +{ + "query": "START TRANSACTION;\nSELECT @A:=SUM(salary) FROM table1 WHERE type=1;\nUPDATE table2 SET summary=@A WHERE type=1;\nCOMMIT;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "START TRANSACTION;\nSELECT @A:=SUM(salary) FROM table1 WHERE type=1;\nUPDATE table2 SET summary=@A WHERE type=1;\nCOMMIT;", + "len": 118, + "last": 118, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "START TRANSACTION", + "value": "START TRANSACTION", + "keyword": "START TRANSACTION", + "type": 1, + "flags": 7, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@A", + "value": "A", + "keyword": null, + "type": 8, + "flags": 1, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ":=", + "value": ":=", + "keyword": null, + "type": 2, + "flags": 8, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUM", + "value": "SUM", + "keyword": "SUM", + "type": 1, + "flags": 33, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "salary", + "value": "salary", + "keyword": null, + "type": 0, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "type", + "value": "type", + "keyword": "TYPE", + "type": 1, + "flags": 1, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UPDATE", + "value": "UPDATE", + "keyword": "UPDATE", + "type": 1, + "flags": 3, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table2", + "value": "table2", + "keyword": null, + "type": 0, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": 1, + "flags": 11, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "summary", + "value": "summary", + "keyword": null, + "type": 0, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@A", + "value": "A", + "keyword": null, + "type": 8, + "flags": 1, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 97 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 102 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "type", + "value": "type", + "keyword": "TYPE", + "type": 1, + "flags": 1, + "position": 103 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 109 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 110 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COMMIT", + "value": "COMMIT", + "keyword": "COMMIT", + "type": 1, + "flags": 1, + "position": 111 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 117 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 43, + "idx": 43 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "type": 1, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "@A:=SUM(salary)", + "alias": null, + "function": "SUM", + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "table1", + "column": null, + "expr": "table1", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [ + "type" + ], + "isOperator": false, + "expr": "type=1" + } + ], + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 1, + "last": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "OPTIONS": { + "LOW_PRIORITY": 1, + "IGNORE": 2 + }, + "CLAUSES": { + "UPDATE": [ + "UPDATE", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_UPDATE": [ + "UPDATE", + 1 + ], + "SET": [ + "SET", + 3 + ], + "WHERE": [ + "WHERE", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ] + }, + "tables": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "table2", + "column": null, + "expr": "table2", + "alias": null, + "function": null, + "subquery": null + } + ], + "set": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "column": "summary", + "value": "@A" + } + ], + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [ + "type" + ], + "isOperator": false, + "expr": "type=1" + } + ], + "order": null, + "limit": null, + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 21, + "last": 37 + } + ], + "end": { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "type": 2, + "statements": null, + "end": null, + "OPTIONS": { + "START TRANSACTION": 1, + "BEGIN": 1, + "COMMIT": 1, + "ROLLBACK": 1, + "WITH CONSISTENT SNAPSHOT": 2, + "WORK": 2, + "AND NO CHAIN": 3, + "AND CHAIN": 3, + "RELEASE": 4, + "NO RELEASE": 4 + }, + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "COMMIT" + } + }, + "first": 38, + "last": 40 + }, + "OPTIONS": { + "START TRANSACTION": 1, + "BEGIN": 1, + "COMMIT": 1, + "ROLLBACK": 1, + "WITH CONSISTENT SNAPSHOT": 2, + "WORK": 2, + "AND NO CHAIN": 3, + "AND CHAIN": 3, + "RELEASE": 4, + "NO RELEASE": 4 + }, + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "START TRANSACTION" + } + }, + "first": 0, + "last": 0 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseTransaction2.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseTransaction2.in new file mode 100644 index 0000000000..672a626cd1 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseTransaction2.in @@ -0,0 +1,4 @@ +START TRANSACTION; +SELECT @A:=SUM(salary) FROM table1 WHERE type=1; +UPDATE table2 SET summary=@A WHERE type=1; +ROLLBACK; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseTransaction2.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseTransaction2.out new file mode 100644 index 0000000000..ec253d8240 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseTransaction2.out @@ -0,0 +1,1159 @@ +{ + "query": "START TRANSACTION;\nSELECT @A:=SUM(salary) FROM table1 WHERE type=1;\nUPDATE table2 SET summary=@A WHERE type=1;\nROLLBACK;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "START TRANSACTION;\nSELECT @A:=SUM(salary) FROM table1 WHERE type=1;\nUPDATE table2 SET summary=@A WHERE type=1;\nROLLBACK;", + "len": 120, + "last": 120, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "START TRANSACTION", + "value": "START TRANSACTION", + "keyword": "START TRANSACTION", + "type": 1, + "flags": 7, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@A", + "value": "A", + "keyword": null, + "type": 8, + "flags": 1, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ":=", + "value": ":=", + "keyword": null, + "type": 2, + "flags": 8, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SUM", + "value": "SUM", + "keyword": "SUM", + "type": 1, + "flags": 33, + "position": 30 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "(", + "value": "(", + "keyword": null, + "type": 2, + "flags": 16, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "salary", + "value": "salary", + "keyword": null, + "type": 0, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ")", + "value": ")", + "keyword": null, + "type": 2, + "flags": 16, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 46 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table1", + "value": "table1", + "keyword": null, + "type": 0, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "type", + "value": "type", + "keyword": "TYPE", + "type": 1, + "flags": 1, + "position": 60 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 65 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 66 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UPDATE", + "value": "UPDATE", + "keyword": "UPDATE", + "type": 1, + "flags": 3, + "position": 68 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "table2", + "value": "table2", + "keyword": null, + "type": 0, + "flags": 0, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": 1, + "flags": 11, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "summary", + "value": "summary", + "keyword": null, + "type": 0, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 93 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "@A", + "value": "A", + "keyword": null, + "type": 8, + "flags": 1, + "position": 94 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 97 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 102 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "type", + "value": "type", + "keyword": "TYPE", + "type": 1, + "flags": 1, + "position": 103 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 107 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 108 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 109 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 110 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "ROLLBACK", + "value": "ROLLBACK", + "keyword": "ROLLBACK", + "type": 1, + "flags": 1, + "position": 111 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 119 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 43, + "idx": 43 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "type": 1, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "@A:=SUM(salary)", + "alias": null, + "function": "SUM", + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "table1", + "column": null, + "expr": "table1", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [ + "type" + ], + "isOperator": false, + "expr": "type=1" + } + ], + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 1, + "last": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "OPTIONS": { + "LOW_PRIORITY": 1, + "IGNORE": 2 + }, + "CLAUSES": { + "UPDATE": [ + "UPDATE", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_UPDATE": [ + "UPDATE", + 1 + ], + "SET": [ + "SET", + 3 + ], + "WHERE": [ + "WHERE", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ] + }, + "tables": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "table2", + "column": null, + "expr": "table2", + "alias": null, + "function": null, + "subquery": null + } + ], + "set": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "column": "summary", + "value": "@A" + } + ], + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [ + "type" + ], + "isOperator": false, + "expr": "type=1" + } + ], + "order": null, + "limit": null, + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 21, + "last": 37 + } + ], + "end": { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "type": 2, + "statements": null, + "end": null, + "OPTIONS": { + "START TRANSACTION": 1, + "BEGIN": 1, + "COMMIT": 1, + "ROLLBACK": 1, + "WITH CONSISTENT SNAPSHOT": 2, + "WORK": 2, + "AND NO CHAIN": 3, + "AND CHAIN": 3, + "RELEASE": 4, + "NO RELEASE": 4 + }, + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "ROLLBACK" + } + }, + "first": 38, + "last": 40 + }, + "OPTIONS": { + "START TRANSACTION": 1, + "BEGIN": 1, + "COMMIT": 1, + "ROLLBACK": 1, + "WITH CONSISTENT SNAPSHOT": 2, + "WORK": 2, + "AND NO CHAIN": 3, + "AND CHAIN": 3, + "RELEASE": 4, + "NO RELEASE": 4 + }, + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "START TRANSACTION" + } + }, + "first": 0, + "last": 0 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseTransaction3.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseTransaction3.in new file mode 100644 index 0000000000..bc72a704d3 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseTransaction3.in @@ -0,0 +1,3 @@ +begin; +SELECT * FROM `tablename` +commit; diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseTransaction3.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseTransaction3.out new file mode 100644 index 0000000000..1e17dbe49f --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseTransaction3.out @@ -0,0 +1,706 @@ +{ + "query": "begin;\nSELECT * FROM `tablename`\ncommit;\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "begin;\nSELECT * FROM `tablename`\ncommit;\n", + "len": 41, + "last": 41, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "begin", + "value": "begin", + "keyword": "BEGIN", + "type": 1, + "flags": 1, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 5 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SELECT", + "value": "SELECT", + "keyword": "SELECT", + "type": 1, + "flags": 3, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "*", + "value": "*", + "keyword": null, + "type": 2, + "flags": 16, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "FROM", + "value": "FROM", + "keyword": "FROM", + "type": 1, + "flags": 3, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "`tablename`", + "value": "tablename", + "keyword": null, + "type": 8, + "flags": 2, + "position": 21 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "commit", + "value": "commit", + "keyword": "COMMIT", + "type": 1, + "flags": 1, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 39 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 15, + "idx": 15 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "OPTIONS": { + "ALL": 1, + "DISTINCT": 1, + "DISTINCTROW": 1, + "HIGH_PRIORITY": 2, + "MAX_STATEMENT_TIME": [ + 3, + "var=" + ], + "STRAIGHT_JOIN": 4, + "SQL_SMALL_RESULT": 5, + "SQL_BIG_RESULT": 6, + "SQL_BUFFER_RESULT": 7, + "SQL_CACHE": 8, + "SQL_NO_CACHE": 8, + "SQL_CALC_FOUND_ROWS": 9 + }, + "END_OPTIONS": { + "FOR UPDATE": 1, + "LOCK IN SHARE MODE": 1 + }, + "CLAUSES": { + "SELECT": [ + "SELECT", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_SELECT": [ + "SELECT", + 1 + ], + "INTO": [ + "INTO", + 3 + ], + "FROM": [ + "FROM", + 3 + ], + "FORCE": [ + "FORCE", + 1 + ], + "USE": [ + "USE", + 1 + ], + "IGNORE": [ + "IGNORE", + 3 + ], + "PARTITION": [ + "PARTITION", + 3 + ], + "JOIN": [ + "JOIN", + 1 + ], + "FULL JOIN": [ + "FULL JOIN", + 1 + ], + "INNER JOIN": [ + "INNER JOIN", + 1 + ], + "LEFT JOIN": [ + "LEFT JOIN", + 1 + ], + "LEFT OUTER JOIN": [ + "LEFT OUTER JOIN", + 1 + ], + "RIGHT JOIN": [ + "RIGHT JOIN", + 1 + ], + "RIGHT OUTER JOIN": [ + "RIGHT OUTER JOIN", + 1 + ], + "NATURAL JOIN": [ + "NATURAL JOIN", + 1 + ], + "NATURAL LEFT JOIN": [ + "NATURAL LEFT JOIN", + 1 + ], + "NATURAL RIGHT JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "NATURAL LEFT OUTER JOIN": [ + "NATURAL LEFT OUTER JOIN", + 1 + ], + "NATURAL RIGHT OUTER JOIN": [ + "NATURAL RIGHT JOIN", + 1 + ], + "WHERE": [ + "WHERE", + 3 + ], + "GROUP BY": [ + "GROUP BY", + 3 + ], + "HAVING": [ + "HAVING", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ], + "PROCEDURE": [ + "PROCEDURE", + 3 + ], + "UNION": [ + "UNION", + 1 + ], + "EXCEPT": [ + "EXCEPT", + 1 + ], + "INTERSECT": [ + "INTERSECT", + 1 + ], + "_END_OPTIONS": [ + "_END_OPTIONS", + 1 + ] + }, + "expr": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": null, + "column": null, + "expr": "*", + "alias": null, + "function": null, + "subquery": null + } + ], + "from": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "tablename", + "column": null, + "expr": "`tablename`", + "alias": null, + "function": null, + "subquery": null + } + ], + "index_hints": null, + "partition": null, + "where": null, + "group": null, + "having": null, + "order": null, + "limit": null, + "procedure": null, + "into": null, + "join": null, + "union": [], + "end_options": null, + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 1, + "last": 10 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "A new statement was found, but no delimiter between it and the previous one.", + { + "@type": "@13" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseTransactionErr1.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseTransactionErr1.in new file mode 100644 index 0000000000..3ed481da10 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseTransactionErr1.in @@ -0,0 +1 @@ +COMMIT; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseTransactionErr1.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseTransactionErr1.out new file mode 100644 index 0000000000..1cb8affba8 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseTransactionErr1.out @@ -0,0 +1,408 @@ +{ + "query": "COMMIT;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "COMMIT;", + "len": 7, + "last": 7, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "COMMIT", + "value": "COMMIT", + "keyword": "COMMIT", + "type": 1, + "flags": 1, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 3, + "idx": 3 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "type": 2, + "statements": null, + "end": null, + "OPTIONS": { + "START TRANSACTION": 1, + "BEGIN": 1, + "COMMIT": 1, + "ROLLBACK": 1, + "WITH CONSISTENT SNAPSHOT": 2, + "WORK": 2, + "AND NO CHAIN": 3, + "AND CHAIN": 3, + "RELEASE": 4, + "NO RELEASE": 4 + }, + "CLAUSES": [], + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": { + "1": "COMMIT" + } + }, + "first": 0, + "last": 0 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "No transaction was previously started.", + { + "@type": "@2" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseUnlock1.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseUnlock1.in new file mode 100644 index 0000000000..bff5b2a2c6 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseUnlock1.in @@ -0,0 +1 @@ +UNLOCK TABLES; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseUnlock1.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseUnlock1.out new file mode 100644 index 0000000000..4d3a4a348d --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseUnlock1.out @@ -0,0 +1,401 @@ +{ + "query": "UNLOCK TABLES;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "UNLOCK TABLES;", + "len": 14, + "last": 14, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNLOCK", + "value": "UNLOCK", + "keyword": "UNLOCK", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLES", + "value": "TABLES", + "keyword": "TABLES", + "type": 1, + "flags": 1, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 5, + "idx": 5 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "locked": [], + "isLock": false, + "OPTIONS": [], + "CLAUSES": [], + "END_OPTIONS": [], + "options": null, + "first": 0, + "last": 3 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseUnlockErr1.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseUnlockErr1.in new file mode 100644 index 0000000000..2c0afd46cc --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseUnlockErr1.in @@ -0,0 +1 @@ +UNLOCK TABLES abc; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseUnlockErr1.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseUnlockErr1.out new file mode 100644 index 0000000000..07ffc3cc5e --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseUnlockErr1.out @@ -0,0 +1,427 @@ +{ + "query": "UNLOCK TABLES abc;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "UNLOCK TABLES abc;", + "len": 18, + "last": 18, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UNLOCK", + "value": "UNLOCK", + "keyword": "UNLOCK", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "TABLES", + "value": "TABLES", + "keyword": "TABLES", + "type": 1, + "flags": 1, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 13 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "abc", + "value": "abc", + "keyword": null, + "type": 0, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 7, + "idx": 7 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "locked": [], + "isLock": false, + "OPTIONS": [], + "CLAUSES": [], + "END_OPTIONS": [], + "options": null, + "first": 0, + "last": 4 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected token.", + { + "@type": "@6" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseUpdate.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseUpdate.in new file mode 100644 index 0000000000..b35dbeb1f4 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseUpdate.in @@ -0,0 +1,5 @@ +UPDATE + users +SET + username = "Dan", + id=155; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseUpdate.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseUpdate.out new file mode 100644 index 0000000000..33e9092461 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseUpdate.out @@ -0,0 +1,591 @@ +{ + "query": "UPDATE\n users\nSET\n username = \"Dan\",\n id=155;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "UPDATE\n users\nSET\n username = \"Dan\",\n id=155;", + "len": 54, + "last": 54, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UPDATE", + "value": "UPDATE", + "keyword": "UPDATE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "users", + "value": "users", + "keyword": null, + "type": 0, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": 1, + "flags": 11, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "username", + "value": "username", + "keyword": null, + "type": 0, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Dan\"", + "value": "Dan", + "keyword": null, + "type": 7, + "flags": 2, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "155", + "value": 155, + "keyword": null, + "type": 6, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 18, + "idx": 18 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "OPTIONS": { + "LOW_PRIORITY": 1, + "IGNORE": 2 + }, + "CLAUSES": { + "UPDATE": [ + "UPDATE", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_UPDATE": [ + "UPDATE", + 1 + ], + "SET": [ + "SET", + 3 + ], + "WHERE": [ + "WHERE", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ] + }, + "tables": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "users", + "column": null, + "expr": "users", + "alias": null, + "function": null, + "subquery": null + } + ], + "set": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "column": "username", + "value": "\"Dan\"" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "column": "id", + "value": "155" + } + ], + "where": null, + "order": null, + "limit": null, + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 15 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseUpdate2.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseUpdate2.in new file mode 100644 index 0000000000..71621183cb --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseUpdate2.in @@ -0,0 +1,8 @@ +UPDATE + users +SET + username = "Dan", + id=155 +WHERE + username = "Paul" +LIMIT 1 OFFSET 2; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseUpdate2.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseUpdate2.out new file mode 100644 index 0000000000..d9738bfb06 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseUpdate2.out @@ -0,0 +1,777 @@ +{ + "query": "UPDATE\n users\nSET\n username = \"Dan\",\n id=155\nWHERE\n username = \"Paul\"\nLIMIT 1 OFFSET 2;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "UPDATE\n users\nSET\n username = \"Dan\",\n id=155\nWHERE\n username = \"Paul\"\nLIMIT 1 OFFSET 2;", + "len": 99, + "last": 99, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UPDATE", + "value": "UPDATE", + "keyword": "UPDATE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "users", + "value": "users", + "keyword": null, + "type": 0, + "flags": 0, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 16 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": 1, + "flags": 11, + "position": 17 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "username", + "value": "username", + "keyword": null, + "type": 0, + "flags": 0, + "position": 25 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Dan\"", + "value": "Dan", + "keyword": null, + "type": 7, + "flags": 2, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 41 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 42 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 47 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 49 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "155", + "value": 155, + "keyword": null, + "type": 6, + "flags": 0, + "position": 50 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 59 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "username", + "value": "username", + "keyword": null, + "type": 0, + "flags": 0, + "position": 64 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 72 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Paul\"", + "value": "Paul", + "keyword": null, + "type": 7, + "flags": 2, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "LIMIT", + "value": "LIMIT", + "keyword": "LIMIT", + "type": 1, + "flags": 3, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 87 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 88 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 89 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "OFFSET", + "value": "OFFSET", + "keyword": "OFFSET", + "type": 1, + "flags": 1, + "position": 90 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 96 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "2", + "value": 2, + "keyword": null, + "type": 6, + "flags": 0, + "position": 97 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 98 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 34, + "idx": 34 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "OPTIONS": { + "LOW_PRIORITY": 1, + "IGNORE": 2 + }, + "CLAUSES": { + "UPDATE": [ + "UPDATE", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_UPDATE": [ + "UPDATE", + 1 + ], + "SET": [ + "SET", + 3 + ], + "WHERE": [ + "WHERE", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ] + }, + "tables": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "users", + "column": null, + "expr": "users", + "alias": null, + "function": null, + "subquery": null + } + ], + "set": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "column": "username", + "value": "\"Dan\"" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "column": "id", + "value": "155" + } + ], + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [ + "username", + "Paul" + ], + "isOperator": false, + "expr": "username = \"Paul\"" + } + ], + "order": null, + "limit": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "offset": 2, + "rowCount": 1 + }, + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 31 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseUpdate3.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseUpdate3.in new file mode 100644 index 0000000000..ae511c92a1 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseUpdate3.in @@ -0,0 +1 @@ +UPDATE foo SET bar = WHERE baz = 0 diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseUpdate3.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseUpdate3.out new file mode 100644 index 0000000000..2e755cf21a --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseUpdate3.out @@ -0,0 +1,634 @@ +{ + "query": "UPDATE foo SET bar = WHERE baz = 0\n", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "UPDATE foo SET bar = WHERE baz = 0\n", + "len": 36, + "last": 36, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UPDATE", + "value": "UPDATE", + "keyword": "UPDATE", + "type": 1, + "flags": 3, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 6 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "foo", + "value": "foo", + "keyword": null, + "type": 0, + "flags": 0, + "position": 7 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 10 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": 1, + "flags": 11, + "position": 11 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 14 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "bar", + "value": "bar", + "keyword": null, + "type": 0, + "flags": 0, + "position": 15 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 18 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 22 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 27 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "baz", + "value": "baz", + "keyword": null, + "type": 0, + "flags": 0, + "position": 28 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 32 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 33 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "0", + "value": 0, + "keyword": null, + "type": 6, + "flags": 0, + "position": 34 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 35 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 19, + "idx": 19 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "OPTIONS": { + "LOW_PRIORITY": 1, + "IGNORE": 2 + }, + "CLAUSES": { + "UPDATE": [ + "UPDATE", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_UPDATE": [ + "UPDATE", + 1 + ], + "SET": [ + "SET", + 3 + ], + "WHERE": [ + "WHERE", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ] + }, + "tables": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "foo", + "column": null, + "expr": "foo", + "alias": null, + "function": null, + "subquery": null + } + ], + "set": [], + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [ + "baz" + ], + "isOperator": false, + "expr": "baz = 0" + } + ], + "order": null, + "limit": null, + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 17 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Missing expression.", + { + "@type": "@12" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseUpdateErr.in b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseUpdateErr.in new file mode 100644 index 0000000000..d2caecb141 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseUpdateErr.in @@ -0,0 +1,7 @@ +-- extraneous comma +UPDATE + users +SET + username = "Dan", + id=155, +WHERE 1 = 1; \ No newline at end of file diff --git a/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseUpdateErr.out b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseUpdateErr.out new file mode 100644 index 0000000000..efc72cc6d4 --- /dev/null +++ b/lib/sqlparser/vendor/phpmyadmin/sql-parser/tests/data/parser/parseUpdateErr.out @@ -0,0 +1,733 @@ +{ + "query": "-- extraneous comma\nUPDATE\n users\nSET\n username = \"Dan\",\n id=155,\nWHERE 1 = 1;", + "lexer": { + "@type": "PhpMyAdmin\\SqlParser\\Lexer", + "PARSER_METHODS": [ + "parseDelimiter", + "parseWhitespace", + "parseNumber", + "parseComment", + "parseOperator", + "parseBool", + "parseString", + "parseSymbol", + "parseKeyword", + "parseLabel", + "parseUnknown" + ], + "str": "-- extraneous comma\nUPDATE\n users\nSET\n username = \"Dan\",\n id=155,\nWHERE 1 = 1;", + "len": 87, + "last": 87, + "list": { + "@type": "PhpMyAdmin\\SqlParser\\TokensList", + "tokens": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "-- extraneous comma", + "value": "-- extraneous comma", + "keyword": null, + "type": 4, + "flags": 4, + "position": 0 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 19 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "UPDATE", + "value": "UPDATE", + "keyword": "UPDATE", + "type": 1, + "flags": 3, + "position": 20 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 26 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "users", + "value": "users", + "keyword": null, + "type": 0, + "flags": 0, + "position": 31 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 36 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "SET", + "value": "SET", + "keyword": "SET", + "type": 1, + "flags": 11, + "position": 37 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 40 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "username", + "value": "username", + "keyword": null, + "type": 0, + "flags": 0, + "position": 45 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 53 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 54 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 55 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\"Dan\"", + "value": "Dan", + "keyword": null, + "type": 7, + "flags": 2, + "position": 56 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 61 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 62 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "id", + "value": "id", + "keyword": null, + "type": 0, + "flags": 0, + "position": 67 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 69 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "155", + "value": 155, + "keyword": null, + "type": 6, + "flags": 0, + "position": 70 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ",", + "value": ",", + "keyword": null, + "type": 2, + "flags": 16, + "position": 73 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "\n", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 74 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "WHERE", + "value": "WHERE", + "keyword": "WHERE", + "type": 1, + "flags": 3, + "position": 75 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 80 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 81 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 82 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "=", + "value": "=", + "keyword": null, + "type": 2, + "flags": 2, + "position": 83 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": " ", + "value": " ", + "keyword": null, + "type": 3, + "flags": 0, + "position": 84 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": "1", + "value": 1, + "keyword": null, + "type": 6, + "flags": 0, + "position": 85 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": ";", + "value": ";", + "keyword": null, + "type": 9, + "flags": 0, + "position": 86 + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Token", + "token": null, + "value": null, + "keyword": null, + "type": 9, + "flags": 0, + "position": null + } + ], + "count": 29, + "idx": 29 + }, + "DEFAULT_DELIMITER": ";", + "delimiter": ";", + "delimiterLen": 1, + "strict": false, + "errors": [] + }, + "parser": { + "@type": "PhpMyAdmin\\SqlParser\\Parser", + "STATEMENT_PARSERS": { + "DESCRIBE": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "DESC": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "EXPLAIN": "PhpMyAdmin\\SqlParser\\Statements\\ExplainStatement", + "FLUSH": "", + "GRANT": "", + "HELP": "", + "SET PASSWORD": "", + "STATUS": "", + "USE": "", + "ANALYZE": "PhpMyAdmin\\SqlParser\\Statements\\AnalyzeStatement", + "BACKUP": "PhpMyAdmin\\SqlParser\\Statements\\BackupStatement", + "CHECK": "PhpMyAdmin\\SqlParser\\Statements\\CheckStatement", + "CHECKSUM": "PhpMyAdmin\\SqlParser\\Statements\\ChecksumStatement", + "OPTIMIZE": "PhpMyAdmin\\SqlParser\\Statements\\OptimizeStatement", + "REPAIR": "PhpMyAdmin\\SqlParser\\Statements\\RepairStatement", + "RESTORE": "PhpMyAdmin\\SqlParser\\Statements\\RestoreStatement", + "SET": "PhpMyAdmin\\SqlParser\\Statements\\SetStatement", + "SHOW": "PhpMyAdmin\\SqlParser\\Statements\\ShowStatement", + "ALTER": "PhpMyAdmin\\SqlParser\\Statements\\AlterStatement", + "CREATE": "PhpMyAdmin\\SqlParser\\Statements\\CreateStatement", + "DROP": "PhpMyAdmin\\SqlParser\\Statements\\DropStatement", + "RENAME": "PhpMyAdmin\\SqlParser\\Statements\\RenameStatement", + "TRUNCATE": "PhpMyAdmin\\SqlParser\\Statements\\TruncateStatement", + "CALL": "PhpMyAdmin\\SqlParser\\Statements\\CallStatement", + "DELETE": "PhpMyAdmin\\SqlParser\\Statements\\DeleteStatement", + "DO": "", + "HANDLER": "", + "INSERT": "PhpMyAdmin\\SqlParser\\Statements\\InsertStatement", + "LOAD DATA": "PhpMyAdmin\\SqlParser\\Statements\\LoadStatement", + "REPLACE": "PhpMyAdmin\\SqlParser\\Statements\\ReplaceStatement", + "SELECT": "PhpMyAdmin\\SqlParser\\Statements\\SelectStatement", + "UPDATE": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "WITH": "PhpMyAdmin\\SqlParser\\Statements\\WithStatement", + "DEALLOCATE": "", + "EXECUTE": "", + "PREPARE": "", + "BEGIN": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "COMMIT": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "ROLLBACK": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "START TRANSACTION": "PhpMyAdmin\\SqlParser\\Statements\\TransactionStatement", + "PURGE": "PhpMyAdmin\\SqlParser\\Statements\\PurgeStatement", + "LOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement", + "UNLOCK": "PhpMyAdmin\\SqlParser\\Statements\\LockStatement" + }, + "KEYWORD_PARSERS": { + "PARTITION BY": [], + "SUBPARTITION BY": [], + "_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "options" + }, + "_END_OPTIONS": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "field": "end_options" + }, + "INTERSECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "EXCEPT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION ALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "UNION DISTINCT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\UnionKeyword", + "field": "union" + }, + "ALTER": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "ANALYZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "BACKUP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CALL": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "call" + }, + "CHECK": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CHECKSUM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "CROSS JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "DROP": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "fields", + "options": { + "parseField": "table" + } + }, + "FORCE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "FROM": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "from", + "options": { + "field": "table" + } + }, + "GROUP BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\GroupKeyword", + "field": "group" + }, + "HAVING": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "having" + }, + "IGNORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "INTO": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IntoKeyword", + "field": "into" + }, + "JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "ON": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "INNER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "FULL OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL LEFT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "NATURAL RIGHT OUTER JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "STRAIGHT_JOIN": { + "class": "PhpMyAdmin\\SqlParser\\Components\\JoinKeyword", + "field": "join" + }, + "LIMIT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Limit", + "field": "limit" + }, + "OPTIMIZE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "ORDER BY": { + "class": "PhpMyAdmin\\SqlParser\\Components\\OrderKeyword", + "field": "order" + }, + "PARTITION": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ArrayObj", + "field": "partition" + }, + "PROCEDURE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\FunctionCall", + "field": "procedure" + }, + "RENAME": { + "class": "PhpMyAdmin\\SqlParser\\Components\\RenameOperation", + "field": "renames" + }, + "REPAIR": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "RESTORE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "SET": { + "class": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "field": "set" + }, + "SELECT": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "expr" + }, + "TRUNCATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "field": "table", + "options": { + "parseField": "table" + } + }, + "UPDATE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\ExpressionArray", + "field": "tables", + "options": { + "parseField": "table" + } + }, + "USE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\IndexHint", + "field": "index_hints" + }, + "VALUE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "VALUES": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Array2d", + "field": "values" + }, + "WHERE": { + "class": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "field": "where" + } + }, + "list": { + "@type": "@1" + }, + "statements": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Statements\\UpdateStatement", + "OPTIONS": { + "LOW_PRIORITY": 1, + "IGNORE": 2 + }, + "CLAUSES": { + "UPDATE": [ + "UPDATE", + 2 + ], + "_OPTIONS": [ + "_OPTIONS", + 1 + ], + "_UPDATE": [ + "UPDATE", + 1 + ], + "SET": [ + "SET", + 3 + ], + "WHERE": [ + "WHERE", + 3 + ], + "ORDER BY": [ + "ORDER BY", + 3 + ], + "LIMIT": [ + "LIMIT", + 3 + ] + }, + "tables": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Expression", + "ALLOWED_KEYWORDS": { + "AS": 1, + "DUAL": 1, + "NULL": 1, + "REGEXP": 1, + "CASE": 1, + "DIV": 1, + "AND": 1, + "OR": 1, + "XOR": 1, + "NOT": 1, + "MOD": 1 + }, + "database": null, + "table": "users", + "column": null, + "expr": "users", + "alias": null, + "function": null, + "subquery": null + } + ], + "set": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "column": "username", + "value": "\"Dan\"" + }, + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\SetOperation", + "column": "id", + "value": "155" + } + ], + "where": [ + { + "@type": "PhpMyAdmin\\SqlParser\\Components\\Condition", + "DELIMITERS": [ + "&&", + "||", + "AND", + "OR", + "XOR" + ], + "ALLOWED_KEYWORDS": { + "ALL": 1, + "AND": 1, + "BETWEEN": 1, + "EXISTS": 1, + "IF": 1, + "IN": 1, + "INTERVAL": 1, + "IS": 1, + "LIKE": 1, + "MATCH": 1, + "NOT IN": 1, + "NOT NULL": 1, + "NOT": 1, + "NULL": 1, + "OR": 1, + "REGEXP": 1, + "RLIKE": 1, + "SOUNDS": 1, + "XOR": 1 + }, + "identifiers": [], + "isOperator": false, + "expr": "1 = 1" + } + ], + "order": null, + "limit": null, + "END_OPTIONS": [], + "options": { + "@type": "PhpMyAdmin\\SqlParser\\Components\\OptionsArray", + "options": [] + }, + "first": 0, + "last": 26 + } + ], + "brackets": 0, + "strict": false, + "errors": [] + }, + "errors": { + "lexer": [], + "parser": [ + [ + "Unexpected token.", + { + "@type": "@20" + }, + 0 + ] + ] + } +} \ No newline at end of file diff --git a/lib/sqlparser/vendor/symfony/polyfill-mbstring/LICENSE b/lib/sqlparser/vendor/symfony/polyfill-mbstring/LICENSE new file mode 100644 index 0000000000..4cd8bdd300 --- /dev/null +++ b/lib/sqlparser/vendor/symfony/polyfill-mbstring/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2015-2019 Fabien Potencier + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is furnished +to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/lib/sqlparser/vendor/symfony/polyfill-mbstring/Mbstring.php b/lib/sqlparser/vendor/symfony/polyfill-mbstring/Mbstring.php new file mode 100644 index 0000000000..693749f22b --- /dev/null +++ b/lib/sqlparser/vendor/symfony/polyfill-mbstring/Mbstring.php @@ -0,0 +1,873 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +namespace Symfony\Polyfill\Mbstring; + +/** + * Partial mbstring implementation in PHP, iconv based, UTF-8 centric. + * + * Implemented: + * - mb_chr - Returns a specific character from its Unicode code point + * - mb_convert_encoding - Convert character encoding + * - mb_convert_variables - Convert character code in variable(s) + * - mb_decode_mimeheader - Decode string in MIME header field + * - mb_encode_mimeheader - Encode string for MIME header XXX NATIVE IMPLEMENTATION IS REALLY BUGGED + * - mb_decode_numericentity - Decode HTML numeric string reference to character + * - mb_encode_numericentity - Encode character to HTML numeric string reference + * - mb_convert_case - Perform case folding on a string + * - mb_detect_encoding - Detect character encoding + * - mb_get_info - Get internal settings of mbstring + * - mb_http_input - Detect HTTP input character encoding + * - mb_http_output - Set/Get HTTP output character encoding + * - mb_internal_encoding - Set/Get internal character encoding + * - mb_list_encodings - Returns an array of all supported encodings + * - mb_ord - Returns the Unicode code point of a character + * - mb_output_handler - Callback function converts character encoding in output buffer + * - mb_scrub - Replaces ill-formed byte sequences with substitute characters + * - mb_strlen - Get string length + * - mb_strpos - Find position of first occurrence of string in a string + * - mb_strrpos - Find position of last occurrence of a string in a string + * - mb_str_split - Convert a string to an array + * - mb_strtolower - Make a string lowercase + * - mb_strtoupper - Make a string uppercase + * - mb_substitute_character - Set/Get substitution character + * - mb_substr - Get part of string + * - mb_stripos - Finds position of first occurrence of a string within another, case insensitive + * - mb_stristr - Finds first occurrence of a string within another, case insensitive + * - mb_strrchr - Finds the last occurrence of a character in a string within another + * - mb_strrichr - Finds the last occurrence of a character in a string within another, case insensitive + * - mb_strripos - Finds position of last occurrence of a string within another, case insensitive + * - mb_strstr - Finds first occurrence of a string within another + * - mb_strwidth - Return width of string + * - mb_substr_count - Count the number of substring occurrences + * + * Not implemented: + * - mb_convert_kana - Convert "kana" one from another ("zen-kaku", "han-kaku" and more) + * - mb_ereg_* - Regular expression with multibyte support + * - mb_parse_str - Parse GET/POST/COOKIE data and set global variable + * - mb_preferred_mime_name - Get MIME charset string + * - mb_regex_encoding - Returns current encoding for multibyte regex as string + * - mb_regex_set_options - Set/Get the default options for mbregex functions + * - mb_send_mail - Send encoded mail + * - mb_split - Split multibyte string using regular expression + * - mb_strcut - Get part of string + * - mb_strimwidth - Get truncated string with specified width + * + * @author Nicolas Grekas + * + * @internal + */ +final class Mbstring +{ + public const MB_CASE_FOLD = \PHP_INT_MAX; + + private const CASE_FOLD = [ + ['µ', 'ſ', "\xCD\x85", 'ς', "\xCF\x90", "\xCF\x91", "\xCF\x95", "\xCF\x96", "\xCF\xB0", "\xCF\xB1", "\xCF\xB5", "\xE1\xBA\x9B", "\xE1\xBE\xBE"], + ['μ', 's', 'ι', 'σ', 'β', 'θ', 'φ', 'π', 'κ', 'ρ', 'ε', "\xE1\xB9\xA1", 'ι'], + ]; + + private static $encodingList = ['ASCII', 'UTF-8']; + private static $language = 'neutral'; + private static $internalEncoding = 'UTF-8'; + + public static function mb_convert_encoding($s, $toEncoding, $fromEncoding = null) + { + if (\is_array($fromEncoding) || ($fromEncoding !== null && false !== strpos($fromEncoding, ','))) { + $fromEncoding = self::mb_detect_encoding($s, $fromEncoding); + } else { + $fromEncoding = self::getEncoding($fromEncoding); + } + + $toEncoding = self::getEncoding($toEncoding); + + if ('BASE64' === $fromEncoding) { + $s = base64_decode($s); + $fromEncoding = $toEncoding; + } + + if ('BASE64' === $toEncoding) { + return base64_encode($s); + } + + if ('HTML-ENTITIES' === $toEncoding || 'HTML' === $toEncoding) { + if ('HTML-ENTITIES' === $fromEncoding || 'HTML' === $fromEncoding) { + $fromEncoding = 'Windows-1252'; + } + if ('UTF-8' !== $fromEncoding) { + $s = \iconv($fromEncoding, 'UTF-8//IGNORE', $s); + } + + return preg_replace_callback('/[\x80-\xFF]+/', [__CLASS__, 'html_encoding_callback'], $s); + } + + if ('HTML-ENTITIES' === $fromEncoding) { + $s = html_entity_decode($s, \ENT_COMPAT, 'UTF-8'); + $fromEncoding = 'UTF-8'; + } + + return \iconv($fromEncoding, $toEncoding.'//IGNORE', $s); + } + + public static function mb_convert_variables($toEncoding, $fromEncoding, &...$vars) + { + $ok = true; + array_walk_recursive($vars, function (&$v) use (&$ok, $toEncoding, $fromEncoding) { + if (false === $v = self::mb_convert_encoding($v, $toEncoding, $fromEncoding)) { + $ok = false; + } + }); + + return $ok ? $fromEncoding : false; + } + + public static function mb_decode_mimeheader($s) + { + return \iconv_mime_decode($s, 2, self::$internalEncoding); + } + + public static function mb_encode_mimeheader($s, $charset = null, $transferEncoding = null, $linefeed = null, $indent = null) + { + trigger_error('mb_encode_mimeheader() is bugged. Please use iconv_mime_encode() instead', \E_USER_WARNING); + } + + public static function mb_decode_numericentity($s, $convmap, $encoding = null) + { + if (null !== $s && !is_scalar($s) && !(\is_object($s) && method_exists($s, '__toString'))) { + trigger_error('mb_decode_numericentity() expects parameter 1 to be string, '.\gettype($s).' given', \E_USER_WARNING); + + return null; + } + + if (!\is_array($convmap) || (80000 > \PHP_VERSION_ID && !$convmap)) { + return false; + } + + if (null !== $encoding && !is_scalar($encoding)) { + trigger_error('mb_decode_numericentity() expects parameter 3 to be string, '.\gettype($s).' given', \E_USER_WARNING); + + return ''; // Instead of null (cf. mb_encode_numericentity). + } + + $s = (string) $s; + if ('' === $s) { + return ''; + } + + $encoding = self::getEncoding($encoding); + + if ('UTF-8' === $encoding) { + $encoding = null; + if (!preg_match('//u', $s)) { + $s = @\iconv('UTF-8', 'UTF-8//IGNORE', $s); + } + } else { + $s = \iconv($encoding, 'UTF-8//IGNORE', $s); + } + + $cnt = floor(\count($convmap) / 4) * 4; + + for ($i = 0; $i < $cnt; $i += 4) { + // collector_decode_htmlnumericentity ignores $convmap[$i + 3] + $convmap[$i] += $convmap[$i + 2]; + $convmap[$i + 1] += $convmap[$i + 2]; + } + + $s = preg_replace_callback('/&#(?:0*([0-9]+)|x0*([0-9a-fA-F]+))(?!&);?/', function (array $m) use ($cnt, $convmap) { + $c = isset($m[2]) ? (int) hexdec($m[2]) : $m[1]; + for ($i = 0; $i < $cnt; $i += 4) { + if ($c >= $convmap[$i] && $c <= $convmap[$i + 1]) { + return self::mb_chr($c - $convmap[$i + 2]); + } + } + + return $m[0]; + }, $s); + + if (null === $encoding) { + return $s; + } + + return \iconv('UTF-8', $encoding.'//IGNORE', $s); + } + + public static function mb_encode_numericentity($s, $convmap, $encoding = null, $is_hex = false) + { + if (null !== $s && !is_scalar($s) && !(\is_object($s) && method_exists($s, '__toString'))) { + trigger_error('mb_encode_numericentity() expects parameter 1 to be string, '.\gettype($s).' given', \E_USER_WARNING); + + return null; + } + + if (!\is_array($convmap) || (80000 > \PHP_VERSION_ID && !$convmap)) { + return false; + } + + if (null !== $encoding && !is_scalar($encoding)) { + trigger_error('mb_encode_numericentity() expects parameter 3 to be string, '.\gettype($s).' given', \E_USER_WARNING); + + return null; // Instead of '' (cf. mb_decode_numericentity). + } + + if (null !== $is_hex && !is_scalar($is_hex)) { + trigger_error('mb_encode_numericentity() expects parameter 4 to be boolean, '.\gettype($s).' given', \E_USER_WARNING); + + return null; + } + + $s = (string) $s; + if ('' === $s) { + return ''; + } + + $encoding = self::getEncoding($encoding); + + if ('UTF-8' === $encoding) { + $encoding = null; + if (!preg_match('//u', $s)) { + $s = @\iconv('UTF-8', 'UTF-8//IGNORE', $s); + } + } else { + $s = \iconv($encoding, 'UTF-8//IGNORE', $s); + } + + static $ulenMask = ["\xC0" => 2, "\xD0" => 2, "\xE0" => 3, "\xF0" => 4]; + + $cnt = floor(\count($convmap) / 4) * 4; + $i = 0; + $len = \strlen($s); + $result = ''; + + while ($i < $len) { + $ulen = $s[$i] < "\x80" ? 1 : $ulenMask[$s[$i] & "\xF0"]; + $uchr = substr($s, $i, $ulen); + $i += $ulen; + $c = self::mb_ord($uchr); + + for ($j = 0; $j < $cnt; $j += 4) { + if ($c >= $convmap[$j] && $c <= $convmap[$j + 1]) { + $cOffset = ($c + $convmap[$j + 2]) & $convmap[$j + 3]; + $result .= $is_hex ? sprintf('&#x%X;', $cOffset) : '&#'.$cOffset.';'; + continue 2; + } + } + $result .= $uchr; + } + + if (null === $encoding) { + return $result; + } + + return \iconv('UTF-8', $encoding.'//IGNORE', $result); + } + + public static function mb_convert_case($s, $mode, $encoding = null) + { + $s = (string) $s; + if ('' === $s) { + return ''; + } + + $encoding = self::getEncoding($encoding); + + if ('UTF-8' === $encoding) { + $encoding = null; + if (!preg_match('//u', $s)) { + $s = @\iconv('UTF-8', 'UTF-8//IGNORE', $s); + } + } else { + $s = \iconv($encoding, 'UTF-8//IGNORE', $s); + } + + if (\MB_CASE_TITLE == $mode) { + static $titleRegexp = null; + if (null === $titleRegexp) { + $titleRegexp = self::getData('titleCaseRegexp'); + } + $s = preg_replace_callback($titleRegexp, [__CLASS__, 'title_case'], $s); + } else { + if (\MB_CASE_UPPER == $mode) { + static $upper = null; + if (null === $upper) { + $upper = self::getData('upperCase'); + } + $map = $upper; + } else { + if (self::MB_CASE_FOLD === $mode) { + $s = str_replace(self::CASE_FOLD[0], self::CASE_FOLD[1], $s); + } + + static $lower = null; + if (null === $lower) { + $lower = self::getData('lowerCase'); + } + $map = $lower; + } + + static $ulenMask = ["\xC0" => 2, "\xD0" => 2, "\xE0" => 3, "\xF0" => 4]; + + $i = 0; + $len = \strlen($s); + + while ($i < $len) { + $ulen = $s[$i] < "\x80" ? 1 : $ulenMask[$s[$i] & "\xF0"]; + $uchr = substr($s, $i, $ulen); + $i += $ulen; + + if (isset($map[$uchr])) { + $uchr = $map[$uchr]; + $nlen = \strlen($uchr); + + if ($nlen == $ulen) { + $nlen = $i; + do { + $s[--$nlen] = $uchr[--$ulen]; + } while ($ulen); + } else { + $s = substr_replace($s, $uchr, $i - $ulen, $ulen); + $len += $nlen - $ulen; + $i += $nlen - $ulen; + } + } + } + } + + if (null === $encoding) { + return $s; + } + + return \iconv('UTF-8', $encoding.'//IGNORE', $s); + } + + public static function mb_internal_encoding($encoding = null) + { + if (null === $encoding) { + return self::$internalEncoding; + } + + $normalizedEncoding = self::getEncoding($encoding); + + if ('UTF-8' === $normalizedEncoding || false !== @\iconv($normalizedEncoding, $normalizedEncoding, ' ')) { + self::$internalEncoding = $normalizedEncoding; + + return true; + } + + if (80000 > \PHP_VERSION_ID) { + return false; + } + + throw new \ValueError(sprintf('Argument #1 ($encoding) must be a valid encoding, "%s" given', $encoding)); + } + + public static function mb_language($lang = null) + { + if (null === $lang) { + return self::$language; + } + + switch ($normalizedLang = strtolower($lang)) { + case 'uni': + case 'neutral': + self::$language = $normalizedLang; + + return true; + } + + if (80000 > \PHP_VERSION_ID) { + return false; + } + + throw new \ValueError(sprintf('Argument #1 ($language) must be a valid language, "%s" given', $lang)); + } + + public static function mb_list_encodings() + { + return ['UTF-8']; + } + + public static function mb_encoding_aliases($encoding) + { + switch (strtoupper($encoding)) { + case 'UTF8': + case 'UTF-8': + return ['utf8']; + } + + return false; + } + + public static function mb_check_encoding($var = null, $encoding = null) + { + if (null === $encoding) { + if (null === $var) { + return false; + } + $encoding = self::$internalEncoding; + } + + return self::mb_detect_encoding($var, [$encoding]) || false !== @\iconv($encoding, $encoding, $var); + } + + public static function mb_detect_encoding($str, $encodingList = null, $strict = false) + { + if (null === $encodingList) { + $encodingList = self::$encodingList; + } else { + if (!\is_array($encodingList)) { + $encodingList = array_map('trim', explode(',', $encodingList)); + } + $encodingList = array_map('strtoupper', $encodingList); + } + + foreach ($encodingList as $enc) { + switch ($enc) { + case 'ASCII': + if (!preg_match('/[\x80-\xFF]/', $str)) { + return $enc; + } + break; + + case 'UTF8': + case 'UTF-8': + if (preg_match('//u', $str)) { + return 'UTF-8'; + } + break; + + default: + if (0 === strncmp($enc, 'ISO-8859-', 9)) { + return $enc; + } + } + } + + return false; + } + + public static function mb_detect_order($encodingList = null) + { + if (null === $encodingList) { + return self::$encodingList; + } + + if (!\is_array($encodingList)) { + $encodingList = array_map('trim', explode(',', $encodingList)); + } + $encodingList = array_map('strtoupper', $encodingList); + + foreach ($encodingList as $enc) { + switch ($enc) { + default: + if (strncmp($enc, 'ISO-8859-', 9)) { + return false; + } + // no break + case 'ASCII': + case 'UTF8': + case 'UTF-8': + } + } + + self::$encodingList = $encodingList; + + return true; + } + + public static function mb_strlen($s, $encoding = null) + { + $encoding = self::getEncoding($encoding); + if ('CP850' === $encoding || 'ASCII' === $encoding) { + return \strlen($s); + } + + return @\iconv_strlen($s, $encoding); + } + + public static function mb_strpos($haystack, $needle, $offset = 0, $encoding = null) + { + $encoding = self::getEncoding($encoding); + if ('CP850' === $encoding || 'ASCII' === $encoding) { + return strpos($haystack, $needle, $offset); + } + + $needle = (string) $needle; + if ('' === $needle) { + if (80000 > \PHP_VERSION_ID) { + trigger_error(__METHOD__.': Empty delimiter', \E_USER_WARNING); + + return false; + } + + return 0; + } + + return \iconv_strpos($haystack, $needle, $offset, $encoding); + } + + public static function mb_strrpos($haystack, $needle, $offset = 0, $encoding = null) + { + $encoding = self::getEncoding($encoding); + if ('CP850' === $encoding || 'ASCII' === $encoding) { + return strrpos($haystack, $needle, $offset); + } + + if ($offset != (int) $offset) { + $offset = 0; + } elseif ($offset = (int) $offset) { + if ($offset < 0) { + if (0 > $offset += self::mb_strlen($needle)) { + $haystack = self::mb_substr($haystack, 0, $offset, $encoding); + } + $offset = 0; + } else { + $haystack = self::mb_substr($haystack, $offset, 2147483647, $encoding); + } + } + + $pos = '' !== $needle || 80000 > \PHP_VERSION_ID + ? \iconv_strrpos($haystack, $needle, $encoding) + : self::mb_strlen($haystack, $encoding); + + return false !== $pos ? $offset + $pos : false; + } + + public static function mb_str_split($string, $split_length = 1, $encoding = null) + { + if (null !== $string && !is_scalar($string) && !(\is_object($string) && method_exists($string, '__toString'))) { + trigger_error('mb_str_split() expects parameter 1 to be string, '.\gettype($string).' given', \E_USER_WARNING); + + return null; + } + + if (1 > $split_length = (int) $split_length) { + if (80000 > \PHP_VERSION_ID) { + trigger_error('The length of each segment must be greater than zero', \E_USER_WARNING); + return false; + } + + throw new \ValueError('Argument #2 ($length) must be greater than 0'); + } + + if (null === $encoding) { + $encoding = mb_internal_encoding(); + } + + if ('UTF-8' === $encoding = self::getEncoding($encoding)) { + $rx = '/('; + while (65535 < $split_length) { + $rx .= '.{65535}'; + $split_length -= 65535; + } + $rx .= '.{'.$split_length.'})/us'; + + return preg_split($rx, $string, -1, \PREG_SPLIT_DELIM_CAPTURE | \PREG_SPLIT_NO_EMPTY); + } + + $result = []; + $length = mb_strlen($string, $encoding); + + for ($i = 0; $i < $length; $i += $split_length) { + $result[] = mb_substr($string, $i, $split_length, $encoding); + } + + return $result; + } + + public static function mb_strtolower($s, $encoding = null) + { + return self::mb_convert_case($s, \MB_CASE_LOWER, $encoding); + } + + public static function mb_strtoupper($s, $encoding = null) + { + return self::mb_convert_case($s, \MB_CASE_UPPER, $encoding); + } + + public static function mb_substitute_character($c = null) + { + if (null === $c) { + return 'none'; + } + if (0 === strcasecmp($c, 'none')) { + return true; + } + if (80000 > \PHP_VERSION_ID) { + return false; + } + if (\is_int($c) || 'long' === $c || 'entity' === $c) { + return false; + } + + throw new \ValueError('Argument #1 ($substitute_character) must be "none", "long", "entity" or a valid codepoint'); + } + + public static function mb_substr($s, $start, $length = null, $encoding = null) + { + $encoding = self::getEncoding($encoding); + if ('CP850' === $encoding || 'ASCII' === $encoding) { + return (string) substr($s, $start, null === $length ? 2147483647 : $length); + } + + if ($start < 0) { + $start = \iconv_strlen($s, $encoding) + $start; + if ($start < 0) { + $start = 0; + } + } + + if (null === $length) { + $length = 2147483647; + } elseif ($length < 0) { + $length = \iconv_strlen($s, $encoding) + $length - $start; + if ($length < 0) { + return ''; + } + } + + return (string) \iconv_substr($s, $start, $length, $encoding); + } + + public static function mb_stripos($haystack, $needle, $offset = 0, $encoding = null) + { + $haystack = self::mb_convert_case($haystack, self::MB_CASE_FOLD, $encoding); + $needle = self::mb_convert_case($needle, self::MB_CASE_FOLD, $encoding); + + return self::mb_strpos($haystack, $needle, $offset, $encoding); + } + + public static function mb_stristr($haystack, $needle, $part = false, $encoding = null) + { + $pos = self::mb_stripos($haystack, $needle, 0, $encoding); + + return self::getSubpart($pos, $part, $haystack, $encoding); + } + + public static function mb_strrchr($haystack, $needle, $part = false, $encoding = null) + { + $encoding = self::getEncoding($encoding); + if ('CP850' === $encoding || 'ASCII' === $encoding) { + $pos = strrpos($haystack, $needle); + } else { + $needle = self::mb_substr($needle, 0, 1, $encoding); + $pos = \iconv_strrpos($haystack, $needle, $encoding); + } + + return self::getSubpart($pos, $part, $haystack, $encoding); + } + + public static function mb_strrichr($haystack, $needle, $part = false, $encoding = null) + { + $needle = self::mb_substr($needle, 0, 1, $encoding); + $pos = self::mb_strripos($haystack, $needle, $encoding); + + return self::getSubpart($pos, $part, $haystack, $encoding); + } + + public static function mb_strripos($haystack, $needle, $offset = 0, $encoding = null) + { + $haystack = self::mb_convert_case($haystack, self::MB_CASE_FOLD, $encoding); + $needle = self::mb_convert_case($needle, self::MB_CASE_FOLD, $encoding); + + return self::mb_strrpos($haystack, $needle, $offset, $encoding); + } + + public static function mb_strstr($haystack, $needle, $part = false, $encoding = null) + { + $pos = strpos($haystack, $needle); + if (false === $pos) { + return false; + } + if ($part) { + return substr($haystack, 0, $pos); + } + + return substr($haystack, $pos); + } + + public static function mb_get_info($type = 'all') + { + $info = [ + 'internal_encoding' => self::$internalEncoding, + 'http_output' => 'pass', + 'http_output_conv_mimetypes' => '^(text/|application/xhtml\+xml)', + 'func_overload' => 0, + 'func_overload_list' => 'no overload', + 'mail_charset' => 'UTF-8', + 'mail_header_encoding' => 'BASE64', + 'mail_body_encoding' => 'BASE64', + 'illegal_chars' => 0, + 'encoding_translation' => 'Off', + 'language' => self::$language, + 'detect_order' => self::$encodingList, + 'substitute_character' => 'none', + 'strict_detection' => 'Off', + ]; + + if ('all' === $type) { + return $info; + } + if (isset($info[$type])) { + return $info[$type]; + } + + return false; + } + + public static function mb_http_input($type = '') + { + return false; + } + + public static function mb_http_output($encoding = null) + { + return null !== $encoding ? 'pass' === $encoding : 'pass'; + } + + public static function mb_strwidth($s, $encoding = null) + { + $encoding = self::getEncoding($encoding); + + if ('UTF-8' !== $encoding) { + $s = \iconv($encoding, 'UTF-8//IGNORE', $s); + } + + $s = preg_replace('/[\x{1100}-\x{115F}\x{2329}\x{232A}\x{2E80}-\x{303E}\x{3040}-\x{A4CF}\x{AC00}-\x{D7A3}\x{F900}-\x{FAFF}\x{FE10}-\x{FE19}\x{FE30}-\x{FE6F}\x{FF00}-\x{FF60}\x{FFE0}-\x{FFE6}\x{20000}-\x{2FFFD}\x{30000}-\x{3FFFD}]/u', '', $s, -1, $wide); + + return ($wide << 1) + \iconv_strlen($s, 'UTF-8'); + } + + public static function mb_substr_count($haystack, $needle, $encoding = null) + { + return substr_count($haystack, $needle); + } + + public static function mb_output_handler($contents, $status) + { + return $contents; + } + + public static function mb_chr($code, $encoding = null) + { + if (0x80 > $code %= 0x200000) { + $s = \chr($code); + } elseif (0x800 > $code) { + $s = \chr(0xC0 | $code >> 6).\chr(0x80 | $code & 0x3F); + } elseif (0x10000 > $code) { + $s = \chr(0xE0 | $code >> 12).\chr(0x80 | $code >> 6 & 0x3F).\chr(0x80 | $code & 0x3F); + } else { + $s = \chr(0xF0 | $code >> 18).\chr(0x80 | $code >> 12 & 0x3F).\chr(0x80 | $code >> 6 & 0x3F).\chr(0x80 | $code & 0x3F); + } + + if ('UTF-8' !== $encoding = self::getEncoding($encoding)) { + $s = mb_convert_encoding($s, $encoding, 'UTF-8'); + } + + return $s; + } + + public static function mb_ord($s, $encoding = null) + { + if ('UTF-8' !== $encoding = self::getEncoding($encoding)) { + $s = mb_convert_encoding($s, 'UTF-8', $encoding); + } + + if (1 === \strlen($s)) { + return \ord($s); + } + + $code = ($s = unpack('C*', substr($s, 0, 4))) ? $s[1] : 0; + if (0xF0 <= $code) { + return (($code - 0xF0) << 18) + (($s[2] - 0x80) << 12) + (($s[3] - 0x80) << 6) + $s[4] - 0x80; + } + if (0xE0 <= $code) { + return (($code - 0xE0) << 12) + (($s[2] - 0x80) << 6) + $s[3] - 0x80; + } + if (0xC0 <= $code) { + return (($code - 0xC0) << 6) + $s[2] - 0x80; + } + + return $code; + } + + private static function getSubpart($pos, $part, $haystack, $encoding) + { + if (false === $pos) { + return false; + } + if ($part) { + return self::mb_substr($haystack, 0, $pos, $encoding); + } + + return self::mb_substr($haystack, $pos, null, $encoding); + } + + private static function html_encoding_callback(array $m) + { + $i = 1; + $entities = ''; + $m = unpack('C*', htmlentities($m[0], \ENT_COMPAT, 'UTF-8')); + + while (isset($m[$i])) { + if (0x80 > $m[$i]) { + $entities .= \chr($m[$i++]); + continue; + } + if (0xF0 <= $m[$i]) { + $c = (($m[$i++] - 0xF0) << 18) + (($m[$i++] - 0x80) << 12) + (($m[$i++] - 0x80) << 6) + $m[$i++] - 0x80; + } elseif (0xE0 <= $m[$i]) { + $c = (($m[$i++] - 0xE0) << 12) + (($m[$i++] - 0x80) << 6) + $m[$i++] - 0x80; + } else { + $c = (($m[$i++] - 0xC0) << 6) + $m[$i++] - 0x80; + } + + $entities .= '&#'.$c.';'; + } + + return $entities; + } + + private static function title_case(array $s) + { + return self::mb_convert_case($s[1], \MB_CASE_UPPER, 'UTF-8').self::mb_convert_case($s[2], \MB_CASE_LOWER, 'UTF-8'); + } + + private static function getData($file) + { + if (file_exists($file = __DIR__.'/Resources/unidata/'.$file.'.php')) { + return require $file; + } + + return false; + } + + private static function getEncoding($encoding) + { + if (null === $encoding) { + return self::$internalEncoding; + } + + if ('UTF-8' === $encoding) { + return 'UTF-8'; + } + + $encoding = strtoupper($encoding); + + if ('8BIT' === $encoding || 'BINARY' === $encoding) { + return 'CP850'; + } + + if ('UTF8' === $encoding) { + return 'UTF-8'; + } + + return $encoding; + } +} diff --git a/lib/sqlparser/vendor/symfony/polyfill-mbstring/README.md b/lib/sqlparser/vendor/symfony/polyfill-mbstring/README.md new file mode 100644 index 0000000000..478b40da25 --- /dev/null +++ b/lib/sqlparser/vendor/symfony/polyfill-mbstring/README.md @@ -0,0 +1,13 @@ +Symfony Polyfill / Mbstring +=========================== + +This component provides a partial, native PHP implementation for the +[Mbstring](https://php.net/mbstring) extension. + +More information can be found in the +[main Polyfill README](https://github.com/symfony/polyfill/blob/main/README.md). + +License +======= + +This library is released under the [MIT license](LICENSE). diff --git a/lib/sqlparser/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php b/lib/sqlparser/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php new file mode 100644 index 0000000000..fac60b081a --- /dev/null +++ b/lib/sqlparser/vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.php @@ -0,0 +1,1397 @@ + 'a', + 'B' => 'b', + 'C' => 'c', + 'D' => 'd', + 'E' => 'e', + 'F' => 'f', + 'G' => 'g', + 'H' => 'h', + 'I' => 'i', + 'J' => 'j', + 'K' => 'k', + 'L' => 'l', + 'M' => 'm', + 'N' => 'n', + 'O' => 'o', + 'P' => 'p', + 'Q' => 'q', + 'R' => 'r', + 'S' => 's', + 'T' => 't', + 'U' => 'u', + 'V' => 'v', + 'W' => 'w', + 'X' => 'x', + 'Y' => 'y', + 'Z' => 'z', + 'À' => 'à', + 'Á' => 'á', + 'Â' => 'â', + 'Ã' => 'ã', + 'Ä' => 'ä', + 'Å' => 'å', + 'Æ' => 'æ', + 'Ç' => 'ç', + 'È' => 'è', + 'É' => 'é', + 'Ê' => 'ê', + 'Ë' => 'ë', + 'Ì' => 'ì', + 'Í' => 'í', + 'Î' => 'î', + 'Ï' => 'ï', + 'Ð' => 'ð', + 'Ñ' => 'ñ', + 'Ò' => 'ò', + 'Ó' => 'ó', + 'Ô' => 'ô', + 'Õ' => 'õ', + 'Ö' => 'ö', + 'Ø' => 'ø', + 'Ù' => 'ù', + 'Ú' => 'ú', + 'Û' => 'û', + 'Ü' => 'ü', + 'Ý' => 'ý', + 'Þ' => 'þ', + 'Ā' => 'ā', + 'Ă' => 'ă', + 'Ą' => 'ą', + 'Ć' => 'ć', + 'Ĉ' => 'ĉ', + 'Ċ' => 'ċ', + 'Č' => 'č', + 'Ď' => 'ď', + 'Đ' => 'đ', + 'Ē' => 'ē', + 'Ĕ' => 'ĕ', + 'Ė' => 'ė', + 'Ę' => 'ę', + 'Ě' => 'ě', + 'Ĝ' => 'ĝ', + 'Ğ' => 'ğ', + 'Ġ' => 'ġ', + 'Ģ' => 'ģ', + 'Ĥ' => 'ĥ', + 'Ħ' => 'ħ', + 'Ĩ' => 'ĩ', + 'Ī' => 'ī', + 'Ĭ' => 'ĭ', + 'Į' => 'į', + 'İ' => 'i̇', + 'IJ' => 'ij', + 'Ĵ' => 'ĵ', + 'Ķ' => 'ķ', + 'Ĺ' => 'ĺ', + 'Ļ' => 'ļ', + 'Ľ' => 'ľ', + 'Ŀ' => 'ŀ', + 'Ł' => 'ł', + 'Ń' => 'ń', + 'Ņ' => 'ņ', + 'Ň' => 'ň', + 'Ŋ' => 'ŋ', + 'Ō' => 'ō', + 'Ŏ' => 'ŏ', + 'Ő' => 'ő', + 'Œ' => 'œ', + 'Ŕ' => 'ŕ', + 'Ŗ' => 'ŗ', + 'Ř' => 'ř', + 'Ś' => 'ś', + 'Ŝ' => 'ŝ', + 'Ş' => 'ş', + 'Š' => 'š', + 'Ţ' => 'ţ', + 'Ť' => 'ť', + 'Ŧ' => 'ŧ', + 'Ũ' => 'ũ', + 'Ū' => 'ū', + 'Ŭ' => 'ŭ', + 'Ů' => 'ů', + 'Ű' => 'ű', + 'Ų' => 'ų', + 'Ŵ' => 'ŵ', + 'Ŷ' => 'ŷ', + 'Ÿ' => 'ÿ', + 'Ź' => 'ź', + 'Ż' => 'ż', + 'Ž' => 'ž', + 'Ɓ' => 'ɓ', + 'Ƃ' => 'ƃ', + 'Ƅ' => 'ƅ', + 'Ɔ' => 'ɔ', + 'Ƈ' => 'ƈ', + 'Ɖ' => 'ɖ', + 'Ɗ' => 'ɗ', + 'Ƌ' => 'ƌ', + 'Ǝ' => 'ǝ', + 'Ə' => 'ə', + 'Ɛ' => 'ɛ', + 'Ƒ' => 'ƒ', + 'Ɠ' => 'ɠ', + 'Ɣ' => 'ɣ', + 'Ɩ' => 'ɩ', + 'Ɨ' => 'ɨ', + 'Ƙ' => 'ƙ', + 'Ɯ' => 'ɯ', + 'Ɲ' => 'ɲ', + 'Ɵ' => 'ɵ', + 'Ơ' => 'ơ', + 'Ƣ' => 'ƣ', + 'Ƥ' => 'ƥ', + 'Ʀ' => 'ʀ', + 'Ƨ' => 'ƨ', + 'Ʃ' => 'ʃ', + 'Ƭ' => 'ƭ', + 'Ʈ' => 'ʈ', + 'Ư' => 'ư', + 'Ʊ' => 'ʊ', + 'Ʋ' => 'ʋ', + 'Ƴ' => 'ƴ', + 'Ƶ' => 'ƶ', + 'Ʒ' => 'ʒ', + 'Ƹ' => 'ƹ', + 'Ƽ' => 'ƽ', + 'DŽ' => 'dž', + 'Dž' => 'dž', + 'LJ' => 'lj', + 'Lj' => 'lj', + 'NJ' => 'nj', + 'Nj' => 'nj', + 'Ǎ' => 'ǎ', + 'Ǐ' => 'ǐ', + 'Ǒ' => 'ǒ', + 'Ǔ' => 'ǔ', + 'Ǖ' => 'ǖ', + 'Ǘ' => 'ǘ', + 'Ǚ' => 'ǚ', + 'Ǜ' => 'ǜ', + 'Ǟ' => 'ǟ', + 'Ǡ' => 'ǡ', + 'Ǣ' => 'ǣ', + 'Ǥ' => 'ǥ', + 'Ǧ' => 'ǧ', + 'Ǩ' => 'ǩ', + 'Ǫ' => 'ǫ', + 'Ǭ' => 'ǭ', + 'Ǯ' => 'ǯ', + 'DZ' => 'dz', + 'Dz' => 'dz', + 'Ǵ' => 'ǵ', + 'Ƕ' => 'ƕ', + 'Ƿ' => 'ƿ', + 'Ǹ' => 'ǹ', + 'Ǻ' => 'ǻ', + 'Ǽ' => 'ǽ', + 'Ǿ' => 'ǿ', + 'Ȁ' => 'ȁ', + 'Ȃ' => 'ȃ', + 'Ȅ' => 'ȅ', + 'Ȇ' => 'ȇ', + 'Ȉ' => 'ȉ', + 'Ȋ' => 'ȋ', + 'Ȍ' => 'ȍ', + 'Ȏ' => 'ȏ', + 'Ȑ' => 'ȑ', + 'Ȓ' => 'ȓ', + 'Ȕ' => 'ȕ', + 'Ȗ' => 'ȗ', + 'Ș' => 'ș', + 'Ț' => 'ț', + 'Ȝ' => 'ȝ', + 'Ȟ' => 'ȟ', + 'Ƞ' => 'ƞ', + 'Ȣ' => 'ȣ', + 'Ȥ' => 'ȥ', + 'Ȧ' => 'ȧ', + 'Ȩ' => 'ȩ', + 'Ȫ' => 'ȫ', + 'Ȭ' => 'ȭ', + 'Ȯ' => 'ȯ', + 'Ȱ' => 'ȱ', + 'Ȳ' => 'ȳ', + 'Ⱥ' => 'ⱥ', + 'Ȼ' => 'ȼ', + 'Ƚ' => 'ƚ', + 'Ⱦ' => 'ⱦ', + 'Ɂ' => 'ɂ', + 'Ƀ' => 'ƀ', + 'Ʉ' => 'ʉ', + 'Ʌ' => 'ʌ', + 'Ɇ' => 'ɇ', + 'Ɉ' => 'ɉ', + 'Ɋ' => 'ɋ', + 'Ɍ' => 'ɍ', + 'Ɏ' => 'ɏ', + 'Ͱ' => 'ͱ', + 'Ͳ' => 'ͳ', + 'Ͷ' => 'ͷ', + 'Ϳ' => 'ϳ', + 'Ά' => 'ά', + 'Έ' => 'έ', + 'Ή' => 'ή', + 'Ί' => 'ί', + 'Ό' => 'ό', + 'Ύ' => 'ύ', + 'Ώ' => 'ώ', + 'Α' => 'α', + 'Β' => 'β', + 'Γ' => 'γ', + 'Δ' => 'δ', + 'Ε' => 'ε', + 'Ζ' => 'ζ', + 'Η' => 'η', + 'Θ' => 'θ', + 'Ι' => 'ι', + 'Κ' => 'κ', + 'Λ' => 'λ', + 'Μ' => 'μ', + 'Ν' => 'ν', + 'Ξ' => 'ξ', + 'Ο' => 'ο', + 'Π' => 'π', + 'Ρ' => 'ρ', + 'Σ' => 'σ', + 'Τ' => 'τ', + 'Υ' => 'υ', + 'Φ' => 'φ', + 'Χ' => 'χ', + 'Ψ' => 'ψ', + 'Ω' => 'ω', + 'Ϊ' => 'ϊ', + 'Ϋ' => 'ϋ', + 'Ϗ' => 'ϗ', + 'Ϙ' => 'ϙ', + 'Ϛ' => 'ϛ', + 'Ϝ' => 'ϝ', + 'Ϟ' => 'ϟ', + 'Ϡ' => 'ϡ', + 'Ϣ' => 'ϣ', + 'Ϥ' => 'ϥ', + 'Ϧ' => 'ϧ', + 'Ϩ' => 'ϩ', + 'Ϫ' => 'ϫ', + 'Ϭ' => 'ϭ', + 'Ϯ' => 'ϯ', + 'ϴ' => 'θ', + 'Ϸ' => 'ϸ', + 'Ϲ' => 'ϲ', + 'Ϻ' => 'ϻ', + 'Ͻ' => 'ͻ', + 'Ͼ' => 'ͼ', + 'Ͽ' => 'ͽ', + 'Ѐ' => 'ѐ', + 'Ё' => 'ё', + 'Ђ' => 'ђ', + 'Ѓ' => 'ѓ', + 'Є' => 'є', + 'Ѕ' => 'ѕ', + 'І' => 'і', + 'Ї' => 'ї', + 'Ј' => 'ј', + 'Љ' => 'љ', + 'Њ' => 'њ', + 'Ћ' => 'ћ', + 'Ќ' => 'ќ', + 'Ѝ' => 'ѝ', + 'Ў' => 'ў', + 'Џ' => 'џ', + 'А' => 'а', + 'Б' => 'б', + 'В' => 'в', + 'Г' => 'г', + 'Д' => 'д', + 'Е' => 'е', + 'Ж' => 'ж', + 'З' => 'з', + 'И' => 'и', + 'Й' => 'й', + 'К' => 'к', + 'Л' => 'л', + 'М' => 'м', + 'Н' => 'н', + 'О' => 'о', + 'П' => 'п', + 'Р' => 'р', + 'С' => 'с', + 'Т' => 'т', + 'У' => 'у', + 'Ф' => 'ф', + 'Х' => 'х', + 'Ц' => 'ц', + 'Ч' => 'ч', + 'Ш' => 'ш', + 'Щ' => 'щ', + 'Ъ' => 'ъ', + 'Ы' => 'ы', + 'Ь' => 'ь', + 'Э' => 'э', + 'Ю' => 'ю', + 'Я' => 'я', + 'Ѡ' => 'ѡ', + 'Ѣ' => 'ѣ', + 'Ѥ' => 'ѥ', + 'Ѧ' => 'ѧ', + 'Ѩ' => 'ѩ', + 'Ѫ' => 'ѫ', + 'Ѭ' => 'ѭ', + 'Ѯ' => 'ѯ', + 'Ѱ' => 'ѱ', + 'Ѳ' => 'ѳ', + 'Ѵ' => 'ѵ', + 'Ѷ' => 'ѷ', + 'Ѹ' => 'ѹ', + 'Ѻ' => 'ѻ', + 'Ѽ' => 'ѽ', + 'Ѿ' => 'ѿ', + 'Ҁ' => 'ҁ', + 'Ҋ' => 'ҋ', + 'Ҍ' => 'ҍ', + 'Ҏ' => 'ҏ', + 'Ґ' => 'ґ', + 'Ғ' => 'ғ', + 'Ҕ' => 'ҕ', + 'Җ' => 'җ', + 'Ҙ' => 'ҙ', + 'Қ' => 'қ', + 'Ҝ' => 'ҝ', + 'Ҟ' => 'ҟ', + 'Ҡ' => 'ҡ', + 'Ң' => 'ң', + 'Ҥ' => 'ҥ', + 'Ҧ' => 'ҧ', + 'Ҩ' => 'ҩ', + 'Ҫ' => 'ҫ', + 'Ҭ' => 'ҭ', + 'Ү' => 'ү', + 'Ұ' => 'ұ', + 'Ҳ' => 'ҳ', + 'Ҵ' => 'ҵ', + 'Ҷ' => 'ҷ', + 'Ҹ' => 'ҹ', + 'Һ' => 'һ', + 'Ҽ' => 'ҽ', + 'Ҿ' => 'ҿ', + 'Ӏ' => 'ӏ', + 'Ӂ' => 'ӂ', + 'Ӄ' => 'ӄ', + 'Ӆ' => 'ӆ', + 'Ӈ' => 'ӈ', + 'Ӊ' => 'ӊ', + 'Ӌ' => 'ӌ', + 'Ӎ' => 'ӎ', + 'Ӑ' => 'ӑ', + 'Ӓ' => 'ӓ', + 'Ӕ' => 'ӕ', + 'Ӗ' => 'ӗ', + 'Ә' => 'ә', + 'Ӛ' => 'ӛ', + 'Ӝ' => 'ӝ', + 'Ӟ' => 'ӟ', + 'Ӡ' => 'ӡ', + 'Ӣ' => 'ӣ', + 'Ӥ' => 'ӥ', + 'Ӧ' => 'ӧ', + 'Ө' => 'ө', + 'Ӫ' => 'ӫ', + 'Ӭ' => 'ӭ', + 'Ӯ' => 'ӯ', + 'Ӱ' => 'ӱ', + 'Ӳ' => 'ӳ', + 'Ӵ' => 'ӵ', + 'Ӷ' => 'ӷ', + 'Ӹ' => 'ӹ', + 'Ӻ' => 'ӻ', + 'Ӽ' => 'ӽ', + 'Ӿ' => 'ӿ', + 'Ԁ' => 'ԁ', + 'Ԃ' => 'ԃ', + 'Ԅ' => 'ԅ', + 'Ԇ' => 'ԇ', + 'Ԉ' => 'ԉ', + 'Ԋ' => 'ԋ', + 'Ԍ' => 'ԍ', + 'Ԏ' => 'ԏ', + 'Ԑ' => 'ԑ', + 'Ԓ' => 'ԓ', + 'Ԕ' => 'ԕ', + 'Ԗ' => 'ԗ', + 'Ԙ' => 'ԙ', + 'Ԛ' => 'ԛ', + 'Ԝ' => 'ԝ', + 'Ԟ' => 'ԟ', + 'Ԡ' => 'ԡ', + 'Ԣ' => 'ԣ', + 'Ԥ' => 'ԥ', + 'Ԧ' => 'ԧ', + 'Ԩ' => 'ԩ', + 'Ԫ' => 'ԫ', + 'Ԭ' => 'ԭ', + 'Ԯ' => 'ԯ', + 'Ա' => 'ա', + 'Բ' => 'բ', + 'Գ' => 'գ', + 'Դ' => 'դ', + 'Ե' => 'ե', + 'Զ' => 'զ', + 'Է' => 'է', + 'Ը' => 'ը', + 'Թ' => 'թ', + 'Ժ' => 'ժ', + 'Ի' => 'ի', + 'Լ' => 'լ', + 'Խ' => 'խ', + 'Ծ' => 'ծ', + 'Կ' => 'կ', + 'Հ' => 'հ', + 'Ձ' => 'ձ', + 'Ղ' => 'ղ', + 'Ճ' => 'ճ', + 'Մ' => 'մ', + 'Յ' => 'յ', + 'Ն' => 'ն', + 'Շ' => 'շ', + 'Ո' => 'ո', + 'Չ' => 'չ', + 'Պ' => 'պ', + 'Ջ' => 'ջ', + 'Ռ' => 'ռ', + 'Ս' => 'ս', + 'Վ' => 'վ', + 'Տ' => 'տ', + 'Ր' => 'ր', + 'Ց' => 'ց', + 'Ւ' => 'ւ', + 'Փ' => 'փ', + 'Ք' => 'ք', + 'Օ' => 'օ', + 'Ֆ' => 'ֆ', + 'Ⴀ' => 'ⴀ', + 'Ⴁ' => 'ⴁ', + 'Ⴂ' => 'ⴂ', + 'Ⴃ' => 'ⴃ', + 'Ⴄ' => 'ⴄ', + 'Ⴅ' => 'ⴅ', + 'Ⴆ' => 'ⴆ', + 'Ⴇ' => 'ⴇ', + 'Ⴈ' => 'ⴈ', + 'Ⴉ' => 'ⴉ', + 'Ⴊ' => 'ⴊ', + 'Ⴋ' => 'ⴋ', + 'Ⴌ' => 'ⴌ', + 'Ⴍ' => 'ⴍ', + 'Ⴎ' => 'ⴎ', + 'Ⴏ' => 'ⴏ', + 'Ⴐ' => 'ⴐ', + 'Ⴑ' => 'ⴑ', + 'Ⴒ' => 'ⴒ', + 'Ⴓ' => 'ⴓ', + 'Ⴔ' => 'ⴔ', + 'Ⴕ' => 'ⴕ', + 'Ⴖ' => 'ⴖ', + 'Ⴗ' => 'ⴗ', + 'Ⴘ' => 'ⴘ', + 'Ⴙ' => 'ⴙ', + 'Ⴚ' => 'ⴚ', + 'Ⴛ' => 'ⴛ', + 'Ⴜ' => 'ⴜ', + 'Ⴝ' => 'ⴝ', + 'Ⴞ' => 'ⴞ', + 'Ⴟ' => 'ⴟ', + 'Ⴠ' => 'ⴠ', + 'Ⴡ' => 'ⴡ', + 'Ⴢ' => 'ⴢ', + 'Ⴣ' => 'ⴣ', + 'Ⴤ' => 'ⴤ', + 'Ⴥ' => 'ⴥ', + 'Ⴧ' => 'ⴧ', + 'Ⴭ' => 'ⴭ', + 'Ꭰ' => 'ꭰ', + 'Ꭱ' => 'ꭱ', + 'Ꭲ' => 'ꭲ', + 'Ꭳ' => 'ꭳ', + 'Ꭴ' => 'ꭴ', + 'Ꭵ' => 'ꭵ', + 'Ꭶ' => 'ꭶ', + 'Ꭷ' => 'ꭷ', + 'Ꭸ' => 'ꭸ', + 'Ꭹ' => 'ꭹ', + 'Ꭺ' => 'ꭺ', + 'Ꭻ' => 'ꭻ', + 'Ꭼ' => 'ꭼ', + 'Ꭽ' => 'ꭽ', + 'Ꭾ' => 'ꭾ', + 'Ꭿ' => 'ꭿ', + 'Ꮀ' => 'ꮀ', + 'Ꮁ' => 'ꮁ', + 'Ꮂ' => 'ꮂ', + 'Ꮃ' => 'ꮃ', + 'Ꮄ' => 'ꮄ', + 'Ꮅ' => 'ꮅ', + 'Ꮆ' => 'ꮆ', + 'Ꮇ' => 'ꮇ', + 'Ꮈ' => 'ꮈ', + 'Ꮉ' => 'ꮉ', + 'Ꮊ' => 'ꮊ', + 'Ꮋ' => 'ꮋ', + 'Ꮌ' => 'ꮌ', + 'Ꮍ' => 'ꮍ', + 'Ꮎ' => 'ꮎ', + 'Ꮏ' => 'ꮏ', + 'Ꮐ' => 'ꮐ', + 'Ꮑ' => 'ꮑ', + 'Ꮒ' => 'ꮒ', + 'Ꮓ' => 'ꮓ', + 'Ꮔ' => 'ꮔ', + 'Ꮕ' => 'ꮕ', + 'Ꮖ' => 'ꮖ', + 'Ꮗ' => 'ꮗ', + 'Ꮘ' => 'ꮘ', + 'Ꮙ' => 'ꮙ', + 'Ꮚ' => 'ꮚ', + 'Ꮛ' => 'ꮛ', + 'Ꮜ' => 'ꮜ', + 'Ꮝ' => 'ꮝ', + 'Ꮞ' => 'ꮞ', + 'Ꮟ' => 'ꮟ', + 'Ꮠ' => 'ꮠ', + 'Ꮡ' => 'ꮡ', + 'Ꮢ' => 'ꮢ', + 'Ꮣ' => 'ꮣ', + 'Ꮤ' => 'ꮤ', + 'Ꮥ' => 'ꮥ', + 'Ꮦ' => 'ꮦ', + 'Ꮧ' => 'ꮧ', + 'Ꮨ' => 'ꮨ', + 'Ꮩ' => 'ꮩ', + 'Ꮪ' => 'ꮪ', + 'Ꮫ' => 'ꮫ', + 'Ꮬ' => 'ꮬ', + 'Ꮭ' => 'ꮭ', + 'Ꮮ' => 'ꮮ', + 'Ꮯ' => 'ꮯ', + 'Ꮰ' => 'ꮰ', + 'Ꮱ' => 'ꮱ', + 'Ꮲ' => 'ꮲ', + 'Ꮳ' => 'ꮳ', + 'Ꮴ' => 'ꮴ', + 'Ꮵ' => 'ꮵ', + 'Ꮶ' => 'ꮶ', + 'Ꮷ' => 'ꮷ', + 'Ꮸ' => 'ꮸ', + 'Ꮹ' => 'ꮹ', + 'Ꮺ' => 'ꮺ', + 'Ꮻ' => 'ꮻ', + 'Ꮼ' => 'ꮼ', + 'Ꮽ' => 'ꮽ', + 'Ꮾ' => 'ꮾ', + 'Ꮿ' => 'ꮿ', + 'Ᏸ' => 'ᏸ', + 'Ᏹ' => 'ᏹ', + 'Ᏺ' => 'ᏺ', + 'Ᏻ' => 'ᏻ', + 'Ᏼ' => 'ᏼ', + 'Ᏽ' => 'ᏽ', + 'Ა' => 'ა', + 'Ბ' => 'ბ', + 'Გ' => 'გ', + 'Დ' => 'დ', + 'Ე' => 'ე', + 'Ვ' => 'ვ', + 'Ზ' => 'ზ', + 'Თ' => 'თ', + 'Ი' => 'ი', + 'Კ' => 'კ', + 'Ლ' => 'ლ', + 'Მ' => 'მ', + 'Ნ' => 'ნ', + 'Ო' => 'ო', + 'Პ' => 'პ', + 'Ჟ' => 'ჟ', + 'Რ' => 'რ', + 'Ს' => 'ს', + 'Ტ' => 'ტ', + 'Უ' => 'უ', + 'Ფ' => 'ფ', + 'Ქ' => 'ქ', + 'Ღ' => 'ღ', + 'Ყ' => 'ყ', + 'Შ' => 'შ', + 'Ჩ' => 'ჩ', + 'Ც' => 'ც', + 'Ძ' => 'ძ', + 'Წ' => 'წ', + 'Ჭ' => 'ჭ', + 'Ხ' => 'ხ', + 'Ჯ' => 'ჯ', + 'Ჰ' => 'ჰ', + 'Ჱ' => 'ჱ', + 'Ჲ' => 'ჲ', + 'Ჳ' => 'ჳ', + 'Ჴ' => 'ჴ', + 'Ჵ' => 'ჵ', + 'Ჶ' => 'ჶ', + 'Ჷ' => 'ჷ', + 'Ჸ' => 'ჸ', + 'Ჹ' => 'ჹ', + 'Ჺ' => 'ჺ', + 'Ჽ' => 'ჽ', + 'Ჾ' => 'ჾ', + 'Ჿ' => 'ჿ', + 'Ḁ' => 'ḁ', + 'Ḃ' => 'ḃ', + 'Ḅ' => 'ḅ', + 'Ḇ' => 'ḇ', + 'Ḉ' => 'ḉ', + 'Ḋ' => 'ḋ', + 'Ḍ' => 'ḍ', + 'Ḏ' => 'ḏ', + 'Ḑ' => 'ḑ', + 'Ḓ' => 'ḓ', + 'Ḕ' => 'ḕ', + 'Ḗ' => 'ḗ', + 'Ḙ' => 'ḙ', + 'Ḛ' => 'ḛ', + 'Ḝ' => 'ḝ', + 'Ḟ' => 'ḟ', + 'Ḡ' => 'ḡ', + 'Ḣ' => 'ḣ', + 'Ḥ' => 'ḥ', + 'Ḧ' => 'ḧ', + 'Ḩ' => 'ḩ', + 'Ḫ' => 'ḫ', + 'Ḭ' => 'ḭ', + 'Ḯ' => 'ḯ', + 'Ḱ' => 'ḱ', + 'Ḳ' => 'ḳ', + 'Ḵ' => 'ḵ', + 'Ḷ' => 'ḷ', + 'Ḹ' => 'ḹ', + 'Ḻ' => 'ḻ', + 'Ḽ' => 'ḽ', + 'Ḿ' => 'ḿ', + 'Ṁ' => 'ṁ', + 'Ṃ' => 'ṃ', + 'Ṅ' => 'ṅ', + 'Ṇ' => 'ṇ', + 'Ṉ' => 'ṉ', + 'Ṋ' => 'ṋ', + 'Ṍ' => 'ṍ', + 'Ṏ' => 'ṏ', + 'Ṑ' => 'ṑ', + 'Ṓ' => 'ṓ', + 'Ṕ' => 'ṕ', + 'Ṗ' => 'ṗ', + 'Ṙ' => 'ṙ', + 'Ṛ' => 'ṛ', + 'Ṝ' => 'ṝ', + 'Ṟ' => 'ṟ', + 'Ṡ' => 'ṡ', + 'Ṣ' => 'ṣ', + 'Ṥ' => 'ṥ', + 'Ṧ' => 'ṧ', + 'Ṩ' => 'ṩ', + 'Ṫ' => 'ṫ', + 'Ṭ' => 'ṭ', + 'Ṯ' => 'ṯ', + 'Ṱ' => 'ṱ', + 'Ṳ' => 'ṳ', + 'Ṵ' => 'ṵ', + 'Ṷ' => 'ṷ', + 'Ṹ' => 'ṹ', + 'Ṻ' => 'ṻ', + 'Ṽ' => 'ṽ', + 'Ṿ' => 'ṿ', + 'Ẁ' => 'ẁ', + 'Ẃ' => 'ẃ', + 'Ẅ' => 'ẅ', + 'Ẇ' => 'ẇ', + 'Ẉ' => 'ẉ', + 'Ẋ' => 'ẋ', + 'Ẍ' => 'ẍ', + 'Ẏ' => 'ẏ', + 'Ẑ' => 'ẑ', + 'Ẓ' => 'ẓ', + 'Ẕ' => 'ẕ', + 'ẞ' => 'ß', + 'Ạ' => 'ạ', + 'Ả' => 'ả', + 'Ấ' => 'ấ', + 'Ầ' => 'ầ', + 'Ẩ' => 'ẩ', + 'Ẫ' => 'ẫ', + 'Ậ' => 'ậ', + 'Ắ' => 'ắ', + 'Ằ' => 'ằ', + 'Ẳ' => 'ẳ', + 'Ẵ' => 'ẵ', + 'Ặ' => 'ặ', + 'Ẹ' => 'ẹ', + 'Ẻ' => 'ẻ', + 'Ẽ' => 'ẽ', + 'Ế' => 'ế', + 'Ề' => 'ề', + 'Ể' => 'ể', + 'Ễ' => 'ễ', + 'Ệ' => 'ệ', + 'Ỉ' => 'ỉ', + 'Ị' => 'ị', + 'Ọ' => 'ọ', + 'Ỏ' => 'ỏ', + 'Ố' => 'ố', + 'Ồ' => 'ồ', + 'Ổ' => 'ổ', + 'Ỗ' => 'ỗ', + 'Ộ' => 'ộ', + 'Ớ' => 'ớ', + 'Ờ' => 'ờ', + 'Ở' => 'ở', + 'Ỡ' => 'ỡ', + 'Ợ' => 'ợ', + 'Ụ' => 'ụ', + 'Ủ' => 'ủ', + 'Ứ' => 'ứ', + 'Ừ' => 'ừ', + 'Ử' => 'ử', + 'Ữ' => 'ữ', + 'Ự' => 'ự', + 'Ỳ' => 'ỳ', + 'Ỵ' => 'ỵ', + 'Ỷ' => 'ỷ', + 'Ỹ' => 'ỹ', + 'Ỻ' => 'ỻ', + 'Ỽ' => 'ỽ', + 'Ỿ' => 'ỿ', + 'Ἀ' => 'ἀ', + 'Ἁ' => 'ἁ', + 'Ἂ' => 'ἂ', + 'Ἃ' => 'ἃ', + 'Ἄ' => 'ἄ', + 'Ἅ' => 'ἅ', + 'Ἆ' => 'ἆ', + 'Ἇ' => 'ἇ', + 'Ἐ' => 'ἐ', + 'Ἑ' => 'ἑ', + 'Ἒ' => 'ἒ', + 'Ἓ' => 'ἓ', + 'Ἔ' => 'ἔ', + 'Ἕ' => 'ἕ', + 'Ἠ' => 'ἠ', + 'Ἡ' => 'ἡ', + 'Ἢ' => 'ἢ', + 'Ἣ' => 'ἣ', + 'Ἤ' => 'ἤ', + 'Ἥ' => 'ἥ', + 'Ἦ' => 'ἦ', + 'Ἧ' => 'ἧ', + 'Ἰ' => 'ἰ', + 'Ἱ' => 'ἱ', + 'Ἲ' => 'ἲ', + 'Ἳ' => 'ἳ', + 'Ἴ' => 'ἴ', + 'Ἵ' => 'ἵ', + 'Ἶ' => 'ἶ', + 'Ἷ' => 'ἷ', + 'Ὀ' => 'ὀ', + 'Ὁ' => 'ὁ', + 'Ὂ' => 'ὂ', + 'Ὃ' => 'ὃ', + 'Ὄ' => 'ὄ', + 'Ὅ' => 'ὅ', + 'Ὑ' => 'ὑ', + 'Ὓ' => 'ὓ', + 'Ὕ' => 'ὕ', + 'Ὗ' => 'ὗ', + 'Ὠ' => 'ὠ', + 'Ὡ' => 'ὡ', + 'Ὢ' => 'ὢ', + 'Ὣ' => 'ὣ', + 'Ὤ' => 'ὤ', + 'Ὥ' => 'ὥ', + 'Ὦ' => 'ὦ', + 'Ὧ' => 'ὧ', + 'ᾈ' => 'ᾀ', + 'ᾉ' => 'ᾁ', + 'ᾊ' => 'ᾂ', + 'ᾋ' => 'ᾃ', + 'ᾌ' => 'ᾄ', + 'ᾍ' => 'ᾅ', + 'ᾎ' => 'ᾆ', + 'ᾏ' => 'ᾇ', + 'ᾘ' => 'ᾐ', + 'ᾙ' => 'ᾑ', + 'ᾚ' => 'ᾒ', + 'ᾛ' => 'ᾓ', + 'ᾜ' => 'ᾔ', + 'ᾝ' => 'ᾕ', + 'ᾞ' => 'ᾖ', + 'ᾟ' => 'ᾗ', + 'ᾨ' => 'ᾠ', + 'ᾩ' => 'ᾡ', + 'ᾪ' => 'ᾢ', + 'ᾫ' => 'ᾣ', + 'ᾬ' => 'ᾤ', + 'ᾭ' => 'ᾥ', + 'ᾮ' => 'ᾦ', + 'ᾯ' => 'ᾧ', + 'Ᾰ' => 'ᾰ', + 'Ᾱ' => 'ᾱ', + 'Ὰ' => 'ὰ', + 'Ά' => 'ά', + 'ᾼ' => 'ᾳ', + 'Ὲ' => 'ὲ', + 'Έ' => 'έ', + 'Ὴ' => 'ὴ', + 'Ή' => 'ή', + 'ῌ' => 'ῃ', + 'Ῐ' => 'ῐ', + 'Ῑ' => 'ῑ', + 'Ὶ' => 'ὶ', + 'Ί' => 'ί', + 'Ῠ' => 'ῠ', + 'Ῡ' => 'ῡ', + 'Ὺ' => 'ὺ', + 'Ύ' => 'ύ', + 'Ῥ' => 'ῥ', + 'Ὸ' => 'ὸ', + 'Ό' => 'ό', + 'Ὼ' => 'ὼ', + 'Ώ' => 'ώ', + 'ῼ' => 'ῳ', + 'Ω' => 'ω', + 'K' => 'k', + 'Å' => 'å', + 'Ⅎ' => 'ⅎ', + 'Ⅰ' => 'ⅰ', + 'Ⅱ' => 'ⅱ', + 'Ⅲ' => 'ⅲ', + 'Ⅳ' => 'ⅳ', + 'Ⅴ' => 'ⅴ', + 'Ⅵ' => 'ⅵ', + 'Ⅶ' => 'ⅶ', + 'Ⅷ' => 'ⅷ', + 'Ⅸ' => 'ⅸ', + 'Ⅹ' => 'ⅹ', + 'Ⅺ' => 'ⅺ', + 'Ⅻ' => 'ⅻ', + 'Ⅼ' => 'ⅼ', + 'Ⅽ' => 'ⅽ', + 'Ⅾ' => 'ⅾ', + 'Ⅿ' => 'ⅿ', + 'Ↄ' => 'ↄ', + 'Ⓐ' => 'ⓐ', + 'Ⓑ' => 'ⓑ', + 'Ⓒ' => 'ⓒ', + 'Ⓓ' => 'ⓓ', + 'Ⓔ' => 'ⓔ', + 'Ⓕ' => 'ⓕ', + 'Ⓖ' => 'ⓖ', + 'Ⓗ' => 'ⓗ', + 'Ⓘ' => 'ⓘ', + 'Ⓙ' => 'ⓙ', + 'Ⓚ' => 'ⓚ', + 'Ⓛ' => 'ⓛ', + 'Ⓜ' => 'ⓜ', + 'Ⓝ' => 'ⓝ', + 'Ⓞ' => 'ⓞ', + 'Ⓟ' => 'ⓟ', + 'Ⓠ' => 'ⓠ', + 'Ⓡ' => 'ⓡ', + 'Ⓢ' => 'ⓢ', + 'Ⓣ' => 'ⓣ', + 'Ⓤ' => 'ⓤ', + 'Ⓥ' => 'ⓥ', + 'Ⓦ' => 'ⓦ', + 'Ⓧ' => 'ⓧ', + 'Ⓨ' => 'ⓨ', + 'Ⓩ' => 'ⓩ', + 'Ⰰ' => 'ⰰ', + 'Ⰱ' => 'ⰱ', + 'Ⰲ' => 'ⰲ', + 'Ⰳ' => 'ⰳ', + 'Ⰴ' => 'ⰴ', + 'Ⰵ' => 'ⰵ', + 'Ⰶ' => 'ⰶ', + 'Ⰷ' => 'ⰷ', + 'Ⰸ' => 'ⰸ', + 'Ⰹ' => 'ⰹ', + 'Ⰺ' => 'ⰺ', + 'Ⰻ' => 'ⰻ', + 'Ⰼ' => 'ⰼ', + 'Ⰽ' => 'ⰽ', + 'Ⰾ' => 'ⰾ', + 'Ⰿ' => 'ⰿ', + 'Ⱀ' => 'ⱀ', + 'Ⱁ' => 'ⱁ', + 'Ⱂ' => 'ⱂ', + 'Ⱃ' => 'ⱃ', + 'Ⱄ' => 'ⱄ', + 'Ⱅ' => 'ⱅ', + 'Ⱆ' => 'ⱆ', + 'Ⱇ' => 'ⱇ', + 'Ⱈ' => 'ⱈ', + 'Ⱉ' => 'ⱉ', + 'Ⱊ' => 'ⱊ', + 'Ⱋ' => 'ⱋ', + 'Ⱌ' => 'ⱌ', + 'Ⱍ' => 'ⱍ', + 'Ⱎ' => 'ⱎ', + 'Ⱏ' => 'ⱏ', + 'Ⱐ' => 'ⱐ', + 'Ⱑ' => 'ⱑ', + 'Ⱒ' => 'ⱒ', + 'Ⱓ' => 'ⱓ', + 'Ⱔ' => 'ⱔ', + 'Ⱕ' => 'ⱕ', + 'Ⱖ' => 'ⱖ', + 'Ⱗ' => 'ⱗ', + 'Ⱘ' => 'ⱘ', + 'Ⱙ' => 'ⱙ', + 'Ⱚ' => 'ⱚ', + 'Ⱛ' => 'ⱛ', + 'Ⱜ' => 'ⱜ', + 'Ⱝ' => 'ⱝ', + 'Ⱞ' => 'ⱞ', + 'Ⱡ' => 'ⱡ', + 'Ɫ' => 'ɫ', + 'Ᵽ' => 'ᵽ', + 'Ɽ' => 'ɽ', + 'Ⱨ' => 'ⱨ', + 'Ⱪ' => 'ⱪ', + 'Ⱬ' => 'ⱬ', + 'Ɑ' => 'ɑ', + 'Ɱ' => 'ɱ', + 'Ɐ' => 'ɐ', + 'Ɒ' => 'ɒ', + 'Ⱳ' => 'ⱳ', + 'Ⱶ' => 'ⱶ', + 'Ȿ' => 'ȿ', + 'Ɀ' => 'ɀ', + 'Ⲁ' => 'ⲁ', + 'Ⲃ' => 'ⲃ', + 'Ⲅ' => 'ⲅ', + 'Ⲇ' => 'ⲇ', + 'Ⲉ' => 'ⲉ', + 'Ⲋ' => 'ⲋ', + 'Ⲍ' => 'ⲍ', + 'Ⲏ' => 'ⲏ', + 'Ⲑ' => 'ⲑ', + 'Ⲓ' => 'ⲓ', + 'Ⲕ' => 'ⲕ', + 'Ⲗ' => 'ⲗ', + 'Ⲙ' => 'ⲙ', + 'Ⲛ' => 'ⲛ', + 'Ⲝ' => 'ⲝ', + 'Ⲟ' => 'ⲟ', + 'Ⲡ' => 'ⲡ', + 'Ⲣ' => 'ⲣ', + 'Ⲥ' => 'ⲥ', + 'Ⲧ' => 'ⲧ', + 'Ⲩ' => 'ⲩ', + 'Ⲫ' => 'ⲫ', + 'Ⲭ' => 'ⲭ', + 'Ⲯ' => 'ⲯ', + 'Ⲱ' => 'ⲱ', + 'Ⲳ' => 'ⲳ', + 'Ⲵ' => 'ⲵ', + 'Ⲷ' => 'ⲷ', + 'Ⲹ' => 'ⲹ', + 'Ⲻ' => 'ⲻ', + 'Ⲽ' => 'ⲽ', + 'Ⲿ' => 'ⲿ', + 'Ⳁ' => 'ⳁ', + 'Ⳃ' => 'ⳃ', + 'Ⳅ' => 'ⳅ', + 'Ⳇ' => 'ⳇ', + 'Ⳉ' => 'ⳉ', + 'Ⳋ' => 'ⳋ', + 'Ⳍ' => 'ⳍ', + 'Ⳏ' => 'ⳏ', + 'Ⳑ' => 'ⳑ', + 'Ⳓ' => 'ⳓ', + 'Ⳕ' => 'ⳕ', + 'Ⳗ' => 'ⳗ', + 'Ⳙ' => 'ⳙ', + 'Ⳛ' => 'ⳛ', + 'Ⳝ' => 'ⳝ', + 'Ⳟ' => 'ⳟ', + 'Ⳡ' => 'ⳡ', + 'Ⳣ' => 'ⳣ', + 'Ⳬ' => 'ⳬ', + 'Ⳮ' => 'ⳮ', + 'Ⳳ' => 'ⳳ', + 'Ꙁ' => 'ꙁ', + 'Ꙃ' => 'ꙃ', + 'Ꙅ' => 'ꙅ', + 'Ꙇ' => 'ꙇ', + 'Ꙉ' => 'ꙉ', + 'Ꙋ' => 'ꙋ', + 'Ꙍ' => 'ꙍ', + 'Ꙏ' => 'ꙏ', + 'Ꙑ' => 'ꙑ', + 'Ꙓ' => 'ꙓ', + 'Ꙕ' => 'ꙕ', + 'Ꙗ' => 'ꙗ', + 'Ꙙ' => 'ꙙ', + 'Ꙛ' => 'ꙛ', + 'Ꙝ' => 'ꙝ', + 'Ꙟ' => 'ꙟ', + 'Ꙡ' => 'ꙡ', + 'Ꙣ' => 'ꙣ', + 'Ꙥ' => 'ꙥ', + 'Ꙧ' => 'ꙧ', + 'Ꙩ' => 'ꙩ', + 'Ꙫ' => 'ꙫ', + 'Ꙭ' => 'ꙭ', + 'Ꚁ' => 'ꚁ', + 'Ꚃ' => 'ꚃ', + 'Ꚅ' => 'ꚅ', + 'Ꚇ' => 'ꚇ', + 'Ꚉ' => 'ꚉ', + 'Ꚋ' => 'ꚋ', + 'Ꚍ' => 'ꚍ', + 'Ꚏ' => 'ꚏ', + 'Ꚑ' => 'ꚑ', + 'Ꚓ' => 'ꚓ', + 'Ꚕ' => 'ꚕ', + 'Ꚗ' => 'ꚗ', + 'Ꚙ' => 'ꚙ', + 'Ꚛ' => 'ꚛ', + 'Ꜣ' => 'ꜣ', + 'Ꜥ' => 'ꜥ', + 'Ꜧ' => 'ꜧ', + 'Ꜩ' => 'ꜩ', + 'Ꜫ' => 'ꜫ', + 'Ꜭ' => 'ꜭ', + 'Ꜯ' => 'ꜯ', + 'Ꜳ' => 'ꜳ', + 'Ꜵ' => 'ꜵ', + 'Ꜷ' => 'ꜷ', + 'Ꜹ' => 'ꜹ', + 'Ꜻ' => 'ꜻ', + 'Ꜽ' => 'ꜽ', + 'Ꜿ' => 'ꜿ', + 'Ꝁ' => 'ꝁ', + 'Ꝃ' => 'ꝃ', + 'Ꝅ' => 'ꝅ', + 'Ꝇ' => 'ꝇ', + 'Ꝉ' => 'ꝉ', + 'Ꝋ' => 'ꝋ', + 'Ꝍ' => 'ꝍ', + 'Ꝏ' => 'ꝏ', + 'Ꝑ' => 'ꝑ', + 'Ꝓ' => 'ꝓ', + 'Ꝕ' => 'ꝕ', + 'Ꝗ' => 'ꝗ', + 'Ꝙ' => 'ꝙ', + 'Ꝛ' => 'ꝛ', + 'Ꝝ' => 'ꝝ', + 'Ꝟ' => 'ꝟ', + 'Ꝡ' => 'ꝡ', + 'Ꝣ' => 'ꝣ', + 'Ꝥ' => 'ꝥ', + 'Ꝧ' => 'ꝧ', + 'Ꝩ' => 'ꝩ', + 'Ꝫ' => 'ꝫ', + 'Ꝭ' => 'ꝭ', + 'Ꝯ' => 'ꝯ', + 'Ꝺ' => 'ꝺ', + 'Ꝼ' => 'ꝼ', + 'Ᵹ' => 'ᵹ', + 'Ꝿ' => 'ꝿ', + 'Ꞁ' => 'ꞁ', + 'Ꞃ' => 'ꞃ', + 'Ꞅ' => 'ꞅ', + 'Ꞇ' => 'ꞇ', + 'Ꞌ' => 'ꞌ', + 'Ɥ' => 'ɥ', + 'Ꞑ' => 'ꞑ', + 'Ꞓ' => 'ꞓ', + 'Ꞗ' => 'ꞗ', + 'Ꞙ' => 'ꞙ', + 'Ꞛ' => 'ꞛ', + 'Ꞝ' => 'ꞝ', + 'Ꞟ' => 'ꞟ', + 'Ꞡ' => 'ꞡ', + 'Ꞣ' => 'ꞣ', + 'Ꞥ' => 'ꞥ', + 'Ꞧ' => 'ꞧ', + 'Ꞩ' => 'ꞩ', + 'Ɦ' => 'ɦ', + 'Ɜ' => 'ɜ', + 'Ɡ' => 'ɡ', + 'Ɬ' => 'ɬ', + 'Ɪ' => 'ɪ', + 'Ʞ' => 'ʞ', + 'Ʇ' => 'ʇ', + 'Ʝ' => 'ʝ', + 'Ꭓ' => 'ꭓ', + 'Ꞵ' => 'ꞵ', + 'Ꞷ' => 'ꞷ', + 'Ꞹ' => 'ꞹ', + 'Ꞻ' => 'ꞻ', + 'Ꞽ' => 'ꞽ', + 'Ꞿ' => 'ꞿ', + 'Ꟃ' => 'ꟃ', + 'Ꞔ' => 'ꞔ', + 'Ʂ' => 'ʂ', + 'Ᶎ' => 'ᶎ', + 'Ꟈ' => 'ꟈ', + 'Ꟊ' => 'ꟊ', + 'Ꟶ' => 'ꟶ', + 'A' => 'a', + 'B' => 'b', + 'C' => 'c', + 'D' => 'd', + 'E' => 'e', + 'F' => 'f', + 'G' => 'g', + 'H' => 'h', + 'I' => 'i', + 'J' => 'j', + 'K' => 'k', + 'L' => 'l', + 'M' => 'm', + 'N' => 'n', + 'O' => 'o', + 'P' => 'p', + 'Q' => 'q', + 'R' => 'r', + 'S' => 's', + 'T' => 't', + 'U' => 'u', + 'V' => 'v', + 'W' => 'w', + 'X' => 'x', + 'Y' => 'y', + 'Z' => 'z', + '𐐀' => '𐐨', + '𐐁' => '𐐩', + '𐐂' => '𐐪', + '𐐃' => '𐐫', + '𐐄' => '𐐬', + '𐐅' => '𐐭', + '𐐆' => '𐐮', + '𐐇' => '𐐯', + '𐐈' => '𐐰', + '𐐉' => '𐐱', + '𐐊' => '𐐲', + '𐐋' => '𐐳', + '𐐌' => '𐐴', + '𐐍' => '𐐵', + '𐐎' => '𐐶', + '𐐏' => '𐐷', + '𐐐' => '𐐸', + '𐐑' => '𐐹', + '𐐒' => '𐐺', + '𐐓' => '𐐻', + '𐐔' => '𐐼', + '𐐕' => '𐐽', + '𐐖' => '𐐾', + '𐐗' => '𐐿', + '𐐘' => '𐑀', + '𐐙' => '𐑁', + '𐐚' => '𐑂', + '𐐛' => '𐑃', + '𐐜' => '𐑄', + '𐐝' => '𐑅', + '𐐞' => '𐑆', + '𐐟' => '𐑇', + '𐐠' => '𐑈', + '𐐡' => '𐑉', + '𐐢' => '𐑊', + '𐐣' => '𐑋', + '𐐤' => '𐑌', + '𐐥' => '𐑍', + '𐐦' => '𐑎', + '𐐧' => '𐑏', + '𐒰' => '𐓘', + '𐒱' => '𐓙', + '𐒲' => '𐓚', + '𐒳' => '𐓛', + '𐒴' => '𐓜', + '𐒵' => '𐓝', + '𐒶' => '𐓞', + '𐒷' => '𐓟', + '𐒸' => '𐓠', + '𐒹' => '𐓡', + '𐒺' => '𐓢', + '𐒻' => '𐓣', + '𐒼' => '𐓤', + '𐒽' => '𐓥', + '𐒾' => '𐓦', + '𐒿' => '𐓧', + '𐓀' => '𐓨', + '𐓁' => '𐓩', + '𐓂' => '𐓪', + '𐓃' => '𐓫', + '𐓄' => '𐓬', + '𐓅' => '𐓭', + '𐓆' => '𐓮', + '𐓇' => '𐓯', + '𐓈' => '𐓰', + '𐓉' => '𐓱', + '𐓊' => '𐓲', + '𐓋' => '𐓳', + '𐓌' => '𐓴', + '𐓍' => '𐓵', + '𐓎' => '𐓶', + '𐓏' => '𐓷', + '𐓐' => '𐓸', + '𐓑' => '𐓹', + '𐓒' => '𐓺', + '𐓓' => '𐓻', + '𐲀' => '𐳀', + '𐲁' => '𐳁', + '𐲂' => '𐳂', + '𐲃' => '𐳃', + '𐲄' => '𐳄', + '𐲅' => '𐳅', + '𐲆' => '𐳆', + '𐲇' => '𐳇', + '𐲈' => '𐳈', + '𐲉' => '𐳉', + '𐲊' => '𐳊', + '𐲋' => '𐳋', + '𐲌' => '𐳌', + '𐲍' => '𐳍', + '𐲎' => '𐳎', + '𐲏' => '𐳏', + '𐲐' => '𐳐', + '𐲑' => '𐳑', + '𐲒' => '𐳒', + '𐲓' => '𐳓', + '𐲔' => '𐳔', + '𐲕' => '𐳕', + '𐲖' => '𐳖', + '𐲗' => '𐳗', + '𐲘' => '𐳘', + '𐲙' => '𐳙', + '𐲚' => '𐳚', + '𐲛' => '𐳛', + '𐲜' => '𐳜', + '𐲝' => '𐳝', + '𐲞' => '𐳞', + '𐲟' => '𐳟', + '𐲠' => '𐳠', + '𐲡' => '𐳡', + '𐲢' => '𐳢', + '𐲣' => '𐳣', + '𐲤' => '𐳤', + '𐲥' => '𐳥', + '𐲦' => '𐳦', + '𐲧' => '𐳧', + '𐲨' => '𐳨', + '𐲩' => '𐳩', + '𐲪' => '𐳪', + '𐲫' => '𐳫', + '𐲬' => '𐳬', + '𐲭' => '𐳭', + '𐲮' => '𐳮', + '𐲯' => '𐳯', + '𐲰' => '𐳰', + '𐲱' => '𐳱', + '𐲲' => '𐳲', + '𑢠' => '𑣀', + '𑢡' => '𑣁', + '𑢢' => '𑣂', + '𑢣' => '𑣃', + '𑢤' => '𑣄', + '𑢥' => '𑣅', + '𑢦' => '𑣆', + '𑢧' => '𑣇', + '𑢨' => '𑣈', + '𑢩' => '𑣉', + '𑢪' => '𑣊', + '𑢫' => '𑣋', + '𑢬' => '𑣌', + '𑢭' => '𑣍', + '𑢮' => '𑣎', + '𑢯' => '𑣏', + '𑢰' => '𑣐', + '𑢱' => '𑣑', + '𑢲' => '𑣒', + '𑢳' => '𑣓', + '𑢴' => '𑣔', + '𑢵' => '𑣕', + '𑢶' => '𑣖', + '𑢷' => '𑣗', + '𑢸' => '𑣘', + '𑢹' => '𑣙', + '𑢺' => '𑣚', + '𑢻' => '𑣛', + '𑢼' => '𑣜', + '𑢽' => '𑣝', + '𑢾' => '𑣞', + '𑢿' => '𑣟', + '𖹀' => '𖹠', + '𖹁' => '𖹡', + '𖹂' => '𖹢', + '𖹃' => '𖹣', + '𖹄' => '𖹤', + '𖹅' => '𖹥', + '𖹆' => '𖹦', + '𖹇' => '𖹧', + '𖹈' => '𖹨', + '𖹉' => '𖹩', + '𖹊' => '𖹪', + '𖹋' => '𖹫', + '𖹌' => '𖹬', + '𖹍' => '𖹭', + '𖹎' => '𖹮', + '𖹏' => '𖹯', + '𖹐' => '𖹰', + '𖹑' => '𖹱', + '𖹒' => '𖹲', + '𖹓' => '𖹳', + '𖹔' => '𖹴', + '𖹕' => '𖹵', + '𖹖' => '𖹶', + '𖹗' => '𖹷', + '𖹘' => '𖹸', + '𖹙' => '𖹹', + '𖹚' => '𖹺', + '𖹛' => '𖹻', + '𖹜' => '𖹼', + '𖹝' => '𖹽', + '𖹞' => '𖹾', + '𖹟' => '𖹿', + '𞤀' => '𞤢', + '𞤁' => '𞤣', + '𞤂' => '𞤤', + '𞤃' => '𞤥', + '𞤄' => '𞤦', + '𞤅' => '𞤧', + '𞤆' => '𞤨', + '𞤇' => '𞤩', + '𞤈' => '𞤪', + '𞤉' => '𞤫', + '𞤊' => '𞤬', + '𞤋' => '𞤭', + '𞤌' => '𞤮', + '𞤍' => '𞤯', + '𞤎' => '𞤰', + '𞤏' => '𞤱', + '𞤐' => '𞤲', + '𞤑' => '𞤳', + '𞤒' => '𞤴', + '𞤓' => '𞤵', + '𞤔' => '𞤶', + '𞤕' => '𞤷', + '𞤖' => '𞤸', + '𞤗' => '𞤹', + '𞤘' => '𞤺', + '𞤙' => '𞤻', + '𞤚' => '𞤼', + '𞤛' => '𞤽', + '𞤜' => '𞤾', + '𞤝' => '𞤿', + '𞤞' => '𞥀', + '𞤟' => '𞥁', + '𞤠' => '𞥂', + '𞤡' => '𞥃', +); diff --git a/lib/sqlparser/vendor/symfony/polyfill-mbstring/Resources/unidata/titleCaseRegexp.php b/lib/sqlparser/vendor/symfony/polyfill-mbstring/Resources/unidata/titleCaseRegexp.php new file mode 100644 index 0000000000..2a8f6e73b9 --- /dev/null +++ b/lib/sqlparser/vendor/symfony/polyfill-mbstring/Resources/unidata/titleCaseRegexp.php @@ -0,0 +1,5 @@ + 'A', + 'b' => 'B', + 'c' => 'C', + 'd' => 'D', + 'e' => 'E', + 'f' => 'F', + 'g' => 'G', + 'h' => 'H', + 'i' => 'I', + 'j' => 'J', + 'k' => 'K', + 'l' => 'L', + 'm' => 'M', + 'n' => 'N', + 'o' => 'O', + 'p' => 'P', + 'q' => 'Q', + 'r' => 'R', + 's' => 'S', + 't' => 'T', + 'u' => 'U', + 'v' => 'V', + 'w' => 'W', + 'x' => 'X', + 'y' => 'Y', + 'z' => 'Z', + 'µ' => 'Μ', + 'à' => 'À', + 'á' => 'Á', + 'â' => 'Â', + 'ã' => 'Ã', + 'ä' => 'Ä', + 'å' => 'Å', + 'æ' => 'Æ', + 'ç' => 'Ç', + 'è' => 'È', + 'é' => 'É', + 'ê' => 'Ê', + 'ë' => 'Ë', + 'ì' => 'Ì', + 'í' => 'Í', + 'î' => 'Î', + 'ï' => 'Ï', + 'ð' => 'Ð', + 'ñ' => 'Ñ', + 'ò' => 'Ò', + 'ó' => 'Ó', + 'ô' => 'Ô', + 'õ' => 'Õ', + 'ö' => 'Ö', + 'ø' => 'Ø', + 'ù' => 'Ù', + 'ú' => 'Ú', + 'û' => 'Û', + 'ü' => 'Ü', + 'ý' => 'Ý', + 'þ' => 'Þ', + 'ÿ' => 'Ÿ', + 'ā' => 'Ā', + 'ă' => 'Ă', + 'ą' => 'Ą', + 'ć' => 'Ć', + 'ĉ' => 'Ĉ', + 'ċ' => 'Ċ', + 'č' => 'Č', + 'ď' => 'Ď', + 'đ' => 'Đ', + 'ē' => 'Ē', + 'ĕ' => 'Ĕ', + 'ė' => 'Ė', + 'ę' => 'Ę', + 'ě' => 'Ě', + 'ĝ' => 'Ĝ', + 'ğ' => 'Ğ', + 'ġ' => 'Ġ', + 'ģ' => 'Ģ', + 'ĥ' => 'Ĥ', + 'ħ' => 'Ħ', + 'ĩ' => 'Ĩ', + 'ī' => 'Ī', + 'ĭ' => 'Ĭ', + 'į' => 'Į', + 'ı' => 'I', + 'ij' => 'IJ', + 'ĵ' => 'Ĵ', + 'ķ' => 'Ķ', + 'ĺ' => 'Ĺ', + 'ļ' => 'Ļ', + 'ľ' => 'Ľ', + 'ŀ' => 'Ŀ', + 'ł' => 'Ł', + 'ń' => 'Ń', + 'ņ' => 'Ņ', + 'ň' => 'Ň', + 'ŋ' => 'Ŋ', + 'ō' => 'Ō', + 'ŏ' => 'Ŏ', + 'ő' => 'Ő', + 'œ' => 'Œ', + 'ŕ' => 'Ŕ', + 'ŗ' => 'Ŗ', + 'ř' => 'Ř', + 'ś' => 'Ś', + 'ŝ' => 'Ŝ', + 'ş' => 'Ş', + 'š' => 'Š', + 'ţ' => 'Ţ', + 'ť' => 'Ť', + 'ŧ' => 'Ŧ', + 'ũ' => 'Ũ', + 'ū' => 'Ū', + 'ŭ' => 'Ŭ', + 'ů' => 'Ů', + 'ű' => 'Ű', + 'ų' => 'Ų', + 'ŵ' => 'Ŵ', + 'ŷ' => 'Ŷ', + 'ź' => 'Ź', + 'ż' => 'Ż', + 'ž' => 'Ž', + 'ſ' => 'S', + 'ƀ' => 'Ƀ', + 'ƃ' => 'Ƃ', + 'ƅ' => 'Ƅ', + 'ƈ' => 'Ƈ', + 'ƌ' => 'Ƌ', + 'ƒ' => 'Ƒ', + 'ƕ' => 'Ƕ', + 'ƙ' => 'Ƙ', + 'ƚ' => 'Ƚ', + 'ƞ' => 'Ƞ', + 'ơ' => 'Ơ', + 'ƣ' => 'Ƣ', + 'ƥ' => 'Ƥ', + 'ƨ' => 'Ƨ', + 'ƭ' => 'Ƭ', + 'ư' => 'Ư', + 'ƴ' => 'Ƴ', + 'ƶ' => 'Ƶ', + 'ƹ' => 'Ƹ', + 'ƽ' => 'Ƽ', + 'ƿ' => 'Ƿ', + 'Dž' => 'DŽ', + 'dž' => 'DŽ', + 'Lj' => 'LJ', + 'lj' => 'LJ', + 'Nj' => 'NJ', + 'nj' => 'NJ', + 'ǎ' => 'Ǎ', + 'ǐ' => 'Ǐ', + 'ǒ' => 'Ǒ', + 'ǔ' => 'Ǔ', + 'ǖ' => 'Ǖ', + 'ǘ' => 'Ǘ', + 'ǚ' => 'Ǚ', + 'ǜ' => 'Ǜ', + 'ǝ' => 'Ǝ', + 'ǟ' => 'Ǟ', + 'ǡ' => 'Ǡ', + 'ǣ' => 'Ǣ', + 'ǥ' => 'Ǥ', + 'ǧ' => 'Ǧ', + 'ǩ' => 'Ǩ', + 'ǫ' => 'Ǫ', + 'ǭ' => 'Ǭ', + 'ǯ' => 'Ǯ', + 'Dz' => 'DZ', + 'dz' => 'DZ', + 'ǵ' => 'Ǵ', + 'ǹ' => 'Ǹ', + 'ǻ' => 'Ǻ', + 'ǽ' => 'Ǽ', + 'ǿ' => 'Ǿ', + 'ȁ' => 'Ȁ', + 'ȃ' => 'Ȃ', + 'ȅ' => 'Ȅ', + 'ȇ' => 'Ȇ', + 'ȉ' => 'Ȉ', + 'ȋ' => 'Ȋ', + 'ȍ' => 'Ȍ', + 'ȏ' => 'Ȏ', + 'ȑ' => 'Ȑ', + 'ȓ' => 'Ȓ', + 'ȕ' => 'Ȕ', + 'ȗ' => 'Ȗ', + 'ș' => 'Ș', + 'ț' => 'Ț', + 'ȝ' => 'Ȝ', + 'ȟ' => 'Ȟ', + 'ȣ' => 'Ȣ', + 'ȥ' => 'Ȥ', + 'ȧ' => 'Ȧ', + 'ȩ' => 'Ȩ', + 'ȫ' => 'Ȫ', + 'ȭ' => 'Ȭ', + 'ȯ' => 'Ȯ', + 'ȱ' => 'Ȱ', + 'ȳ' => 'Ȳ', + 'ȼ' => 'Ȼ', + 'ȿ' => 'Ȿ', + 'ɀ' => 'Ɀ', + 'ɂ' => 'Ɂ', + 'ɇ' => 'Ɇ', + 'ɉ' => 'Ɉ', + 'ɋ' => 'Ɋ', + 'ɍ' => 'Ɍ', + 'ɏ' => 'Ɏ', + 'ɐ' => 'Ɐ', + 'ɑ' => 'Ɑ', + 'ɒ' => 'Ɒ', + 'ɓ' => 'Ɓ', + 'ɔ' => 'Ɔ', + 'ɖ' => 'Ɖ', + 'ɗ' => 'Ɗ', + 'ə' => 'Ə', + 'ɛ' => 'Ɛ', + 'ɜ' => 'Ɜ', + 'ɠ' => 'Ɠ', + 'ɡ' => 'Ɡ', + 'ɣ' => 'Ɣ', + 'ɥ' => 'Ɥ', + 'ɦ' => 'Ɦ', + 'ɨ' => 'Ɨ', + 'ɩ' => 'Ɩ', + 'ɪ' => 'Ɪ', + 'ɫ' => 'Ɫ', + 'ɬ' => 'Ɬ', + 'ɯ' => 'Ɯ', + 'ɱ' => 'Ɱ', + 'ɲ' => 'Ɲ', + 'ɵ' => 'Ɵ', + 'ɽ' => 'Ɽ', + 'ʀ' => 'Ʀ', + 'ʂ' => 'Ʂ', + 'ʃ' => 'Ʃ', + 'ʇ' => 'Ʇ', + 'ʈ' => 'Ʈ', + 'ʉ' => 'Ʉ', + 'ʊ' => 'Ʊ', + 'ʋ' => 'Ʋ', + 'ʌ' => 'Ʌ', + 'ʒ' => 'Ʒ', + 'ʝ' => 'Ʝ', + 'ʞ' => 'Ʞ', + 'ͅ' => 'Ι', + 'ͱ' => 'Ͱ', + 'ͳ' => 'Ͳ', + 'ͷ' => 'Ͷ', + 'ͻ' => 'Ͻ', + 'ͼ' => 'Ͼ', + 'ͽ' => 'Ͽ', + 'ά' => 'Ά', + 'έ' => 'Έ', + 'ή' => 'Ή', + 'ί' => 'Ί', + 'α' => 'Α', + 'β' => 'Β', + 'γ' => 'Γ', + 'δ' => 'Δ', + 'ε' => 'Ε', + 'ζ' => 'Ζ', + 'η' => 'Η', + 'θ' => 'Θ', + 'ι' => 'Ι', + 'κ' => 'Κ', + 'λ' => 'Λ', + 'μ' => 'Μ', + 'ν' => 'Ν', + 'ξ' => 'Ξ', + 'ο' => 'Ο', + 'π' => 'Π', + 'ρ' => 'Ρ', + 'ς' => 'Σ', + 'σ' => 'Σ', + 'τ' => 'Τ', + 'υ' => 'Υ', + 'φ' => 'Φ', + 'χ' => 'Χ', + 'ψ' => 'Ψ', + 'ω' => 'Ω', + 'ϊ' => 'Ϊ', + 'ϋ' => 'Ϋ', + 'ό' => 'Ό', + 'ύ' => 'Ύ', + 'ώ' => 'Ώ', + 'ϐ' => 'Β', + 'ϑ' => 'Θ', + 'ϕ' => 'Φ', + 'ϖ' => 'Π', + 'ϗ' => 'Ϗ', + 'ϙ' => 'Ϙ', + 'ϛ' => 'Ϛ', + 'ϝ' => 'Ϝ', + 'ϟ' => 'Ϟ', + 'ϡ' => 'Ϡ', + 'ϣ' => 'Ϣ', + 'ϥ' => 'Ϥ', + 'ϧ' => 'Ϧ', + 'ϩ' => 'Ϩ', + 'ϫ' => 'Ϫ', + 'ϭ' => 'Ϭ', + 'ϯ' => 'Ϯ', + 'ϰ' => 'Κ', + 'ϱ' => 'Ρ', + 'ϲ' => 'Ϲ', + 'ϳ' => 'Ϳ', + 'ϵ' => 'Ε', + 'ϸ' => 'Ϸ', + 'ϻ' => 'Ϻ', + 'а' => 'А', + 'б' => 'Б', + 'в' => 'В', + 'г' => 'Г', + 'д' => 'Д', + 'е' => 'Е', + 'ж' => 'Ж', + 'з' => 'З', + 'и' => 'И', + 'й' => 'Й', + 'к' => 'К', + 'л' => 'Л', + 'м' => 'М', + 'н' => 'Н', + 'о' => 'О', + 'п' => 'П', + 'р' => 'Р', + 'с' => 'С', + 'т' => 'Т', + 'у' => 'У', + 'ф' => 'Ф', + 'х' => 'Х', + 'ц' => 'Ц', + 'ч' => 'Ч', + 'ш' => 'Ш', + 'щ' => 'Щ', + 'ъ' => 'Ъ', + 'ы' => 'Ы', + 'ь' => 'Ь', + 'э' => 'Э', + 'ю' => 'Ю', + 'я' => 'Я', + 'ѐ' => 'Ѐ', + 'ё' => 'Ё', + 'ђ' => 'Ђ', + 'ѓ' => 'Ѓ', + 'є' => 'Є', + 'ѕ' => 'Ѕ', + 'і' => 'І', + 'ї' => 'Ї', + 'ј' => 'Ј', + 'љ' => 'Љ', + 'њ' => 'Њ', + 'ћ' => 'Ћ', + 'ќ' => 'Ќ', + 'ѝ' => 'Ѝ', + 'ў' => 'Ў', + 'џ' => 'Џ', + 'ѡ' => 'Ѡ', + 'ѣ' => 'Ѣ', + 'ѥ' => 'Ѥ', + 'ѧ' => 'Ѧ', + 'ѩ' => 'Ѩ', + 'ѫ' => 'Ѫ', + 'ѭ' => 'Ѭ', + 'ѯ' => 'Ѯ', + 'ѱ' => 'Ѱ', + 'ѳ' => 'Ѳ', + 'ѵ' => 'Ѵ', + 'ѷ' => 'Ѷ', + 'ѹ' => 'Ѹ', + 'ѻ' => 'Ѻ', + 'ѽ' => 'Ѽ', + 'ѿ' => 'Ѿ', + 'ҁ' => 'Ҁ', + 'ҋ' => 'Ҋ', + 'ҍ' => 'Ҍ', + 'ҏ' => 'Ҏ', + 'ґ' => 'Ґ', + 'ғ' => 'Ғ', + 'ҕ' => 'Ҕ', + 'җ' => 'Җ', + 'ҙ' => 'Ҙ', + 'қ' => 'Қ', + 'ҝ' => 'Ҝ', + 'ҟ' => 'Ҟ', + 'ҡ' => 'Ҡ', + 'ң' => 'Ң', + 'ҥ' => 'Ҥ', + 'ҧ' => 'Ҧ', + 'ҩ' => 'Ҩ', + 'ҫ' => 'Ҫ', + 'ҭ' => 'Ҭ', + 'ү' => 'Ү', + 'ұ' => 'Ұ', + 'ҳ' => 'Ҳ', + 'ҵ' => 'Ҵ', + 'ҷ' => 'Ҷ', + 'ҹ' => 'Ҹ', + 'һ' => 'Һ', + 'ҽ' => 'Ҽ', + 'ҿ' => 'Ҿ', + 'ӂ' => 'Ӂ', + 'ӄ' => 'Ӄ', + 'ӆ' => 'Ӆ', + 'ӈ' => 'Ӈ', + 'ӊ' => 'Ӊ', + 'ӌ' => 'Ӌ', + 'ӎ' => 'Ӎ', + 'ӏ' => 'Ӏ', + 'ӑ' => 'Ӑ', + 'ӓ' => 'Ӓ', + 'ӕ' => 'Ӕ', + 'ӗ' => 'Ӗ', + 'ә' => 'Ә', + 'ӛ' => 'Ӛ', + 'ӝ' => 'Ӝ', + 'ӟ' => 'Ӟ', + 'ӡ' => 'Ӡ', + 'ӣ' => 'Ӣ', + 'ӥ' => 'Ӥ', + 'ӧ' => 'Ӧ', + 'ө' => 'Ө', + 'ӫ' => 'Ӫ', + 'ӭ' => 'Ӭ', + 'ӯ' => 'Ӯ', + 'ӱ' => 'Ӱ', + 'ӳ' => 'Ӳ', + 'ӵ' => 'Ӵ', + 'ӷ' => 'Ӷ', + 'ӹ' => 'Ӹ', + 'ӻ' => 'Ӻ', + 'ӽ' => 'Ӽ', + 'ӿ' => 'Ӿ', + 'ԁ' => 'Ԁ', + 'ԃ' => 'Ԃ', + 'ԅ' => 'Ԅ', + 'ԇ' => 'Ԇ', + 'ԉ' => 'Ԉ', + 'ԋ' => 'Ԋ', + 'ԍ' => 'Ԍ', + 'ԏ' => 'Ԏ', + 'ԑ' => 'Ԑ', + 'ԓ' => 'Ԓ', + 'ԕ' => 'Ԕ', + 'ԗ' => 'Ԗ', + 'ԙ' => 'Ԙ', + 'ԛ' => 'Ԛ', + 'ԝ' => 'Ԝ', + 'ԟ' => 'Ԟ', + 'ԡ' => 'Ԡ', + 'ԣ' => 'Ԣ', + 'ԥ' => 'Ԥ', + 'ԧ' => 'Ԧ', + 'ԩ' => 'Ԩ', + 'ԫ' => 'Ԫ', + 'ԭ' => 'Ԭ', + 'ԯ' => 'Ԯ', + 'ա' => 'Ա', + 'բ' => 'Բ', + 'գ' => 'Գ', + 'դ' => 'Դ', + 'ե' => 'Ե', + 'զ' => 'Զ', + 'է' => 'Է', + 'ը' => 'Ը', + 'թ' => 'Թ', + 'ժ' => 'Ժ', + 'ի' => 'Ի', + 'լ' => 'Լ', + 'խ' => 'Խ', + 'ծ' => 'Ծ', + 'կ' => 'Կ', + 'հ' => 'Հ', + 'ձ' => 'Ձ', + 'ղ' => 'Ղ', + 'ճ' => 'Ճ', + 'մ' => 'Մ', + 'յ' => 'Յ', + 'ն' => 'Ն', + 'շ' => 'Շ', + 'ո' => 'Ո', + 'չ' => 'Չ', + 'պ' => 'Պ', + 'ջ' => 'Ջ', + 'ռ' => 'Ռ', + 'ս' => 'Ս', + 'վ' => 'Վ', + 'տ' => 'Տ', + 'ր' => 'Ր', + 'ց' => 'Ց', + 'ւ' => 'Ւ', + 'փ' => 'Փ', + 'ք' => 'Ք', + 'օ' => 'Օ', + 'ֆ' => 'Ֆ', + 'ა' => 'Ა', + 'ბ' => 'Ბ', + 'გ' => 'Გ', + 'დ' => 'Დ', + 'ე' => 'Ე', + 'ვ' => 'Ვ', + 'ზ' => 'Ზ', + 'თ' => 'Თ', + 'ი' => 'Ი', + 'კ' => 'Კ', + 'ლ' => 'Ლ', + 'მ' => 'Მ', + 'ნ' => 'Ნ', + 'ო' => 'Ო', + 'პ' => 'Პ', + 'ჟ' => 'Ჟ', + 'რ' => 'Რ', + 'ს' => 'Ს', + 'ტ' => 'Ტ', + 'უ' => 'Უ', + 'ფ' => 'Ფ', + 'ქ' => 'Ქ', + 'ღ' => 'Ღ', + 'ყ' => 'Ყ', + 'შ' => 'Შ', + 'ჩ' => 'Ჩ', + 'ც' => 'Ც', + 'ძ' => 'Ძ', + 'წ' => 'Წ', + 'ჭ' => 'Ჭ', + 'ხ' => 'Ხ', + 'ჯ' => 'Ჯ', + 'ჰ' => 'Ჰ', + 'ჱ' => 'Ჱ', + 'ჲ' => 'Ჲ', + 'ჳ' => 'Ჳ', + 'ჴ' => 'Ჴ', + 'ჵ' => 'Ჵ', + 'ჶ' => 'Ჶ', + 'ჷ' => 'Ჷ', + 'ჸ' => 'Ჸ', + 'ჹ' => 'Ჹ', + 'ჺ' => 'Ჺ', + 'ჽ' => 'Ჽ', + 'ჾ' => 'Ჾ', + 'ჿ' => 'Ჿ', + 'ᏸ' => 'Ᏸ', + 'ᏹ' => 'Ᏹ', + 'ᏺ' => 'Ᏺ', + 'ᏻ' => 'Ᏻ', + 'ᏼ' => 'Ᏼ', + 'ᏽ' => 'Ᏽ', + 'ᲀ' => 'В', + 'ᲁ' => 'Д', + 'ᲂ' => 'О', + 'ᲃ' => 'С', + 'ᲄ' => 'Т', + 'ᲅ' => 'Т', + 'ᲆ' => 'Ъ', + 'ᲇ' => 'Ѣ', + 'ᲈ' => 'Ꙋ', + 'ᵹ' => 'Ᵹ', + 'ᵽ' => 'Ᵽ', + 'ᶎ' => 'Ᶎ', + 'ḁ' => 'Ḁ', + 'ḃ' => 'Ḃ', + 'ḅ' => 'Ḅ', + 'ḇ' => 'Ḇ', + 'ḉ' => 'Ḉ', + 'ḋ' => 'Ḋ', + 'ḍ' => 'Ḍ', + 'ḏ' => 'Ḏ', + 'ḑ' => 'Ḑ', + 'ḓ' => 'Ḓ', + 'ḕ' => 'Ḕ', + 'ḗ' => 'Ḗ', + 'ḙ' => 'Ḙ', + 'ḛ' => 'Ḛ', + 'ḝ' => 'Ḝ', + 'ḟ' => 'Ḟ', + 'ḡ' => 'Ḡ', + 'ḣ' => 'Ḣ', + 'ḥ' => 'Ḥ', + 'ḧ' => 'Ḧ', + 'ḩ' => 'Ḩ', + 'ḫ' => 'Ḫ', + 'ḭ' => 'Ḭ', + 'ḯ' => 'Ḯ', + 'ḱ' => 'Ḱ', + 'ḳ' => 'Ḳ', + 'ḵ' => 'Ḵ', + 'ḷ' => 'Ḷ', + 'ḹ' => 'Ḹ', + 'ḻ' => 'Ḻ', + 'ḽ' => 'Ḽ', + 'ḿ' => 'Ḿ', + 'ṁ' => 'Ṁ', + 'ṃ' => 'Ṃ', + 'ṅ' => 'Ṅ', + 'ṇ' => 'Ṇ', + 'ṉ' => 'Ṉ', + 'ṋ' => 'Ṋ', + 'ṍ' => 'Ṍ', + 'ṏ' => 'Ṏ', + 'ṑ' => 'Ṑ', + 'ṓ' => 'Ṓ', + 'ṕ' => 'Ṕ', + 'ṗ' => 'Ṗ', + 'ṙ' => 'Ṙ', + 'ṛ' => 'Ṛ', + 'ṝ' => 'Ṝ', + 'ṟ' => 'Ṟ', + 'ṡ' => 'Ṡ', + 'ṣ' => 'Ṣ', + 'ṥ' => 'Ṥ', + 'ṧ' => 'Ṧ', + 'ṩ' => 'Ṩ', + 'ṫ' => 'Ṫ', + 'ṭ' => 'Ṭ', + 'ṯ' => 'Ṯ', + 'ṱ' => 'Ṱ', + 'ṳ' => 'Ṳ', + 'ṵ' => 'Ṵ', + 'ṷ' => 'Ṷ', + 'ṹ' => 'Ṹ', + 'ṻ' => 'Ṻ', + 'ṽ' => 'Ṽ', + 'ṿ' => 'Ṿ', + 'ẁ' => 'Ẁ', + 'ẃ' => 'Ẃ', + 'ẅ' => 'Ẅ', + 'ẇ' => 'Ẇ', + 'ẉ' => 'Ẉ', + 'ẋ' => 'Ẋ', + 'ẍ' => 'Ẍ', + 'ẏ' => 'Ẏ', + 'ẑ' => 'Ẑ', + 'ẓ' => 'Ẓ', + 'ẕ' => 'Ẕ', + 'ẛ' => 'Ṡ', + 'ạ' => 'Ạ', + 'ả' => 'Ả', + 'ấ' => 'Ấ', + 'ầ' => 'Ầ', + 'ẩ' => 'Ẩ', + 'ẫ' => 'Ẫ', + 'ậ' => 'Ậ', + 'ắ' => 'Ắ', + 'ằ' => 'Ằ', + 'ẳ' => 'Ẳ', + 'ẵ' => 'Ẵ', + 'ặ' => 'Ặ', + 'ẹ' => 'Ẹ', + 'ẻ' => 'Ẻ', + 'ẽ' => 'Ẽ', + 'ế' => 'Ế', + 'ề' => 'Ề', + 'ể' => 'Ể', + 'ễ' => 'Ễ', + 'ệ' => 'Ệ', + 'ỉ' => 'Ỉ', + 'ị' => 'Ị', + 'ọ' => 'Ọ', + 'ỏ' => 'Ỏ', + 'ố' => 'Ố', + 'ồ' => 'Ồ', + 'ổ' => 'Ổ', + 'ỗ' => 'Ỗ', + 'ộ' => 'Ộ', + 'ớ' => 'Ớ', + 'ờ' => 'Ờ', + 'ở' => 'Ở', + 'ỡ' => 'Ỡ', + 'ợ' => 'Ợ', + 'ụ' => 'Ụ', + 'ủ' => 'Ủ', + 'ứ' => 'Ứ', + 'ừ' => 'Ừ', + 'ử' => 'Ử', + 'ữ' => 'Ữ', + 'ự' => 'Ự', + 'ỳ' => 'Ỳ', + 'ỵ' => 'Ỵ', + 'ỷ' => 'Ỷ', + 'ỹ' => 'Ỹ', + 'ỻ' => 'Ỻ', + 'ỽ' => 'Ỽ', + 'ỿ' => 'Ỿ', + 'ἀ' => 'Ἀ', + 'ἁ' => 'Ἁ', + 'ἂ' => 'Ἂ', + 'ἃ' => 'Ἃ', + 'ἄ' => 'Ἄ', + 'ἅ' => 'Ἅ', + 'ἆ' => 'Ἆ', + 'ἇ' => 'Ἇ', + 'ἐ' => 'Ἐ', + 'ἑ' => 'Ἑ', + 'ἒ' => 'Ἒ', + 'ἓ' => 'Ἓ', + 'ἔ' => 'Ἔ', + 'ἕ' => 'Ἕ', + 'ἠ' => 'Ἠ', + 'ἡ' => 'Ἡ', + 'ἢ' => 'Ἢ', + 'ἣ' => 'Ἣ', + 'ἤ' => 'Ἤ', + 'ἥ' => 'Ἥ', + 'ἦ' => 'Ἦ', + 'ἧ' => 'Ἧ', + 'ἰ' => 'Ἰ', + 'ἱ' => 'Ἱ', + 'ἲ' => 'Ἲ', + 'ἳ' => 'Ἳ', + 'ἴ' => 'Ἴ', + 'ἵ' => 'Ἵ', + 'ἶ' => 'Ἶ', + 'ἷ' => 'Ἷ', + 'ὀ' => 'Ὀ', + 'ὁ' => 'Ὁ', + 'ὂ' => 'Ὂ', + 'ὃ' => 'Ὃ', + 'ὄ' => 'Ὄ', + 'ὅ' => 'Ὅ', + 'ὑ' => 'Ὑ', + 'ὓ' => 'Ὓ', + 'ὕ' => 'Ὕ', + 'ὗ' => 'Ὗ', + 'ὠ' => 'Ὠ', + 'ὡ' => 'Ὡ', + 'ὢ' => 'Ὢ', + 'ὣ' => 'Ὣ', + 'ὤ' => 'Ὤ', + 'ὥ' => 'Ὥ', + 'ὦ' => 'Ὦ', + 'ὧ' => 'Ὧ', + 'ὰ' => 'Ὰ', + 'ά' => 'Ά', + 'ὲ' => 'Ὲ', + 'έ' => 'Έ', + 'ὴ' => 'Ὴ', + 'ή' => 'Ή', + 'ὶ' => 'Ὶ', + 'ί' => 'Ί', + 'ὸ' => 'Ὸ', + 'ό' => 'Ό', + 'ὺ' => 'Ὺ', + 'ύ' => 'Ύ', + 'ὼ' => 'Ὼ', + 'ώ' => 'Ώ', + 'ᾀ' => 'ἈΙ', + 'ᾁ' => 'ἉΙ', + 'ᾂ' => 'ἊΙ', + 'ᾃ' => 'ἋΙ', + 'ᾄ' => 'ἌΙ', + 'ᾅ' => 'ἍΙ', + 'ᾆ' => 'ἎΙ', + 'ᾇ' => 'ἏΙ', + 'ᾐ' => 'ἨΙ', + 'ᾑ' => 'ἩΙ', + 'ᾒ' => 'ἪΙ', + 'ᾓ' => 'ἫΙ', + 'ᾔ' => 'ἬΙ', + 'ᾕ' => 'ἭΙ', + 'ᾖ' => 'ἮΙ', + 'ᾗ' => 'ἯΙ', + 'ᾠ' => 'ὨΙ', + 'ᾡ' => 'ὩΙ', + 'ᾢ' => 'ὪΙ', + 'ᾣ' => 'ὫΙ', + 'ᾤ' => 'ὬΙ', + 'ᾥ' => 'ὭΙ', + 'ᾦ' => 'ὮΙ', + 'ᾧ' => 'ὯΙ', + 'ᾰ' => 'Ᾰ', + 'ᾱ' => 'Ᾱ', + 'ᾳ' => 'ΑΙ', + 'ι' => 'Ι', + 'ῃ' => 'ΗΙ', + 'ῐ' => 'Ῐ', + 'ῑ' => 'Ῑ', + 'ῠ' => 'Ῠ', + 'ῡ' => 'Ῡ', + 'ῥ' => 'Ῥ', + 'ῳ' => 'ΩΙ', + 'ⅎ' => 'Ⅎ', + 'ⅰ' => 'Ⅰ', + 'ⅱ' => 'Ⅱ', + 'ⅲ' => 'Ⅲ', + 'ⅳ' => 'Ⅳ', + 'ⅴ' => 'Ⅴ', + 'ⅵ' => 'Ⅵ', + 'ⅶ' => 'Ⅶ', + 'ⅷ' => 'Ⅷ', + 'ⅸ' => 'Ⅸ', + 'ⅹ' => 'Ⅹ', + 'ⅺ' => 'Ⅺ', + 'ⅻ' => 'Ⅻ', + 'ⅼ' => 'Ⅼ', + 'ⅽ' => 'Ⅽ', + 'ⅾ' => 'Ⅾ', + 'ⅿ' => 'Ⅿ', + 'ↄ' => 'Ↄ', + 'ⓐ' => 'Ⓐ', + 'ⓑ' => 'Ⓑ', + 'ⓒ' => 'Ⓒ', + 'ⓓ' => 'Ⓓ', + 'ⓔ' => 'Ⓔ', + 'ⓕ' => 'Ⓕ', + 'ⓖ' => 'Ⓖ', + 'ⓗ' => 'Ⓗ', + 'ⓘ' => 'Ⓘ', + 'ⓙ' => 'Ⓙ', + 'ⓚ' => 'Ⓚ', + 'ⓛ' => 'Ⓛ', + 'ⓜ' => 'Ⓜ', + 'ⓝ' => 'Ⓝ', + 'ⓞ' => 'Ⓞ', + 'ⓟ' => 'Ⓟ', + 'ⓠ' => 'Ⓠ', + 'ⓡ' => 'Ⓡ', + 'ⓢ' => 'Ⓢ', + 'ⓣ' => 'Ⓣ', + 'ⓤ' => 'Ⓤ', + 'ⓥ' => 'Ⓥ', + 'ⓦ' => 'Ⓦ', + 'ⓧ' => 'Ⓧ', + 'ⓨ' => 'Ⓨ', + 'ⓩ' => 'Ⓩ', + 'ⰰ' => 'Ⰰ', + 'ⰱ' => 'Ⰱ', + 'ⰲ' => 'Ⰲ', + 'ⰳ' => 'Ⰳ', + 'ⰴ' => 'Ⰴ', + 'ⰵ' => 'Ⰵ', + 'ⰶ' => 'Ⰶ', + 'ⰷ' => 'Ⰷ', + 'ⰸ' => 'Ⰸ', + 'ⰹ' => 'Ⰹ', + 'ⰺ' => 'Ⰺ', + 'ⰻ' => 'Ⰻ', + 'ⰼ' => 'Ⰼ', + 'ⰽ' => 'Ⰽ', + 'ⰾ' => 'Ⰾ', + 'ⰿ' => 'Ⰿ', + 'ⱀ' => 'Ⱀ', + 'ⱁ' => 'Ⱁ', + 'ⱂ' => 'Ⱂ', + 'ⱃ' => 'Ⱃ', + 'ⱄ' => 'Ⱄ', + 'ⱅ' => 'Ⱅ', + 'ⱆ' => 'Ⱆ', + 'ⱇ' => 'Ⱇ', + 'ⱈ' => 'Ⱈ', + 'ⱉ' => 'Ⱉ', + 'ⱊ' => 'Ⱊ', + 'ⱋ' => 'Ⱋ', + 'ⱌ' => 'Ⱌ', + 'ⱍ' => 'Ⱍ', + 'ⱎ' => 'Ⱎ', + 'ⱏ' => 'Ⱏ', + 'ⱐ' => 'Ⱐ', + 'ⱑ' => 'Ⱑ', + 'ⱒ' => 'Ⱒ', + 'ⱓ' => 'Ⱓ', + 'ⱔ' => 'Ⱔ', + 'ⱕ' => 'Ⱕ', + 'ⱖ' => 'Ⱖ', + 'ⱗ' => 'Ⱗ', + 'ⱘ' => 'Ⱘ', + 'ⱙ' => 'Ⱙ', + 'ⱚ' => 'Ⱚ', + 'ⱛ' => 'Ⱛ', + 'ⱜ' => 'Ⱜ', + 'ⱝ' => 'Ⱝ', + 'ⱞ' => 'Ⱞ', + 'ⱡ' => 'Ⱡ', + 'ⱥ' => 'Ⱥ', + 'ⱦ' => 'Ⱦ', + 'ⱨ' => 'Ⱨ', + 'ⱪ' => 'Ⱪ', + 'ⱬ' => 'Ⱬ', + 'ⱳ' => 'Ⱳ', + 'ⱶ' => 'Ⱶ', + 'ⲁ' => 'Ⲁ', + 'ⲃ' => 'Ⲃ', + 'ⲅ' => 'Ⲅ', + 'ⲇ' => 'Ⲇ', + 'ⲉ' => 'Ⲉ', + 'ⲋ' => 'Ⲋ', + 'ⲍ' => 'Ⲍ', + 'ⲏ' => 'Ⲏ', + 'ⲑ' => 'Ⲑ', + 'ⲓ' => 'Ⲓ', + 'ⲕ' => 'Ⲕ', + 'ⲗ' => 'Ⲗ', + 'ⲙ' => 'Ⲙ', + 'ⲛ' => 'Ⲛ', + 'ⲝ' => 'Ⲝ', + 'ⲟ' => 'Ⲟ', + 'ⲡ' => 'Ⲡ', + 'ⲣ' => 'Ⲣ', + 'ⲥ' => 'Ⲥ', + 'ⲧ' => 'Ⲧ', + 'ⲩ' => 'Ⲩ', + 'ⲫ' => 'Ⲫ', + 'ⲭ' => 'Ⲭ', + 'ⲯ' => 'Ⲯ', + 'ⲱ' => 'Ⲱ', + 'ⲳ' => 'Ⲳ', + 'ⲵ' => 'Ⲵ', + 'ⲷ' => 'Ⲷ', + 'ⲹ' => 'Ⲹ', + 'ⲻ' => 'Ⲻ', + 'ⲽ' => 'Ⲽ', + 'ⲿ' => 'Ⲿ', + 'ⳁ' => 'Ⳁ', + 'ⳃ' => 'Ⳃ', + 'ⳅ' => 'Ⳅ', + 'ⳇ' => 'Ⳇ', + 'ⳉ' => 'Ⳉ', + 'ⳋ' => 'Ⳋ', + 'ⳍ' => 'Ⳍ', + 'ⳏ' => 'Ⳏ', + 'ⳑ' => 'Ⳑ', + 'ⳓ' => 'Ⳓ', + 'ⳕ' => 'Ⳕ', + 'ⳗ' => 'Ⳗ', + 'ⳙ' => 'Ⳙ', + 'ⳛ' => 'Ⳛ', + 'ⳝ' => 'Ⳝ', + 'ⳟ' => 'Ⳟ', + 'ⳡ' => 'Ⳡ', + 'ⳣ' => 'Ⳣ', + 'ⳬ' => 'Ⳬ', + 'ⳮ' => 'Ⳮ', + 'ⳳ' => 'Ⳳ', + 'ⴀ' => 'Ⴀ', + 'ⴁ' => 'Ⴁ', + 'ⴂ' => 'Ⴂ', + 'ⴃ' => 'Ⴃ', + 'ⴄ' => 'Ⴄ', + 'ⴅ' => 'Ⴅ', + 'ⴆ' => 'Ⴆ', + 'ⴇ' => 'Ⴇ', + 'ⴈ' => 'Ⴈ', + 'ⴉ' => 'Ⴉ', + 'ⴊ' => 'Ⴊ', + 'ⴋ' => 'Ⴋ', + 'ⴌ' => 'Ⴌ', + 'ⴍ' => 'Ⴍ', + 'ⴎ' => 'Ⴎ', + 'ⴏ' => 'Ⴏ', + 'ⴐ' => 'Ⴐ', + 'ⴑ' => 'Ⴑ', + 'ⴒ' => 'Ⴒ', + 'ⴓ' => 'Ⴓ', + 'ⴔ' => 'Ⴔ', + 'ⴕ' => 'Ⴕ', + 'ⴖ' => 'Ⴖ', + 'ⴗ' => 'Ⴗ', + 'ⴘ' => 'Ⴘ', + 'ⴙ' => 'Ⴙ', + 'ⴚ' => 'Ⴚ', + 'ⴛ' => 'Ⴛ', + 'ⴜ' => 'Ⴜ', + 'ⴝ' => 'Ⴝ', + 'ⴞ' => 'Ⴞ', + 'ⴟ' => 'Ⴟ', + 'ⴠ' => 'Ⴠ', + 'ⴡ' => 'Ⴡ', + 'ⴢ' => 'Ⴢ', + 'ⴣ' => 'Ⴣ', + 'ⴤ' => 'Ⴤ', + 'ⴥ' => 'Ⴥ', + 'ⴧ' => 'Ⴧ', + 'ⴭ' => 'Ⴭ', + 'ꙁ' => 'Ꙁ', + 'ꙃ' => 'Ꙃ', + 'ꙅ' => 'Ꙅ', + 'ꙇ' => 'Ꙇ', + 'ꙉ' => 'Ꙉ', + 'ꙋ' => 'Ꙋ', + 'ꙍ' => 'Ꙍ', + 'ꙏ' => 'Ꙏ', + 'ꙑ' => 'Ꙑ', + 'ꙓ' => 'Ꙓ', + 'ꙕ' => 'Ꙕ', + 'ꙗ' => 'Ꙗ', + 'ꙙ' => 'Ꙙ', + 'ꙛ' => 'Ꙛ', + 'ꙝ' => 'Ꙝ', + 'ꙟ' => 'Ꙟ', + 'ꙡ' => 'Ꙡ', + 'ꙣ' => 'Ꙣ', + 'ꙥ' => 'Ꙥ', + 'ꙧ' => 'Ꙧ', + 'ꙩ' => 'Ꙩ', + 'ꙫ' => 'Ꙫ', + 'ꙭ' => 'Ꙭ', + 'ꚁ' => 'Ꚁ', + 'ꚃ' => 'Ꚃ', + 'ꚅ' => 'Ꚅ', + 'ꚇ' => 'Ꚇ', + 'ꚉ' => 'Ꚉ', + 'ꚋ' => 'Ꚋ', + 'ꚍ' => 'Ꚍ', + 'ꚏ' => 'Ꚏ', + 'ꚑ' => 'Ꚑ', + 'ꚓ' => 'Ꚓ', + 'ꚕ' => 'Ꚕ', + 'ꚗ' => 'Ꚗ', + 'ꚙ' => 'Ꚙ', + 'ꚛ' => 'Ꚛ', + 'ꜣ' => 'Ꜣ', + 'ꜥ' => 'Ꜥ', + 'ꜧ' => 'Ꜧ', + 'ꜩ' => 'Ꜩ', + 'ꜫ' => 'Ꜫ', + 'ꜭ' => 'Ꜭ', + 'ꜯ' => 'Ꜯ', + 'ꜳ' => 'Ꜳ', + 'ꜵ' => 'Ꜵ', + 'ꜷ' => 'Ꜷ', + 'ꜹ' => 'Ꜹ', + 'ꜻ' => 'Ꜻ', + 'ꜽ' => 'Ꜽ', + 'ꜿ' => 'Ꜿ', + 'ꝁ' => 'Ꝁ', + 'ꝃ' => 'Ꝃ', + 'ꝅ' => 'Ꝅ', + 'ꝇ' => 'Ꝇ', + 'ꝉ' => 'Ꝉ', + 'ꝋ' => 'Ꝋ', + 'ꝍ' => 'Ꝍ', + 'ꝏ' => 'Ꝏ', + 'ꝑ' => 'Ꝑ', + 'ꝓ' => 'Ꝓ', + 'ꝕ' => 'Ꝕ', + 'ꝗ' => 'Ꝗ', + 'ꝙ' => 'Ꝙ', + 'ꝛ' => 'Ꝛ', + 'ꝝ' => 'Ꝝ', + 'ꝟ' => 'Ꝟ', + 'ꝡ' => 'Ꝡ', + 'ꝣ' => 'Ꝣ', + 'ꝥ' => 'Ꝥ', + 'ꝧ' => 'Ꝧ', + 'ꝩ' => 'Ꝩ', + 'ꝫ' => 'Ꝫ', + 'ꝭ' => 'Ꝭ', + 'ꝯ' => 'Ꝯ', + 'ꝺ' => 'Ꝺ', + 'ꝼ' => 'Ꝼ', + 'ꝿ' => 'Ꝿ', + 'ꞁ' => 'Ꞁ', + 'ꞃ' => 'Ꞃ', + 'ꞅ' => 'Ꞅ', + 'ꞇ' => 'Ꞇ', + 'ꞌ' => 'Ꞌ', + 'ꞑ' => 'Ꞑ', + 'ꞓ' => 'Ꞓ', + 'ꞔ' => 'Ꞔ', + 'ꞗ' => 'Ꞗ', + 'ꞙ' => 'Ꞙ', + 'ꞛ' => 'Ꞛ', + 'ꞝ' => 'Ꞝ', + 'ꞟ' => 'Ꞟ', + 'ꞡ' => 'Ꞡ', + 'ꞣ' => 'Ꞣ', + 'ꞥ' => 'Ꞥ', + 'ꞧ' => 'Ꞧ', + 'ꞩ' => 'Ꞩ', + 'ꞵ' => 'Ꞵ', + 'ꞷ' => 'Ꞷ', + 'ꞹ' => 'Ꞹ', + 'ꞻ' => 'Ꞻ', + 'ꞽ' => 'Ꞽ', + 'ꞿ' => 'Ꞿ', + 'ꟃ' => 'Ꟃ', + 'ꟈ' => 'Ꟈ', + 'ꟊ' => 'Ꟊ', + 'ꟶ' => 'Ꟶ', + 'ꭓ' => 'Ꭓ', + 'ꭰ' => 'Ꭰ', + 'ꭱ' => 'Ꭱ', + 'ꭲ' => 'Ꭲ', + 'ꭳ' => 'Ꭳ', + 'ꭴ' => 'Ꭴ', + 'ꭵ' => 'Ꭵ', + 'ꭶ' => 'Ꭶ', + 'ꭷ' => 'Ꭷ', + 'ꭸ' => 'Ꭸ', + 'ꭹ' => 'Ꭹ', + 'ꭺ' => 'Ꭺ', + 'ꭻ' => 'Ꭻ', + 'ꭼ' => 'Ꭼ', + 'ꭽ' => 'Ꭽ', + 'ꭾ' => 'Ꭾ', + 'ꭿ' => 'Ꭿ', + 'ꮀ' => 'Ꮀ', + 'ꮁ' => 'Ꮁ', + 'ꮂ' => 'Ꮂ', + 'ꮃ' => 'Ꮃ', + 'ꮄ' => 'Ꮄ', + 'ꮅ' => 'Ꮅ', + 'ꮆ' => 'Ꮆ', + 'ꮇ' => 'Ꮇ', + 'ꮈ' => 'Ꮈ', + 'ꮉ' => 'Ꮉ', + 'ꮊ' => 'Ꮊ', + 'ꮋ' => 'Ꮋ', + 'ꮌ' => 'Ꮌ', + 'ꮍ' => 'Ꮍ', + 'ꮎ' => 'Ꮎ', + 'ꮏ' => 'Ꮏ', + 'ꮐ' => 'Ꮐ', + 'ꮑ' => 'Ꮑ', + 'ꮒ' => 'Ꮒ', + 'ꮓ' => 'Ꮓ', + 'ꮔ' => 'Ꮔ', + 'ꮕ' => 'Ꮕ', + 'ꮖ' => 'Ꮖ', + 'ꮗ' => 'Ꮗ', + 'ꮘ' => 'Ꮘ', + 'ꮙ' => 'Ꮙ', + 'ꮚ' => 'Ꮚ', + 'ꮛ' => 'Ꮛ', + 'ꮜ' => 'Ꮜ', + 'ꮝ' => 'Ꮝ', + 'ꮞ' => 'Ꮞ', + 'ꮟ' => 'Ꮟ', + 'ꮠ' => 'Ꮠ', + 'ꮡ' => 'Ꮡ', + 'ꮢ' => 'Ꮢ', + 'ꮣ' => 'Ꮣ', + 'ꮤ' => 'Ꮤ', + 'ꮥ' => 'Ꮥ', + 'ꮦ' => 'Ꮦ', + 'ꮧ' => 'Ꮧ', + 'ꮨ' => 'Ꮨ', + 'ꮩ' => 'Ꮩ', + 'ꮪ' => 'Ꮪ', + 'ꮫ' => 'Ꮫ', + 'ꮬ' => 'Ꮬ', + 'ꮭ' => 'Ꮭ', + 'ꮮ' => 'Ꮮ', + 'ꮯ' => 'Ꮯ', + 'ꮰ' => 'Ꮰ', + 'ꮱ' => 'Ꮱ', + 'ꮲ' => 'Ꮲ', + 'ꮳ' => 'Ꮳ', + 'ꮴ' => 'Ꮴ', + 'ꮵ' => 'Ꮵ', + 'ꮶ' => 'Ꮶ', + 'ꮷ' => 'Ꮷ', + 'ꮸ' => 'Ꮸ', + 'ꮹ' => 'Ꮹ', + 'ꮺ' => 'Ꮺ', + 'ꮻ' => 'Ꮻ', + 'ꮼ' => 'Ꮼ', + 'ꮽ' => 'Ꮽ', + 'ꮾ' => 'Ꮾ', + 'ꮿ' => 'Ꮿ', + 'a' => 'A', + 'b' => 'B', + 'c' => 'C', + 'd' => 'D', + 'e' => 'E', + 'f' => 'F', + 'g' => 'G', + 'h' => 'H', + 'i' => 'I', + 'j' => 'J', + 'k' => 'K', + 'l' => 'L', + 'm' => 'M', + 'n' => 'N', + 'o' => 'O', + 'p' => 'P', + 'q' => 'Q', + 'r' => 'R', + 's' => 'S', + 't' => 'T', + 'u' => 'U', + 'v' => 'V', + 'w' => 'W', + 'x' => 'X', + 'y' => 'Y', + 'z' => 'Z', + '𐐨' => '𐐀', + '𐐩' => '𐐁', + '𐐪' => '𐐂', + '𐐫' => '𐐃', + '𐐬' => '𐐄', + '𐐭' => '𐐅', + '𐐮' => '𐐆', + '𐐯' => '𐐇', + '𐐰' => '𐐈', + '𐐱' => '𐐉', + '𐐲' => '𐐊', + '𐐳' => '𐐋', + '𐐴' => '𐐌', + '𐐵' => '𐐍', + '𐐶' => '𐐎', + '𐐷' => '𐐏', + '𐐸' => '𐐐', + '𐐹' => '𐐑', + '𐐺' => '𐐒', + '𐐻' => '𐐓', + '𐐼' => '𐐔', + '𐐽' => '𐐕', + '𐐾' => '𐐖', + '𐐿' => '𐐗', + '𐑀' => '𐐘', + '𐑁' => '𐐙', + '𐑂' => '𐐚', + '𐑃' => '𐐛', + '𐑄' => '𐐜', + '𐑅' => '𐐝', + '𐑆' => '𐐞', + '𐑇' => '𐐟', + '𐑈' => '𐐠', + '𐑉' => '𐐡', + '𐑊' => '𐐢', + '𐑋' => '𐐣', + '𐑌' => '𐐤', + '𐑍' => '𐐥', + '𐑎' => '𐐦', + '𐑏' => '𐐧', + '𐓘' => '𐒰', + '𐓙' => '𐒱', + '𐓚' => '𐒲', + '𐓛' => '𐒳', + '𐓜' => '𐒴', + '𐓝' => '𐒵', + '𐓞' => '𐒶', + '𐓟' => '𐒷', + '𐓠' => '𐒸', + '𐓡' => '𐒹', + '𐓢' => '𐒺', + '𐓣' => '𐒻', + '𐓤' => '𐒼', + '𐓥' => '𐒽', + '𐓦' => '𐒾', + '𐓧' => '𐒿', + '𐓨' => '𐓀', + '𐓩' => '𐓁', + '𐓪' => '𐓂', + '𐓫' => '𐓃', + '𐓬' => '𐓄', + '𐓭' => '𐓅', + '𐓮' => '𐓆', + '𐓯' => '𐓇', + '𐓰' => '𐓈', + '𐓱' => '𐓉', + '𐓲' => '𐓊', + '𐓳' => '𐓋', + '𐓴' => '𐓌', + '𐓵' => '𐓍', + '𐓶' => '𐓎', + '𐓷' => '𐓏', + '𐓸' => '𐓐', + '𐓹' => '𐓑', + '𐓺' => '𐓒', + '𐓻' => '𐓓', + '𐳀' => '𐲀', + '𐳁' => '𐲁', + '𐳂' => '𐲂', + '𐳃' => '𐲃', + '𐳄' => '𐲄', + '𐳅' => '𐲅', + '𐳆' => '𐲆', + '𐳇' => '𐲇', + '𐳈' => '𐲈', + '𐳉' => '𐲉', + '𐳊' => '𐲊', + '𐳋' => '𐲋', + '𐳌' => '𐲌', + '𐳍' => '𐲍', + '𐳎' => '𐲎', + '𐳏' => '𐲏', + '𐳐' => '𐲐', + '𐳑' => '𐲑', + '𐳒' => '𐲒', + '𐳓' => '𐲓', + '𐳔' => '𐲔', + '𐳕' => '𐲕', + '𐳖' => '𐲖', + '𐳗' => '𐲗', + '𐳘' => '𐲘', + '𐳙' => '𐲙', + '𐳚' => '𐲚', + '𐳛' => '𐲛', + '𐳜' => '𐲜', + '𐳝' => '𐲝', + '𐳞' => '𐲞', + '𐳟' => '𐲟', + '𐳠' => '𐲠', + '𐳡' => '𐲡', + '𐳢' => '𐲢', + '𐳣' => '𐲣', + '𐳤' => '𐲤', + '𐳥' => '𐲥', + '𐳦' => '𐲦', + '𐳧' => '𐲧', + '𐳨' => '𐲨', + '𐳩' => '𐲩', + '𐳪' => '𐲪', + '𐳫' => '𐲫', + '𐳬' => '𐲬', + '𐳭' => '𐲭', + '𐳮' => '𐲮', + '𐳯' => '𐲯', + '𐳰' => '𐲰', + '𐳱' => '𐲱', + '𐳲' => '𐲲', + '𑣀' => '𑢠', + '𑣁' => '𑢡', + '𑣂' => '𑢢', + '𑣃' => '𑢣', + '𑣄' => '𑢤', + '𑣅' => '𑢥', + '𑣆' => '𑢦', + '𑣇' => '𑢧', + '𑣈' => '𑢨', + '𑣉' => '𑢩', + '𑣊' => '𑢪', + '𑣋' => '𑢫', + '𑣌' => '𑢬', + '𑣍' => '𑢭', + '𑣎' => '𑢮', + '𑣏' => '𑢯', + '𑣐' => '𑢰', + '𑣑' => '𑢱', + '𑣒' => '𑢲', + '𑣓' => '𑢳', + '𑣔' => '𑢴', + '𑣕' => '𑢵', + '𑣖' => '𑢶', + '𑣗' => '𑢷', + '𑣘' => '𑢸', + '𑣙' => '𑢹', + '𑣚' => '𑢺', + '𑣛' => '𑢻', + '𑣜' => '𑢼', + '𑣝' => '𑢽', + '𑣞' => '𑢾', + '𑣟' => '𑢿', + '𖹠' => '𖹀', + '𖹡' => '𖹁', + '𖹢' => '𖹂', + '𖹣' => '𖹃', + '𖹤' => '𖹄', + '𖹥' => '𖹅', + '𖹦' => '𖹆', + '𖹧' => '𖹇', + '𖹨' => '𖹈', + '𖹩' => '𖹉', + '𖹪' => '𖹊', + '𖹫' => '𖹋', + '𖹬' => '𖹌', + '𖹭' => '𖹍', + '𖹮' => '𖹎', + '𖹯' => '𖹏', + '𖹰' => '𖹐', + '𖹱' => '𖹑', + '𖹲' => '𖹒', + '𖹳' => '𖹓', + '𖹴' => '𖹔', + '𖹵' => '𖹕', + '𖹶' => '𖹖', + '𖹷' => '𖹗', + '𖹸' => '𖹘', + '𖹹' => '𖹙', + '𖹺' => '𖹚', + '𖹻' => '𖹛', + '𖹼' => '𖹜', + '𖹽' => '𖹝', + '𖹾' => '𖹞', + '𖹿' => '𖹟', + '𞤢' => '𞤀', + '𞤣' => '𞤁', + '𞤤' => '𞤂', + '𞤥' => '𞤃', + '𞤦' => '𞤄', + '𞤧' => '𞤅', + '𞤨' => '𞤆', + '𞤩' => '𞤇', + '𞤪' => '𞤈', + '𞤫' => '𞤉', + '𞤬' => '𞤊', + '𞤭' => '𞤋', + '𞤮' => '𞤌', + '𞤯' => '𞤍', + '𞤰' => '𞤎', + '𞤱' => '𞤏', + '𞤲' => '𞤐', + '𞤳' => '𞤑', + '𞤴' => '𞤒', + '𞤵' => '𞤓', + '𞤶' => '𞤔', + '𞤷' => '𞤕', + '𞤸' => '𞤖', + '𞤹' => '𞤗', + '𞤺' => '𞤘', + '𞤻' => '𞤙', + '𞤼' => '𞤚', + '𞤽' => '𞤛', + '𞤾' => '𞤜', + '𞤿' => '𞤝', + '𞥀' => '𞤞', + '𞥁' => '𞤟', + '𞥂' => '𞤠', + '𞥃' => '𞤡', + 'ß' => 'SS', + 'ff' => 'FF', + 'fi' => 'FI', + 'fl' => 'FL', + 'ffi' => 'FFI', + 'ffl' => 'FFL', + 'ſt' => 'ST', + 'st' => 'ST', + 'և' => 'ԵՒ', + 'ﬓ' => 'ՄՆ', + 'ﬔ' => 'ՄԵ', + 'ﬕ' => 'ՄԻ', + 'ﬖ' => 'ՎՆ', + 'ﬗ' => 'ՄԽ', + 'ʼn' => 'ʼN', + 'ΐ' => 'Ϊ́', + 'ΰ' => 'Ϋ́', + 'ǰ' => 'J̌', + 'ẖ' => 'H̱', + 'ẗ' => 'T̈', + 'ẘ' => 'W̊', + 'ẙ' => 'Y̊', + 'ẚ' => 'Aʾ', + 'ὐ' => 'Υ̓', + 'ὒ' => 'Υ̓̀', + 'ὔ' => 'Υ̓́', + 'ὖ' => 'Υ̓͂', + 'ᾶ' => 'Α͂', + 'ῆ' => 'Η͂', + 'ῒ' => 'Ϊ̀', + 'ΐ' => 'Ϊ́', + 'ῖ' => 'Ι͂', + 'ῗ' => 'Ϊ͂', + 'ῢ' => 'Ϋ̀', + 'ΰ' => 'Ϋ́', + 'ῤ' => 'Ρ̓', + 'ῦ' => 'Υ͂', + 'ῧ' => 'Ϋ͂', + 'ῶ' => 'Ω͂', + 'ᾈ' => 'ἈΙ', + 'ᾉ' => 'ἉΙ', + 'ᾊ' => 'ἊΙ', + 'ᾋ' => 'ἋΙ', + 'ᾌ' => 'ἌΙ', + 'ᾍ' => 'ἍΙ', + 'ᾎ' => 'ἎΙ', + 'ᾏ' => 'ἏΙ', + 'ᾘ' => 'ἨΙ', + 'ᾙ' => 'ἩΙ', + 'ᾚ' => 'ἪΙ', + 'ᾛ' => 'ἫΙ', + 'ᾜ' => 'ἬΙ', + 'ᾝ' => 'ἭΙ', + 'ᾞ' => 'ἮΙ', + 'ᾟ' => 'ἯΙ', + 'ᾨ' => 'ὨΙ', + 'ᾩ' => 'ὩΙ', + 'ᾪ' => 'ὪΙ', + 'ᾫ' => 'ὫΙ', + 'ᾬ' => 'ὬΙ', + 'ᾭ' => 'ὭΙ', + 'ᾮ' => 'ὮΙ', + 'ᾯ' => 'ὯΙ', + 'ᾼ' => 'ΑΙ', + 'ῌ' => 'ΗΙ', + 'ῼ' => 'ΩΙ', + 'ᾲ' => 'ᾺΙ', + 'ᾴ' => 'ΆΙ', + 'ῂ' => 'ῊΙ', + 'ῄ' => 'ΉΙ', + 'ῲ' => 'ῺΙ', + 'ῴ' => 'ΏΙ', + 'ᾷ' => 'Α͂Ι', + 'ῇ' => 'Η͂Ι', + 'ῷ' => 'Ω͂Ι', +); diff --git a/lib/sqlparser/vendor/symfony/polyfill-mbstring/bootstrap.php b/lib/sqlparser/vendor/symfony/polyfill-mbstring/bootstrap.php new file mode 100644 index 0000000000..1fedd1f7c8 --- /dev/null +++ b/lib/sqlparser/vendor/symfony/polyfill-mbstring/bootstrap.php @@ -0,0 +1,147 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +use Symfony\Polyfill\Mbstring as p; + +if (\PHP_VERSION_ID >= 80000) { + return require __DIR__.'/bootstrap80.php'; +} + +if (!function_exists('mb_convert_encoding')) { + function mb_convert_encoding($string, $to_encoding, $from_encoding = null) { return p\Mbstring::mb_convert_encoding($string, $to_encoding, $from_encoding); } +} +if (!function_exists('mb_decode_mimeheader')) { + function mb_decode_mimeheader($string) { return p\Mbstring::mb_decode_mimeheader($string); } +} +if (!function_exists('mb_encode_mimeheader')) { + function mb_encode_mimeheader($string, $charset = null, $transfer_encoding = null, $newline = "\r\n", $indent = 0) { return p\Mbstring::mb_encode_mimeheader($string, $charset, $transfer_encoding, $newline, $indent); } +} +if (!function_exists('mb_decode_numericentity')) { + function mb_decode_numericentity($string, $map, $encoding = null) { return p\Mbstring::mb_decode_numericentity($string, $map, $encoding); } +} +if (!function_exists('mb_encode_numericentity')) { + function mb_encode_numericentity($string, $map, $encoding = null, $hex = false) { return p\Mbstring::mb_encode_numericentity($string, $map, $encoding, $hex); } +} +if (!function_exists('mb_convert_case')) { + function mb_convert_case($string, $mode, $encoding = null) { return p\Mbstring::mb_convert_case($string, $mode, $encoding); } +} +if (!function_exists('mb_internal_encoding')) { + function mb_internal_encoding($encoding = null) { return p\Mbstring::mb_internal_encoding($encoding); } +} +if (!function_exists('mb_language')) { + function mb_language($language = null) { return p\Mbstring::mb_language($language); } +} +if (!function_exists('mb_list_encodings')) { + function mb_list_encodings() { return p\Mbstring::mb_list_encodings(); } +} +if (!function_exists('mb_encoding_aliases')) { + function mb_encoding_aliases($encoding) { return p\Mbstring::mb_encoding_aliases($encoding); } +} +if (!function_exists('mb_check_encoding')) { + function mb_check_encoding($value = null, $encoding = null) { return p\Mbstring::mb_check_encoding($value, $encoding); } +} +if (!function_exists('mb_detect_encoding')) { + function mb_detect_encoding($string, $encodings = null, $strict = false) { return p\Mbstring::mb_detect_encoding($string, $encodings, $strict); } +} +if (!function_exists('mb_detect_order')) { + function mb_detect_order($encoding = null) { return p\Mbstring::mb_detect_order($encoding); } +} +if (!function_exists('mb_parse_str')) { + function mb_parse_str($string, &$result = []) { parse_str($string, $result); return (bool) $result; } +} +if (!function_exists('mb_strlen')) { + function mb_strlen($string, $encoding = null) { return p\Mbstring::mb_strlen($string, $encoding); } +} +if (!function_exists('mb_strpos')) { + function mb_strpos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_strpos($haystack, $needle, $offset, $encoding); } +} +if (!function_exists('mb_strtolower')) { + function mb_strtolower($string, $encoding = null) { return p\Mbstring::mb_strtolower($string, $encoding); } +} +if (!function_exists('mb_strtoupper')) { + function mb_strtoupper($string, $encoding = null) { return p\Mbstring::mb_strtoupper($string, $encoding); } +} +if (!function_exists('mb_substitute_character')) { + function mb_substitute_character($substitute_character = null) { return p\Mbstring::mb_substitute_character($substitute_character); } +} +if (!function_exists('mb_substr')) { + function mb_substr($string, $start, $length = 2147483647, $encoding = null) { return p\Mbstring::mb_substr($string, $start, $length, $encoding); } +} +if (!function_exists('mb_stripos')) { + function mb_stripos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_stripos($haystack, $needle, $offset, $encoding); } +} +if (!function_exists('mb_stristr')) { + function mb_stristr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_stristr($haystack, $needle, $before_needle, $encoding); } +} +if (!function_exists('mb_strrchr')) { + function mb_strrchr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_strrchr($haystack, $needle, $before_needle, $encoding); } +} +if (!function_exists('mb_strrichr')) { + function mb_strrichr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_strrichr($haystack, $needle, $before_needle, $encoding); } +} +if (!function_exists('mb_strripos')) { + function mb_strripos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_strripos($haystack, $needle, $offset, $encoding); } +} +if (!function_exists('mb_strrpos')) { + function mb_strrpos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_strrpos($haystack, $needle, $offset, $encoding); } +} +if (!function_exists('mb_strstr')) { + function mb_strstr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_strstr($haystack, $needle, $before_needle, $encoding); } +} +if (!function_exists('mb_get_info')) { + function mb_get_info($type = 'all') { return p\Mbstring::mb_get_info($type); } +} +if (!function_exists('mb_http_output')) { + function mb_http_output($encoding = null) { return p\Mbstring::mb_http_output($encoding); } +} +if (!function_exists('mb_strwidth')) { + function mb_strwidth($string, $encoding = null) { return p\Mbstring::mb_strwidth($string, $encoding); } +} +if (!function_exists('mb_substr_count')) { + function mb_substr_count($haystack, $needle, $encoding = null) { return p\Mbstring::mb_substr_count($haystack, $needle, $encoding); } +} +if (!function_exists('mb_output_handler')) { + function mb_output_handler($string, $status) { return p\Mbstring::mb_output_handler($string, $status); } +} +if (!function_exists('mb_http_input')) { + function mb_http_input($type = null) { return p\Mbstring::mb_http_input($type); } +} + +if (!function_exists('mb_convert_variables')) { + function mb_convert_variables($to_encoding, $from_encoding, &...$vars) { return p\Mbstring::mb_convert_variables($to_encoding, $from_encoding, ...$vars); } +} + +if (!function_exists('mb_ord')) { + function mb_ord($string, $encoding = null) { return p\Mbstring::mb_ord($string, $encoding); } +} +if (!function_exists('mb_chr')) { + function mb_chr($codepoint, $encoding = null) { return p\Mbstring::mb_chr($codepoint, $encoding); } +} +if (!function_exists('mb_scrub')) { + function mb_scrub($string, $encoding = null) { $encoding = null === $encoding ? mb_internal_encoding() : $encoding; return mb_convert_encoding($string, $encoding, $encoding); } +} +if (!function_exists('mb_str_split')) { + function mb_str_split($string, $length = 1, $encoding = null) { return p\Mbstring::mb_str_split($string, $length, $encoding); } +} + +if (extension_loaded('mbstring')) { + return; +} + +if (!defined('MB_CASE_UPPER')) { + define('MB_CASE_UPPER', 0); +} +if (!defined('MB_CASE_LOWER')) { + define('MB_CASE_LOWER', 1); +} +if (!defined('MB_CASE_TITLE')) { + define('MB_CASE_TITLE', 2); +} diff --git a/lib/sqlparser/vendor/symfony/polyfill-mbstring/bootstrap80.php b/lib/sqlparser/vendor/symfony/polyfill-mbstring/bootstrap80.php new file mode 100644 index 0000000000..82f5ac4d0f --- /dev/null +++ b/lib/sqlparser/vendor/symfony/polyfill-mbstring/bootstrap80.php @@ -0,0 +1,143 @@ + + * + * For the full copyright and license information, please view the LICENSE + * file that was distributed with this source code. + */ + +use Symfony\Polyfill\Mbstring as p; + +if (!function_exists('mb_convert_encoding')) { + function mb_convert_encoding(array|string|null $string, ?string $to_encoding, array|string|null $from_encoding = null): array|string|false { return p\Mbstring::mb_convert_encoding($string ?? '', (string) $to_encoding, $from_encoding); } +} +if (!function_exists('mb_decode_mimeheader')) { + function mb_decode_mimeheader(?string $string): string { return p\Mbstring::mb_decode_mimeheader((string) $string); } +} +if (!function_exists('mb_encode_mimeheader')) { + function mb_encode_mimeheader(?string $string, ?string $charset = null, ?string $transfer_encoding = null, ?string $newline = "\r\n", ?int $indent = 0): string { return p\Mbstring::mb_encode_mimeheader((string) $string, $charset, $transfer_encoding, (string) $newline, (int) $indent); } +} +if (!function_exists('mb_decode_numericentity')) { + function mb_decode_numericentity(?string $string, array $map, ?string $encoding = null): string { return p\Mbstring::mb_decode_numericentity((string) $string, $map, $encoding); } +} +if (!function_exists('mb_encode_numericentity')) { + function mb_encode_numericentity(?string $string, array $map, ?string $encoding = null, ?bool $hex = false): string { return p\Mbstring::mb_encode_numericentity((string) $string, $map, $encoding, (bool) $hex); } +} +if (!function_exists('mb_convert_case')) { + function mb_convert_case(?string $string, ?int $mode, ?string $encoding = null): string { return p\Mbstring::mb_convert_case((string) $string, (int) $mode, $encoding); } +} +if (!function_exists('mb_internal_encoding')) { + function mb_internal_encoding(?string $encoding = null): string|bool { return p\Mbstring::mb_internal_encoding($encoding); } +} +if (!function_exists('mb_language')) { + function mb_language(?string $language = null): string|bool { return p\Mbstring::mb_language($language); } +} +if (!function_exists('mb_list_encodings')) { + function mb_list_encodings(): array { return p\Mbstring::mb_list_encodings(); } +} +if (!function_exists('mb_encoding_aliases')) { + function mb_encoding_aliases(?string $encoding): array { return p\Mbstring::mb_encoding_aliases((string) $encoding); } +} +if (!function_exists('mb_check_encoding')) { + function mb_check_encoding(array|string|null $value = null, ?string $encoding = null): bool { return p\Mbstring::mb_check_encoding($value, $encoding); } +} +if (!function_exists('mb_detect_encoding')) { + function mb_detect_encoding(?string $string, array|string|null $encodings = null, ?bool $strict = false): string|false { return p\Mbstring::mb_detect_encoding((string) $string, $encodings, (bool) $strict); } +} +if (!function_exists('mb_detect_order')) { + function mb_detect_order(array|string|null $encoding = null): array|bool { return p\Mbstring::mb_detect_order($encoding); } +} +if (!function_exists('mb_parse_str')) { + function mb_parse_str(?string $string, &$result = []): bool { parse_str((string) $string, $result); return (bool) $result; } +} +if (!function_exists('mb_strlen')) { + function mb_strlen(?string $string, ?string $encoding = null): int { return p\Mbstring::mb_strlen((string) $string, $encoding); } +} +if (!function_exists('mb_strpos')) { + function mb_strpos(?string $haystack, ?string $needle, ?int $offset = 0, ?string $encoding = null): int|false { return p\Mbstring::mb_strpos((string) $haystack, (string) $needle, (int) $offset, $encoding); } +} +if (!function_exists('mb_strtolower')) { + function mb_strtolower(?string $string, ?string $encoding = null): string { return p\Mbstring::mb_strtolower((string) $string, $encoding); } +} +if (!function_exists('mb_strtoupper')) { + function mb_strtoupper(?string $string, ?string $encoding = null): string { return p\Mbstring::mb_strtoupper((string) $string, $encoding); } +} +if (!function_exists('mb_substitute_character')) { + function mb_substitute_character(string|int|null $substitute_character = null): string|int|bool { return p\Mbstring::mb_substitute_character($substitute_character); } +} +if (!function_exists('mb_substr')) { + function mb_substr(?string $string, ?int $start, ?int $length = null, ?string $encoding = null): string { return p\Mbstring::mb_substr((string) $string, (int) $start, $length, $encoding); } +} +if (!function_exists('mb_stripos')) { + function mb_stripos(?string $haystack, ?string $needle, ?int $offset = 0, ?string $encoding = null): int|false { return p\Mbstring::mb_stripos((string) $haystack, (string) $needle, (int) $offset, $encoding); } +} +if (!function_exists('mb_stristr')) { + function mb_stristr(?string $haystack, ?string $needle, ?bool $before_needle = false, ?string $encoding = null): string|false { return p\Mbstring::mb_stristr((string) $haystack, (string) $needle, (bool) $before_needle, $encoding); } +} +if (!function_exists('mb_strrchr')) { + function mb_strrchr(?string $haystack, ?string $needle, ?bool $before_needle = false, ?string $encoding = null): string|false { return p\Mbstring::mb_strrchr((string) $haystack, (string) $needle, (bool) $before_needle, $encoding); } +} +if (!function_exists('mb_strrichr')) { + function mb_strrichr(?string $haystack, ?string $needle, ?bool $before_needle = false, ?string $encoding = null): string|false { return p\Mbstring::mb_strrichr((string) $haystack, (string) $needle, (bool) $before_needle, $encoding); } +} +if (!function_exists('mb_strripos')) { + function mb_strripos(?string $haystack, ?string $needle, ?int $offset = 0, ?string $encoding = null): int|false { return p\Mbstring::mb_strripos((string) $haystack, (string) $needle, (int) $offset, $encoding); } +} +if (!function_exists('mb_strrpos')) { + function mb_strrpos(?string $haystack, ?string $needle, ?int $offset = 0, ?string $encoding = null): int|false { return p\Mbstring::mb_strrpos((string) $haystack, (string) $needle, (int) $offset, $encoding); } +} +if (!function_exists('mb_strstr')) { + function mb_strstr(?string $haystack, ?string $needle, ?bool $before_needle = false, ?string $encoding = null): string|false { return p\Mbstring::mb_strstr((string) $haystack, (string) $needle, (bool) $before_needle, $encoding); } +} +if (!function_exists('mb_get_info')) { + function mb_get_info(?string $type = 'all'): array|string|int|false { return p\Mbstring::mb_get_info((string) $type); } +} +if (!function_exists('mb_http_output')) { + function mb_http_output(?string $encoding = null): string|bool { return p\Mbstring::mb_http_output($encoding); } +} +if (!function_exists('mb_strwidth')) { + function mb_strwidth(?string $string, ?string $encoding = null): int { return p\Mbstring::mb_strwidth((string) $string, $encoding); } +} +if (!function_exists('mb_substr_count')) { + function mb_substr_count(?string $haystack, ?string $needle, ?string $encoding = null): int { return p\Mbstring::mb_substr_count((string) $haystack, (string) $needle, $encoding); } +} +if (!function_exists('mb_output_handler')) { + function mb_output_handler(?string $string, ?int $status): string { return p\Mbstring::mb_output_handler((string) $string, (int) $status); } +} +if (!function_exists('mb_http_input')) { + function mb_http_input(?string $type = null): array|string|false { return p\Mbstring::mb_http_input($type); } +} + +if (!function_exists('mb_convert_variables')) { + function mb_convert_variables(?string $to_encoding, array|string|null $from_encoding, mixed &$var, mixed &...$vars): string|false { return p\Mbstring::mb_convert_variables((string) $to_encoding, $from_encoding ?? '', $var, ...$vars); } +} + +if (!function_exists('mb_ord')) { + function mb_ord(?string $string, ?string $encoding = null): int|false { return p\Mbstring::mb_ord((string) $string, $encoding); } +} +if (!function_exists('mb_chr')) { + function mb_chr(?int $codepoint, ?string $encoding = null): string|false { return p\Mbstring::mb_chr((int) $codepoint, $encoding); } +} +if (!function_exists('mb_scrub')) { + function mb_scrub(?string $string, ?string $encoding = null): string { $encoding ??= mb_internal_encoding(); return mb_convert_encoding((string) $string, $encoding, $encoding); } +} +if (!function_exists('mb_str_split')) { + function mb_str_split(?string $string, ?int $length = 1, ?string $encoding = null): array { return p\Mbstring::mb_str_split((string) $string, (int) $length, $encoding); } +} + +if (extension_loaded('mbstring')) { + return; +} + +if (!defined('MB_CASE_UPPER')) { + define('MB_CASE_UPPER', 0); +} +if (!defined('MB_CASE_LOWER')) { + define('MB_CASE_LOWER', 1); +} +if (!defined('MB_CASE_TITLE')) { + define('MB_CASE_TITLE', 2); +} diff --git a/lib/sqlparser/vendor/symfony/polyfill-mbstring/composer.json b/lib/sqlparser/vendor/symfony/polyfill-mbstring/composer.json new file mode 100644 index 0000000000..9cd2e924e9 --- /dev/null +++ b/lib/sqlparser/vendor/symfony/polyfill-mbstring/composer.json @@ -0,0 +1,41 @@ +{ + "name": "symfony/polyfill-mbstring", + "type": "library", + "description": "Symfony polyfill for the Mbstring extension", + "keywords": ["polyfill", "shim", "compatibility", "portable", "mbstring"], + "homepage": "https://symfony.com", + "license": "MIT", + "authors": [ + { + "name": "Nicolas Grekas", + "email": "p@tchwork.com" + }, + { + "name": "Symfony Community", + "homepage": "https://symfony.com/contributors" + } + ], + "require": { + "php": ">=7.1" + }, + "provide": { + "ext-mbstring": "*" + }, + "autoload": { + "psr-4": { "Symfony\\Polyfill\\Mbstring\\": "" }, + "files": [ "bootstrap.php" ] + }, + "suggest": { + "ext-mbstring": "For best performance" + }, + "minimum-stability": "dev", + "extra": { + "branch-alias": { + "dev-main": "1.26-dev" + }, + "thanks": { + "name": "symfony/polyfill", + "url": "https://github.com/symfony/polyfill" + } + } +} diff --git a/module/action/config.php b/module/action/config.php index 000cdcd5cf..2565ee1d5d 100755 --- a/module/action/config.php +++ b/module/action/config.php @@ -44,6 +44,7 @@ $config->action->objectNameFields['kanbancard'] = 'name'; $config->action->objectNameFields['sonarqube'] = 'name'; $config->action->objectNameFields['gitlab'] = 'name'; $config->action->objectNameFields['gitea'] = 'name'; +$config->action->objectNameFields['gogs'] = 'name'; $config->action->objectNameFields['stage'] = 'name'; $config->action->objectNameFields['apistruct'] = 'name'; $config->action->objectNameFields['repo'] = 'name'; @@ -62,7 +63,7 @@ $config->action->majorList['execution'] = array('opened', 'edited'); $config->action->needGetProjectType = 'build,task,bug,case,testcase,caselib,testtask,testsuite,testreport,doc,issue,release,risk,design,opportunity,trainplan,gapanalysis,researchplan,researchreport,'; $config->action->needGetRelateField = ',story,productplan,release,task,build,bug,testcase,case,testtask,testreport,doc,doclib,issue,risk,opportunity,trainplan,gapanalysis,team,whitelist,researchplan,researchreport,meeting,kanbanlane,kanbancolumn,module,'; -$config->action->noLinkModules = ',doclib,module,webhook,gitlab,gitea,sonarqube,pipeline,jenkins,kanban,kanbanspace,kanbancolumn,kanbanlane,kanbanregion,kanbancard,execution,project,traincategory,apistruct,program,product,user,entry,repo,'; +$config->action->noLinkModules = ',doclib,module,webhook,gitlab,gitea,gogs,sonarqube,pipeline,jenkins,kanban,kanbanspace,kanbancolumn,kanbanlane,kanbanregion,kanbancard,execution,project,traincategory,apistruct,program,product,user,entry,repo,'; $config->action->preferredTypeNum = 10; diff --git a/module/action/lang/de.php b/module/action/lang/de.php index e92cc40c4c..86e6b08025 100644 --- a/module/action/lang/de.php +++ b/module/action/lang/de.php @@ -57,6 +57,7 @@ $lang->action->historyEdit = 'Der Verlauf darf nicht leer sein.'; $lang->action->noDynamic = 'Kein Verlauf. '; $lang->action->undeletedTips = 'This data did not participate in the merging process during the version upgrade process, so restore is not supported.'; $lang->action->executionNoProject = 'The execution does not belong to a project,please restore the project first'; +$lang->action->repoNoServer = 'The repo does not belong to a server,please restore the server first'; $lang->action->repeatChange = '%s with the same name and code already exists in the system, After recovery, the name are \"%s\",the code are \"%s\".'; $lang->action->nameRepeatChange = '%s with the same name already exists in the system, After recovery, the name are \"%s\".'; @@ -128,6 +129,7 @@ $lang->action->objectTypes['whitelist'] = 'Whitelist'; $lang->action->objectTypes['pipeline'] = 'GitLib'; $lang->action->objectTypes['gitlab'] = 'GitLab Server'; $lang->action->objectTypes['gitea'] = 'Gitea Server'; +$lang->action->objectTypes['gogs'] = 'Gogs Server'; $lang->action->objectTypes['jenkins'] = 'Jenkins'; $lang->action->objectTypes['mr'] = 'Merge Request'; $lang->action->objectTypes['gitlabproject'] = 'GitLab Project'; @@ -138,6 +140,7 @@ $lang->action->objectTypes['gitlabbranchpriv'] = 'GitLab Protected Branches'; $lang->action->objectTypes['gitlabtag'] = 'GitLab Tag'; $lang->action->objectTypes['gitlabtagpriv'] = 'GitLab Tag Protected'; $lang->action->objectTypes['giteauser'] = 'Gitea User'; +$lang->action->objectTypes['gogsuser'] = 'Gogs User'; $lang->action->objectTypes['kanbanspace'] = 'Kanban Space'; $lang->action->objectTypes['kanban'] = 'Kanban'; $lang->action->objectTypes['kanbanregion'] = 'Kanban Region'; @@ -637,19 +640,32 @@ $lang->action->dynamicAction->job['executed'] = 'Execute Job'; $lang->action->dynamicAction->job['deleted'] = 'Delete Job'; $lang->action->dynamicAction->job['undeleted'] = 'Undelete Job'; -$lang->action->dynamicAction->sonarqube['created'] = 'Create SonarQube Server'; -$lang->action->dynamicAction->sonarqube['edited'] = 'Edit SonarQube Server'; -$lang->action->dynamicAction->sonarqube['deleted'] = 'Delete SonarQube Server'; +$lang->action->dynamicAction->sonarqube['created'] = 'Create SonarQube Server'; +$lang->action->dynamicAction->sonarqube['edited'] = 'Edit SonarQube Server'; +$lang->action->dynamicAction->sonarqube['deleted'] = 'Delete SonarQube Server'; +$lang->action->dynamicAction->sonarqube['undeleted'] = 'Undelete SonarQube Server'; $lang->action->dynamicAction->sonarqubeproject['deleted'] = 'Delete SonarQube Project'; -$lang->action->dynamicAction->gitlab['created'] = 'Create GitLab Server'; -$lang->action->dynamicAction->gitlab['edited'] = 'Edit GitLab Server'; -$lang->action->dynamicAction->gitlab['deleted'] = 'Delete GitLab Server'; +$lang->action->dynamicAction->gitlab['created'] = 'Create GitLab Server'; +$lang->action->dynamicAction->gitlab['edited'] = 'Edit GitLab Server'; +$lang->action->dynamicAction->gitlab['deleted'] = 'Delete GitLab Server'; +$lang->action->dynamicAction->gitlab['undeleted'] = 'Undelete GitLab Server'; -$lang->action->dynamicAction->gitea['created'] = 'Create Gitea Server'; -$lang->action->dynamicAction->gitea['edited'] = 'Edit Gitea Server'; -$lang->action->dynamicAction->gitea['deleted'] = 'Delete Gitea Server'; +$lang->action->dynamicAction->gitea['created'] = 'Create Gitea Server'; +$lang->action->dynamicAction->gitea['edited'] = 'Edit Gitea Server'; +$lang->action->dynamicAction->gitea['deleted'] = 'Delete Gitea Server'; +$lang->action->dynamicAction->gitea['undeleted'] = 'Undelete Gitea Server'; + +$lang->action->dynamicAction->gogs['created'] = 'Create Gogs Server'; +$lang->action->dynamicAction->gogs['edited'] = 'Edit Gogs Server'; +$lang->action->dynamicAction->gogs['deleted'] = 'Delete Gogs Server'; +$lang->action->dynamicAction->gogs['undeleted'] = 'Undelete Gogs Server'; + +$lang->action->dynamicAction->repo['created'] = 'Create Repo'; +$lang->action->dynamicAction->repo['edited'] = 'Edit Repo'; +$lang->action->dynamicAction->repo['deleted'] = 'Delete Repo'; +$lang->action->dynamicAction->repo['undeleted'] = 'Undelete Repo'; /* Generate the corresponding object link. */ $lang->action->label->product = $lang->productCommon . '|product|view|productID=%s'; diff --git a/module/action/lang/en.php b/module/action/lang/en.php index 5d0d27fa41..f6c1e1ad00 100755 --- a/module/action/lang/en.php +++ b/module/action/lang/en.php @@ -57,6 +57,7 @@ $lang->action->historyEdit = 'The history EditBy cannot be empty.'; $lang->action->noDynamic = 'No dynamics. '; $lang->action->undeletedTips = 'This data did not participate in the merging process during the version upgrade process, so restore is not supported.'; $lang->action->executionNoProject = 'The execution does not belong to a project,please restore the project first'; +$lang->action->repoNoServer = 'The repo does not belong to a server,please restore the server first'; $lang->action->repeatChange = '%s with the same name and code already exists in the system, After recovery, the name are \"%s\",the code are \"%s\".'; $lang->action->nameRepeatChange = '%s with the same name already exists in the system, After recovery, the name are \"%s\".'; @@ -128,6 +129,7 @@ $lang->action->objectTypes['whitelist'] = 'Whitelist'; $lang->action->objectTypes['pipeline'] = 'GitLab Server'; $lang->action->objectTypes['gitlab'] = 'GitLab Server'; $lang->action->objectTypes['gitea'] = 'Gitea Server'; +$lang->action->objectTypes['gogs'] = 'Gogs Server'; $lang->action->objectTypes['jenkins'] = 'Jenkins'; $lang->action->objectTypes['mr'] = 'Merge Request'; $lang->action->objectTypes['gitlabproject'] = 'GitLab Project'; @@ -138,6 +140,7 @@ $lang->action->objectTypes['gitlabbranchpriv'] = 'GitLab Protected Branches'; $lang->action->objectTypes['gitlabtag'] = 'GitLab Tag'; $lang->action->objectTypes['gitlabtagpriv'] = 'GitLab Tag Protected'; $lang->action->objectTypes['giteauser'] = 'Gitea User'; +$lang->action->objectTypes['gogsuser'] = 'Gogs User'; $lang->action->objectTypes['kanbanspace'] = 'Kanban Space'; $lang->action->objectTypes['kanban'] = 'Kanban'; $lang->action->objectTypes['kanbanregion'] = 'Kanban Region'; @@ -637,19 +640,32 @@ $lang->action->dynamicAction->job['executed'] = 'Execute Job'; $lang->action->dynamicAction->job['deleted'] = 'Delete Job'; $lang->action->dynamicAction->job['undeleted'] = 'Undelete Job'; -$lang->action->dynamicAction->sonarqube['created'] = 'Create SonarQube Server'; -$lang->action->dynamicAction->sonarqube['edited'] = 'Edit SonarQube Server'; -$lang->action->dynamicAction->sonarqube['deleted'] = 'Delete SonarQube Server'; +$lang->action->dynamicAction->sonarqube['created'] = 'Create SonarQube Server'; +$lang->action->dynamicAction->sonarqube['edited'] = 'Edit SonarQube Server'; +$lang->action->dynamicAction->sonarqube['deleted'] = 'Delete SonarQube Server'; +$lang->action->dynamicAction->sonarqube['undeleted'] = 'Undelete SonarQube Server'; $lang->action->dynamicAction->sonarqubeproject['deleted'] = 'Delete SonarQube Project'; -$lang->action->dynamicAction->gitlab['created'] = 'Create GitLab Server'; -$lang->action->dynamicAction->gitlab['edited'] = 'Edit GitLab Server'; -$lang->action->dynamicAction->gitlab['deleted'] = 'Delete GitLab Server'; +$lang->action->dynamicAction->gitlab['created'] = 'Create GitLab Server'; +$lang->action->dynamicAction->gitlab['edited'] = 'Edit GitLab Server'; +$lang->action->dynamicAction->gitlab['deleted'] = 'Delete GitLab Server'; +$lang->action->dynamicAction->gitlab['undeleted'] = 'Undelete GitLab Server'; -$lang->action->dynamicAction->gitea['created'] = 'Create Gitea Server'; -$lang->action->dynamicAction->gitea['edited'] = 'Edit Gitea Server'; -$lang->action->dynamicAction->gitea['deleted'] = 'Delete Gitea Server'; +$lang->action->dynamicAction->gitea['created'] = 'Create Gitea Server'; +$lang->action->dynamicAction->gitea['edited'] = 'Edit Gitea Server'; +$lang->action->dynamicAction->gitea['deleted'] = 'Delete Gitea Server'; +$lang->action->dynamicAction->gitea['undeleted'] = 'Undelete Gitea Server'; + +$lang->action->dynamicAction->gogs['created'] = 'Create Gogs Server'; +$lang->action->dynamicAction->gogs['edited'] = 'Edit Gogs Server'; +$lang->action->dynamicAction->gogs['deleted'] = 'Delete Gogs Server'; +$lang->action->dynamicAction->gogs['undeleted'] = 'Undelete Gogs Server'; + +$lang->action->dynamicAction->repo['created'] = 'Create Repo'; +$lang->action->dynamicAction->repo['edited'] = 'Edit Repo'; +$lang->action->dynamicAction->repo['deleted'] = 'Delete Repo'; +$lang->action->dynamicAction->repo['undeleted'] = 'Undelete Repo'; /* Generate the corresponding object link. */ $lang->action->label->product = $lang->productCommon . '|product|view|productID=%s'; diff --git a/module/action/lang/fr.php b/module/action/lang/fr.php index 3efb026564..3a2db412b6 100644 --- a/module/action/lang/fr.php +++ b/module/action/lang/fr.php @@ -57,6 +57,7 @@ $lang->action->historyEdit = "l'historique Edité Par ne peut pas être v $lang->action->noDynamic = "Pas d'historique."; $lang->action->undeletedTips = 'This data did not participate in the merging process during the version upgrade process, so restore is not supported.'; $lang->action->executionNoProject = 'The execution does not belong to a project,please restore the project first'; +$lang->action->repoNoServer = 'The repo does not belong to a server,please restore the server first'; $lang->action->repeatChange = '%s with the same name and code already exists in the system, After recovery, the name are \"%s\",the code are \"%s\".'; $lang->action->nameRepeatChange = '%s with the same name already exists in the system, After recovery, the name are \"%s\".'; @@ -128,6 +129,7 @@ $lang->action->objectTypes['whitelist'] = 'Whitelist'; $lang->action->objectTypes['pipeline'] = 'GitLib'; $lang->action->objectTypes['gitlab'] = 'GitLab Server'; $lang->action->objectTypes['gitea'] = 'Gitea Server'; +$lang->action->objectTypes['gogs'] = 'Gogs Server'; $lang->action->objectTypes['jenkins'] = 'Jenkins'; $lang->action->objectTypes['mr'] = 'Merge Request'; $lang->action->objectTypes['gitlabproject'] = 'GitLab Project'; @@ -138,6 +140,7 @@ $lang->action->objectTypes['gitlabbranchpriv'] = 'GitLab Protected Branches'; $lang->action->objectTypes['gitlabtag'] = 'GitLab Tag'; $lang->action->objectTypes['gitlabtagpriv'] = 'GitLab Tag Protected'; $lang->action->objectTypes['giteauser'] = 'Gitea User'; +$lang->action->objectTypes['gogsuser'] = 'Gogs User'; $lang->action->objectTypes['kanbanspace'] = 'Kanban Space'; $lang->action->objectTypes['kanban'] = 'Kanban'; $lang->action->objectTypes['kanbanregion'] = 'Kanban Region'; @@ -637,19 +640,32 @@ $lang->action->dynamicAction->job['executed'] = 'Execute Job'; $lang->action->dynamicAction->job['deleted'] = 'Delete Job'; $lang->action->dynamicAction->job['undeleted'] = 'Undelete Job'; -$lang->action->dynamicAction->sonarqube['created'] = 'Create SonarQube Server'; -$lang->action->dynamicAction->sonarqube['edited'] = 'Edit SonarQube Server'; -$lang->action->dynamicAction->sonarqube['deleted'] = 'Delete SonarQube Server'; +$lang->action->dynamicAction->sonarqube['created'] = 'Create SonarQube Server'; +$lang->action->dynamicAction->sonarqube['edited'] = 'Edit SonarQube Server'; +$lang->action->dynamicAction->sonarqube['deleted'] = 'Delete SonarQube Server'; +$lang->action->dynamicAction->sonarqube['undeleted'] = 'Undelete SonarQube Server'; $lang->action->dynamicAction->sonarqubeproject['deleted'] = 'Delete SonarQube Project'; -$lang->action->dynamicAction->gitlab['created'] = 'Create GitLab Server'; -$lang->action->dynamicAction->gitlab['edited'] = 'Edit GitLab Server'; -$lang->action->dynamicAction->gitlab['deleted'] = 'Delete GitLab Server'; +$lang->action->dynamicAction->gitlab['created'] = 'Create GitLab Server'; +$lang->action->dynamicAction->gitlab['edited'] = 'Edit GitLab Server'; +$lang->action->dynamicAction->gitlab['deleted'] = 'Delete GitLab Server'; +$lang->action->dynamicAction->gitlab['undeleted'] = 'Undelete GitLab Server'; -$lang->action->dynamicAction->gitea['created'] = 'Create Gitea Server'; -$lang->action->dynamicAction->gitea['edited'] = 'Edit Gitea Server'; -$lang->action->dynamicAction->gitea['deleted'] = 'Delete Gitea Server'; +$lang->action->dynamicAction->gitea['created'] = 'Create Gitea Server'; +$lang->action->dynamicAction->gitea['edited'] = 'Edit Gitea Server'; +$lang->action->dynamicAction->gitea['deleted'] = 'Delete Gitea Server'; +$lang->action->dynamicAction->gitea['undeleted'] = 'Undelete Gitea Server'; + +$lang->action->dynamicAction->gogs['created'] = 'Create Gogs Server'; +$lang->action->dynamicAction->gogs['edited'] = 'Edit Gogs Server'; +$lang->action->dynamicAction->gogs['deleted'] = 'Delete Gogs Server'; +$lang->action->dynamicAction->gogs['undeleted'] = 'Undelete Gogs Server'; + +$lang->action->dynamicAction->repo['created'] = 'Create Repo'; +$lang->action->dynamicAction->repo['edited'] = 'Edit Repo'; +$lang->action->dynamicAction->repo['deleted'] = 'Delete Repo'; +$lang->action->dynamicAction->repo['undeleted'] = 'Undelete Repo'; /* Generate the corresponding object link. */ $lang->action->label->product = $lang->productCommon . '|product|view|productID=%s'; diff --git a/module/action/lang/vi.php b/module/action/lang/vi.php index 09f6928001..fdaccee1bb 100644 --- a/module/action/lang/vi.php +++ b/module/action/lang/vi.php @@ -30,13 +30,16 @@ $lang->action->editComment = 'Sửa nhận xét'; $lang->action->create = 'Thêm nhận xét'; $lang->action->comment = 'Nhận xét'; -$lang->action->trashTips = 'Ghi chú: Xóa trong ZenTao là hợp lệ.'; -$lang->action->textDiff = 'Định dạng văn bản'; -$lang->action->original = 'Định dạng gốc'; -$lang->action->confirmHideAll = 'Bạn có muốn ẩn tất cả ghi nhận này?'; -$lang->action->needEdit = '%s mà bạn muốn khôi phục. Vui lòng edit it.'; -$lang->action->historyEdit = 'Lịch sử người cập nhật không thể trống.'; -$lang->action->noDynamic = 'Không có lịch sử. '; +$lang->action->trashTips = 'Ghi chú: Xóa trong ZenTao là hợp lệ.'; +$lang->action->textDiff = 'Định dạng văn bản'; +$lang->action->original = 'Định dạng gốc'; +$lang->action->confirmHideAll = 'Bạn có muốn ẩn tất cả ghi nhận này?'; +$lang->action->needEdit = '%s mà bạn muốn khôi phục. Vui lòng edit it.'; +$lang->action->historyEdit = 'Lịch sử người cập nhật không thể trống.'; +$lang->action->noDynamic = 'Không có lịch sử. '; +$lang->action->undeletedTips = 'This data did not participate in the merging process during the version upgrade process, so restore is not supported.'; +$lang->action->executionNoProject = 'The execution does not belong to a project,please restore the project first'; +$lang->action->repoNoServer = 'The repo does not belong to a server,please restore the server first'; $lang->action->history = new stdclass(); $lang->action->history->action = 'Liên kết'; @@ -102,6 +105,7 @@ $lang->action->objectTypes['whitelist'] = 'Whitelist'; $lang->action->objectTypes['pipeline'] = 'GitLib'; $lang->action->objectTypes['gitlab'] = 'GitLab Server'; $lang->action->objectTypes['gitea'] = 'Gitea Server'; +$lang->action->objectTypes['gogs'] = 'Gogs Server'; $lang->action->objectTypes['jenkins'] = 'Jenkins'; $lang->action->objectTypes['mr'] = 'Merge Request'; $lang->action->objectTypes['gitlabproject'] = 'GitLab Project'; @@ -112,6 +116,7 @@ $lang->action->objectTypes['gitlabbranchpriv'] = 'GitLab Protected Branches'; $lang->action->objectTypes['gitlabtag'] = 'GitLab Tag'; $lang->action->objectTypes['gitlabtagpriv'] = 'GitLab Tag Protected'; $lang->action->objectTypes['giteauser'] = 'Gitea User'; +$lang->action->objectTypes['gogsuser'] = 'Gogs User'; $lang->action->objectTypes['kanbanspace'] = 'Kanban Space'; $lang->action->objectTypes['kanban'] = 'Kanban'; $lang->action->objectTypes['kanbanregion'] = 'Kanban Region'; @@ -493,19 +498,32 @@ $lang->action->dynamicAction->job['executed'] = 'Execute Job'; $lang->action->dynamicAction->job['deleted'] = 'Delete Job'; $lang->action->dynamicAction->job['undeleted'] = 'Undelete Job'; -$lang->action->dynamicAction->sonarqube['created'] = 'Create SonarQube Server'; -$lang->action->dynamicAction->sonarqube['edited'] = 'Edit SonarQube Server'; -$lang->action->dynamicAction->sonarqube['deleted'] = 'Delete SonarQube Server'; +$lang->action->dynamicAction->sonarqube['created'] = 'Create SonarQube Server'; +$lang->action->dynamicAction->sonarqube['edited'] = 'Edit SonarQube Server'; +$lang->action->dynamicAction->sonarqube['deleted'] = 'Delete SonarQube Server'; +$lang->action->dynamicAction->sonarqube['undeleted'] = 'Undelete SonarQube Server'; $lang->action->dynamicAction->sonarqubeproject['deleted'] = 'Delete SonarQube Project'; -$lang->action->dynamicAction->gitlab['created'] = 'Create GitLab Server'; -$lang->action->dynamicAction->gitlab['edited'] = 'Edit GitLab Server'; -$lang->action->dynamicAction->gitlab['deleted'] = 'Delete GitLab Server'; +$lang->action->dynamicAction->gitlab['created'] = 'Create GitLab Server'; +$lang->action->dynamicAction->gitlab['edited'] = 'Edit GitLab Server'; +$lang->action->dynamicAction->gitlab['deleted'] = 'Delete GitLab Server'; +$lang->action->dynamicAction->gitlab['undeleted'] = 'Undelete GitLab Server'; -$lang->action->dynamicAction->gitea['created'] = 'Create Gitea Server'; -$lang->action->dynamicAction->gitea['edited'] = 'Edit Gitea Server'; -$lang->action->dynamicAction->gitea['deleted'] = 'Delete Gitea Server'; +$lang->action->dynamicAction->gitea['created'] = 'Create Gitea Server'; +$lang->action->dynamicAction->gitea['edited'] = 'Edit Gitea Server'; +$lang->action->dynamicAction->gitea['deleted'] = 'Delete Gitea Server'; +$lang->action->dynamicAction->gitea['undeleted'] = 'Undelete Gitea Server'; + +$lang->action->dynamicAction->gogs['created'] = 'Create Gogs Server'; +$lang->action->dynamicAction->gogs['edited'] = 'Edit Gogs Server'; +$lang->action->dynamicAction->gogs['deleted'] = 'Delete Gogs Server'; +$lang->action->dynamicAction->gogs['undeleted'] = 'Undelete Gogs Server'; + +$lang->action->dynamicAction->repo['created'] = 'Create Repo'; +$lang->action->dynamicAction->repo['edited'] = 'Edit Repo'; +$lang->action->dynamicAction->repo['deleted'] = 'Delete Repo'; +$lang->action->dynamicAction->repo['undeleted'] = 'Undelete Repo'; /* Generate the corresponding object link. */ global $config; diff --git a/module/action/lang/zh-cn.php b/module/action/lang/zh-cn.php index 69c382104d..dee6daa7ef 100755 --- a/module/action/lang/zh-cn.php +++ b/module/action/lang/zh-cn.php @@ -57,6 +57,7 @@ $lang->action->historyEdit = '历史记录编辑不能为空。'; $lang->action->noDynamic = '暂时没有动态。'; $lang->action->undeletedTips = '该数据在版本升级过程中未参与数据归并流程,不支持还原。'; $lang->action->executionNoProject = '该执行没有所属的项目,请先还原项目再还原执行'; +$lang->action->repoNoServer = '该代码库没有所属的服务器,请先还原服务器再还原代码库'; $lang->action->repeatChange = '系统内已有同名、同代号的%s,恢复后名称为\"%s\"、代号为\"%s\"。'; $lang->action->nameRepeatChange = '系统内已有同名的%s,恢复后名称为\"%s\"。'; @@ -128,6 +129,7 @@ $lang->action->objectTypes['whitelist'] = '白名单'; $lang->action->objectTypes['pipeline'] = 'GitLab服务器'; $lang->action->objectTypes['gitlab'] = 'GitLab服务器'; $lang->action->objectTypes['gitea'] = 'Gitea服务器'; +$lang->action->objectTypes['gogs'] = 'Gogs服务器'; $lang->action->objectTypes['jenkins'] = 'Jenkins'; $lang->action->objectTypes['mr'] = '合并请求'; $lang->action->objectTypes['gitlabproject'] = 'GitLab项目'; @@ -138,6 +140,7 @@ $lang->action->objectTypes['gitlabbranchpriv'] = 'GitLab保护分支'; $lang->action->objectTypes['gitlabtag'] = 'GitLab标签'; $lang->action->objectTypes['gitlabtagpriv'] = 'GitLab标签保护'; $lang->action->objectTypes['giteauser'] = 'Gitea用户'; +$lang->action->objectTypes['gogsuser'] = 'Gogs用户'; $lang->action->objectTypes['kanbanspace'] = '看板空间'; $lang->action->objectTypes['kanban'] = '看板'; $lang->action->objectTypes['kanbanregion'] = '看板区域'; @@ -637,19 +640,32 @@ $lang->action->dynamicAction->job['executed'] = '执行构建任务'; $lang->action->dynamicAction->job['deleted'] = '删除构建任务'; $lang->action->dynamicAction->job['undeleted'] = '还原构建任务'; -$lang->action->dynamicAction->sonarqube['created'] = '创建SonarQube服务器'; -$lang->action->dynamicAction->sonarqube['edited'] = '设置SonarQube服务器'; -$lang->action->dynamicAction->sonarqube['deleted'] = '删除SonarQube服务器'; +$lang->action->dynamicAction->sonarqube['created'] = '创建SonarQube服务器'; +$lang->action->dynamicAction->sonarqube['edited'] = '设置SonarQube服务器'; +$lang->action->dynamicAction->sonarqube['deleted'] = '删除SonarQube服务器'; +$lang->action->dynamicAction->sonarqube['undeleted'] = '还原SonarQube服务器'; $lang->action->dynamicAction->sonarqubeproject['deleted'] = '删除SonarQube项目'; -$lang->action->dynamicAction->gitlab['created'] = '创建GitLab服务器'; -$lang->action->dynamicAction->gitlab['edited'] = '编辑GitLab服务器'; -$lang->action->dynamicAction->gitlab['deleted'] = '删除GitLab服务器'; +$lang->action->dynamicAction->gitlab['created'] = '创建GitLab服务器'; +$lang->action->dynamicAction->gitlab['edited'] = '编辑GitLab服务器'; +$lang->action->dynamicAction->gitlab['deleted'] = '删除GitLab服务器'; +$lang->action->dynamicAction->gitlab['undeleted'] = '还原GitLab服务器'; -$lang->action->dynamicAction->gitea['created'] = '创建Gitea服务器'; -$lang->action->dynamicAction->gitea['edited'] = '编辑Gitea服务器'; -$lang->action->dynamicAction->gitea['deleted'] = '删除Gitea服务器'; +$lang->action->dynamicAction->gitea['created'] = '创建Gitea服务器'; +$lang->action->dynamicAction->gitea['edited'] = '编辑Gitea服务器'; +$lang->action->dynamicAction->gitea['deleted'] = '删除Gitea服务器'; +$lang->action->dynamicAction->gitea['undeleted'] = '还原Gitea服务器'; + +$lang->action->dynamicAction->gogs['created'] = '创建Gogs服务器'; +$lang->action->dynamicAction->gogs['edited'] = '编辑Gogs服务器'; +$lang->action->dynamicAction->gogs['deleted'] = '删除Gogs服务器'; +$lang->action->dynamicAction->gogs['undeleted'] = '还原Gogs服务器'; + +$lang->action->dynamicAction->repo['created'] = '创建代码库'; +$lang->action->dynamicAction->repo['edited'] = '编辑代码库'; +$lang->action->dynamicAction->repo['deleted'] = '删除代码库'; +$lang->action->dynamicAction->repo['undeleted'] = '还原代码库'; /* 用来生成相应对象的链接。*/ $lang->action->label->product = $lang->productCommon . '|product|view|productID=%s'; diff --git a/module/action/model.php b/module/action/model.php index 4d11e6b4e6..0cdba41644 100755 --- a/module/action/model.php +++ b/module/action/model.php @@ -1258,6 +1258,10 @@ class actionModel extends model $modules = $this->dao->select('id,name')->from(TABLE_MODULE)->where('id')->in(explode(',', $action->extra))->fetchPairs('id'); $action->objectName = implode(',', $modules); } + elseif($action->objectType == 'mr' and $action->action == 'deleted') + { + $action->objectName = $action->extra; + } $projectID = isset($relatedProjects[$action->objectType][$action->objectID]) ? $relatedProjects[$action->objectType][$action->objectID] : 0; @@ -1273,14 +1277,14 @@ class actionModel extends model /* If action type is login or logout, needn't link. */ if($actionType == 'svncommited' or $actionType == 'gitcommited') $action->actor = zget($commiters, $action->actor); - /* Get gitlab or gitea objectname. */ - if(empty($action->objectName) and (substr($objectType, 0, 6) == 'gitlab' or substr($objectType, 0, 5) == 'gitea')) $action->objectName = $action->extra; + /* Get gitlab, gitea or gogs objectname. */ + if(empty($action->objectName) and (substr($objectType, 0, 6) == 'gitlab' or substr($objectType, 0, 5) == 'gitea' or substr($objectType, 0, 4) == 'gogs')) $action->objectName = $action->extra; /* Other actions, create a link. */ $this->setObjectLink($action, $deptUsers); /* Set merge request link. */ - if(empty($action->objectName) and $action->objectType == 'mr') $action->objectLink = ''; + if((empty($action->objectName) or $action->action == 'deleted') and $action->objectType == 'mr') $action->objectLink = ''; $action->major = (isset($this->config->action->majorList[$action->objectType]) && in_array($action->action, $this->config->action->majorList[$action->objectType])) ? 1 : 0; } @@ -1729,6 +1733,16 @@ class actionModel extends model if((int)$projectCount == 0) return print(js::error($this->lang->action->executionNoProject)); } + if($action->objectType == 'repo') + { + $repo = $this->dao->select('*')->from(TABLE_REPO)->where('id')->eq($action->objectID)->fetch(); + if($repo and in_array($repo->SCM, array('Gitlab', 'Gitea', 'Gogs'))) + { + $server = $this->dao->select('*')->from(TABLE_PIPELINE)->where('id')->eq($repo->serviceHost)->andWhere('deleted')->eq('0')->fetch(); + if(empty($server)) return print(js::error($this->lang->action->repoNoServer)); + } + } + if($action->objectType == 'product') { $product = $this->dao->select('id,name,code,acl')->from(TABLE_PRODUCT)->where('id')->eq($action->objectID)->fetch(); @@ -1757,6 +1771,12 @@ class actionModel extends model { $products = $this->product->getProducts($project->id, 'all', '', false); if(!empty($products)) $this->loadModel('user')->updateUserView(array_keys($products), 'product'); + + if($action->objectType == 'execution') + { + $execution = $this->dao->select('id, project, grade, parent, status, deleted')->from(TABLE_EXECUTION)->where('id')->eq($action->objectID)->fetch(); + $this->loadModel('common')->syncExecutionByChild($execution); + } } /* Revert doclib when undelete product or project. */ diff --git a/module/admin/js/safe.js b/module/admin/js/safe.js index 294858376c..b001f4f730 100644 --- a/module/admin/js/safe.js +++ b/module/admin/js/safe.js @@ -2,3 +2,15 @@ $(function() { $("#mainHeader #navbar li[data-id='system']").addClass('active'); }) + +/** + * When changeWeask change. + * + * @param bool changeWeak + * @access public + * @return void + */ +function changeWeakChange(changeWeak) +{ + $('#mainContent .table td.notice').html(changeWeak == 1 ? adminLang.safe.noticeWeakMode : adminLang.safe.noticeMode); +} diff --git a/module/admin/lang/de.php b/module/admin/lang/de.php index 4911a17729..35be329946 100644 --- a/module/admin/lang/de.php +++ b/module/admin/lang/de.php @@ -75,6 +75,7 @@ $lang->admin->safe->checkWeak = 'Schwache Passwörter prüfen'; $lang->admin->safe->changeWeak = 'Ihr Passwort ist schwach. Bitte ändern.'; $lang->admin->safe->loginCaptcha = 'Login using CAPTCHA'; $lang->admin->safe->modifyPasswordFirstLogin = 'Passwort nach der ersten Anmeldung ändern'; +$lang->admin->safe->passwordStrengthWeak = 'The password strength is weaker than the system settings.'; $lang->admin->safe->modeList[0] = 'N/A'; $lang->admin->safe->modeList[1] = 'Medium'; diff --git a/module/admin/lang/en.php b/module/admin/lang/en.php index 1c8d55ebc2..1657fb2e33 100644 --- a/module/admin/lang/en.php +++ b/module/admin/lang/en.php @@ -75,6 +75,7 @@ $lang->admin->safe->checkWeak = 'Weak Password Scan'; $lang->admin->safe->changeWeak = 'Force to change weak password'; $lang->admin->safe->loginCaptcha = 'Login using CAPTCHA'; $lang->admin->safe->modifyPasswordFirstLogin = 'Force to change password after first login'; +$lang->admin->safe->passwordStrengthWeak = 'The password strength is weaker than the system settings.'; $lang->admin->safe->modeList[0] = 'I don\'t care.'; $lang->admin->safe->modeList[1] = 'Medium'; diff --git a/module/admin/lang/fr.php b/module/admin/lang/fr.php index 4bb1433680..f8370e4fee 100644 --- a/module/admin/lang/fr.php +++ b/module/admin/lang/fr.php @@ -75,6 +75,7 @@ $lang->admin->safe->checkWeak = 'Balayage des mots de passe faibl $lang->admin->safe->changeWeak = 'Forcer le changement des mots de passe faibles'; $lang->admin->safe->loginCaptcha = 'Login using CAPTCHA'; $lang->admin->safe->modifyPasswordFirstLogin = 'Forcer le changement du mot de passe après la première connexion'; +$lang->admin->safe->passwordStrengthWeak = 'Le mot de passe est moins fort que les paramètres du système.'; $lang->admin->safe->modeList[0] = "Contrôle Modéré"; $lang->admin->safe->modeList[1] = 'Contrôle Moyen'; diff --git a/module/admin/lang/zh-cn.php b/module/admin/lang/zh-cn.php index 51b9e2c510..2d5d8048c7 100644 --- a/module/admin/lang/zh-cn.php +++ b/module/admin/lang/zh-cn.php @@ -75,6 +75,7 @@ $lang->admin->safe->checkWeak = '弱口令扫描'; $lang->admin->safe->changeWeak = '修改弱口令密码'; $lang->admin->safe->loginCaptcha = '登录使用验证码'; $lang->admin->safe->modifyPasswordFirstLogin = '首次登录修改密码'; +$lang->admin->safe->passwordStrengthWeak = '密码强度小于系统设置'; $lang->admin->safe->modeList[0] = '不检查'; $lang->admin->safe->modeList[1] = '中'; diff --git a/module/admin/model.php b/module/admin/model.php index 1a6062e7f0..c6ec4bed40 100644 --- a/module/admin/model.php +++ b/module/admin/model.php @@ -234,13 +234,6 @@ class adminModel extends model { $weaks = array(); - /* Check weak password when login. */ - if($this->app->moduleName == 'user' and $this->app->methodName == 'login') - { - if(!isset($_POST['passwordStrength'])) return false; - if(isset($this->config->safe->mode) and $this->post->passwordStrength < $this->config->safe->mode) return true; - } - foreach(explode(',', $this->config->safe->weak) as $weak) { $weak = md5(trim($weak)); diff --git a/module/admin/view/safe.html.php b/module/admin/view/safe.html.php index ad335dd1d7..1524656a60 100644 --- a/module/admin/view/safe.html.php +++ b/module/admin/view/safe.html.php @@ -15,6 +15,7 @@ .icon-exclamation-sign.icon {color:#2667E3; margin-right: 8px;} .notice {color:#2667E3; margin-left: 12px;} +admin);?>